Skip to content

Payin API (CHECKOUT) ​

Overview ​

The payin API creates a payin order to receive payments. Merchants can initiate payment requests to users, supporting the payment checkout method. Merchants can use this API to initiate payment requests to users, with the payment method being CVU transfer. Users fill in their identification information to place an order and call this API. They obtain the CVU account through the link returned by the API, transfer funds to that CVU, and after receiving the payment, the system will automatically match and complete the order using the identification number, amount, and expiration time.

Two Payin Modes

Argentina payin supports two modes that are mutually exclusive and cannot coexist. The merchant must confirm which mode to use before onboarding; each merchant supports only one mode. If you need both modes, please contact your account manager to open two merchants:

  • Order Mode (this API): the merchant creates an order first; the user obtains a shared CVU via the checkout and transfers funds; the platform matches by ID number + amount + expiry;
  • Independent CVU Mode (VA_DIRECT): the merchant owns an exclusively bound CVU; users transfer directly; the platform auto-creates the order and pushes an inbound details callback. This mode does not require calling this API. See Independent CVU Payin Callback.

API Info ​

  • Endpoint: POST /api/ar/payin
  • Method: POST
  • Content-Type: application/json

Request Headers ​

All API requests require the following headers, see API Signature:

HeaderTypeRequiredDescription
Content-TypestringYapplication/json, fixed
MerchantIdstringYMerchant ID provided by Veloraya
TimestampstringYCurrent timestamp (ms), anti-replay
NoncestringYRandom string, unique per request, anti-replay
SignaturestringYRequest signature (RSA), Base64 encoded

Request Parameters ​

ParameterTypeRequiredDescription
merchantOrderIdstringYMerchant order ID, unique
amountBigDecimalYOrder amount, checked against merchant risk config
currencystringYCurrency code, fixed ARS
expireSecondsIntegerNCheckout expiry (seconds), 300s~86400s, default 24h
payinMethodstringYPayment method, see enum
redirectUrlstringNRedirect URL after successful payment
payerEmailstringYPayer email
payerIdTypestringYPayer ID type, fixed DNI
payerIdCardstringYPayer ID number,this field must real.
payerFirstNamestringNPayer first name
payerLastNamestringNPayer last name
payerFullNamestringNPayer full name (either this or firstName/lastName required)
payerMobilestringYPayer mobile
needSecondaryConfirmationbooleanNDoes this require secondary confirmation of user information, default true

Payment method enum ​

ValueDescription
CHECKOUTPayment checkout

ID type enum ​

ValueDescription
DNIArgentina national ID

Request Example ​

json
{
  "merchantOrderId": "ORDER46791673",
  "amount": 300,
  "currency": "ARS",
  "expireSeconds": 3600,
  "payinMethod": "CHECKOUT"
}

Response Format ​

FieldTypeDescription
codeint200 success, non-200 failure
msgstringResponse message
dataobjectResponse data, order info on success

Response Parameters (data) ​

FieldTypeDescription
orderIdstringPlatform order ID
merchantOrderIdstringMerchant order ID
amountBigDecimalOrder amount
feeBigDecimalTransaction fee
payDeskUrlstringCheckout URL
orderStatusstringOrder status
vaNumberstringCVU account used for receiving payments. This parameter is returned when the request parameter needSecondaryConfirmation is false.
vaNamestringCVU account name used for receiving payments. This parameter is returned when the request parameter needSecondaryConfirmation is false.
resultCodestringError code (on failure)
resultDescstringError description (on failure)

Order status enum ​

ValueDescription
PENDINGPending
FAILEDFailed

Response Example ​

Success ​

json
{
  "code": 200,
  "msg": "SUCCESS",
  "data": {
    "orderId": "PAYIN48973464",
    "merchantOrderId": "ORDER46791673",
    "amount": 30000,
    "fee": 300.00,
    "payDeskUrl": "https://example.com/?orderNo=PAYIN48973464",
    "resultCode": null,
    "resultDesc": null,
    "orderStatus": "PENDING"
  }
}

Error Codes ​

See Error Codes for the full list.

Business Rules ​

  1. Order ID uniqueness: merchant order IDs must be unique under the same merchant
  2. Amount limit: checked against merchant risk config
  3. Expiry: the checkout expires after expireSeconds, default 3600s
  4. Async notification: order status changes are notified via Payin Callback (merchant must configure notify URL)
  5. Risk control: orders are risk-checked; failures return an error

Notes ​

  1. Headers: all required headers must be passed, see API Signature
  2. Signature: all requests must include a valid signature
  3. Async notification: order status changes are notified asynchronously
  4. Idempotency: duplicate requests with the same merchant order ID return the same result and do not create duplicate orders
  5. Timeout: set a reasonable request timeout
  6. Logging: log all requests and responses

Released under the MIT License.