Skip to main content

2.1 Create payout

Create payout

POST /api/v1/payouts

Creates a single payout on behalf of the merchant. Only one payout per request is allowed.

Shop routing: optionally specify shop_code in the request body. If shop_code is not provided, the operation is created in the merchant's default shop.

Headers

ParameterTypeRequiredDescription
X-API-KeystringYesAPI key.
X-TimestampstringYesRequest time (ISO-8601 or UNIX sec).
X-SignaturestringYesHMAC-SHA256(timestamp + body, secret).
Content-TypestringYesapplication/json.

Request body (JSON)

ParameterTypeRequiredDescription
external_idstringYesUnique payout identifier on the merchant side (idempotency).
amountnumberYesPayout amount (minimum greater than 0).
currencystring (3)YesISO currency code (RUB, USD, etc.).
card_numberstringYesRecipient card number (spaces allowed).
shop_codestringNoShop code. If not provided — default shop is used.
callback_urlstringNoURL for status change notifications (must be a valid URL).
merchant_user_idstringNoMerchant user identifier (for accounting).
merchant_user_ipstringNoUser IP (for accounting).
paymentDataobjectNoAdditional data per shop schema (holder, phone, bank, comment, etc.).

Additional fields (e.g. recipient name, phone, bank, comment) may be included in paymentData according to the shop configuration. Alternatively, some shops allow flat fields at the root for compatibility — check with support.

paymentData fields by direction (shop):

Example request

{
"external_id": "PAY-001",
"amount": 1000.00,
"currency": "BDT",
"shop_code": "shop-001",
"card_number": "4111111111111111",
"callback_url": "https://merchant.example.com/webhooks/payout",
"paymentData": {
....
}
}

Response 201 (Created)

A single created operation object is returned (not an array).

{
"id": 12345,
"status": "pending",
"external_id": "PAY-001",
"amount": 1000,
"currency": "BDT",
"shop_code": "shop-001",
"card_number": "4111111111111111",
"merchant_user_id": null,
"merchant_user_ip": null,
"callback_url": "https://merchant.example.com/webhooks/payout",
"paymentData": {},
"transaction_type": "payout",
"created_at": "2025-12-05T10:00:00.000000Z",
"updated_at": "2025-12-05T10:00:00.000000Z",
"finalization_date": null
}

When the same request is sent again with the same external_id and shop (idempotency), the API returns 200 and the existing operation object with "message": "Transaction already exists" (no new payout is created).

The same external_id may still be used for a payin in the same shop. Idempotency is scoped by transaction type and shop.

Errors

  • 422 — validation error: missing or invalid external_id, amount, currency, card_number; invalid callback_url; invalid paymentData; insufficient balance; limit exceeded; shop currency mismatch.