PixelWave

PayOut

Create a payout to a customer

POST /host2host/payout

Creates a PayOut operation. The merchant pays to the customer.

Authentication

Authorization: Bearer YOUR_JWT_TOKEN

Request Body

FieldTypeRequiredDescription
paymentMethodstringYesPayment method code (see Payment Methods)
idTransactionMerchantstringYesYour unique transaction identifier
amountdecimalYesPayout amount in the operation currency
numberstringYesRecipient's card number, phone, or account number
bankNamestringYesRecipient's bank. For sbp — the name or bankCode from GET /masterdata/bank/list. For other methods — a free-form bank name (see below)
nameMediatorstringNoRecipient's full name
clientIDstringYesUnique customer identifier in your system
clientIPstringYesCustomer's IP address
clientDateCreateddatetimeYesCustomer registration date in your system
integrationMerhcnatDataobjectNoWebhook configuration
integrationMerhcnatData.webHookstringNoWebhook URL for this operation

Identifying the bank

How bankName is handled depends on paymentMethod.

sbp — validated against the bank classifier. Three interchangeable forms are accepted, resolved in this order:

  1. The bank's name — e.g. "Сбербанк".
  2. The bank's bankCode — the SBP (NSPK) member id, e.g. "100000000111". This is the value of schema in qr.nspk.ru/proxyapp/c2bmembers.json without the bank prefix; the bank100000000111 form is accepted as well.
  3. A known alias — a former, abbreviated or transliterated name (e.g. "sberbank", "Тинькофф").

Matching on name is case-sensitive; aliases and bankCode are not. Whichever form you send, the platform normalizes it to the canonical name before routing the payout, so the provider always receives the same value. An unrecognized bank returns Not found bankName and no operation is created.

Sending bankCode is the more robust option: display names get renamed over time, member ids do not.

All other methods — passed through as-is. bankName is not validated against the classifier and reaches the provider verbatim. This is what makes payouts to banks outside the SBP registry possible ("Kapital Bank", "Kaspi Bank", "Axis Bank", "Leobank" and so on). Two consequences:

  • A typo will not be rejected — it is forwarded to the provider, which may decline the payout.
  • Commission tiering only recognizes the literal values "Сбербанк" and "sber". For a non-sbp payout to Sberbank, send one of those rather than the numeric bankCode, otherwise the interbank rate applies.

Example: Card PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "toCard",
    "idTransactionMerchant": "payout-12345",
    "amount": 3000,
    "number": "4276123456789012",
    "bankName": "Sberbank",
    "nameMediator": "Ivanov Ivan",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Example: SBP PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "sbp",
    "idTransactionMerchant": "payout-sbp-001",
    "amount": 3000,
    "number": "+79991234567",
    "bankName": "100000000111",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Here bankName is Sberbank's SBP member id. "Сбербанк" and "Sberbank" address the same bank and are equally valid.

Example: AZN Card PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "azn_c2c",
    "idTransactionMerchant": "payout-azn-001",
    "amount": 100,
    "number": "4169738812345678",
    "bankName": "Kapital Bank",
    "nameMediator": "Aliyev Eldar",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Example: Mobile PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "mobile",
    "idTransactionMerchant": "payout-mob-001",
    "amount": 1000,
    "number": "+79991234567",
    "bankName": "Sberbank",
    "phoneNumber": "+79991234567",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Example: KZT Card PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "kzt_c2c",
    "idTransactionMerchant": "payout-kzt-001",
    "amount": 5000,
    "number": "4400430123426873",
    "bankName": "Kaspi Bank",
    "nameMediator": "Nurlanov Erlan",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Example: KZT Mobile PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "kzt_mobile",
    "idTransactionMerchant": "payout-kzt-002",
    "amount": 5000,
    "number": "+77001234567",
    "bankName": "Kaspi Bank",
    "phoneNumber": "+77001234567",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Example: ARS CBU PayOut

curl -X POST 'https://api.admin-pixelwave.com/host2host/payout' \
  -H 'Authorization: Bearer YOUR_JWT_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
    "paymentMethod": "ars_cbu",
    "idTransactionMerchant": "payout-ars-001",
    "amount": 10000,
    "number": "4530000800012792304206",
    "bankName": "Banco Nacion",
    "clientID": "user-67890",
    "clientIP": "192.168.1.100",
    "clientDateCreated": "2025-01-15T10:30:00Z"
  }'

Success Response

{
  "result": {
    "status": "success",
    "x-request-id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "codeError": "none",
    "codeErrorExt": "none",
    "message": ""
  },
  "data": {
    "id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
    "dateAdded": "2025-01-15T10:30:01Z",
    "dateUpdated": "2025-01-15T10:30:01Z",
    "typeOperation": "payOut",
    "status": "in_progress",
    "idTransactionMerchant": "payout-12345",
    "amountInitial": 3000,
    "amountRandomized": 0,
    "amount": 3000,
    "amountComission": 90,
    "currency": "RUB",
    "amountInCurrencyBalance": 37.50,
    "amountComissionInCurrencyBalance": 1.125,
    "exchangeRate": 80.00
  },
  "totalNumberRecords": 0
}

Response Fields

FieldTypeDescription
iduuidPlatform operation ID
statusstringin_progress — payout is being processed
amountdecimalPayout amount
amountComissiondecimalCommission charged
currencystringOperation currency
amountInCurrencyBalancedecimalAmount deducted from your balance (USDT)
exchangeRatedecimalExchange rate used

PayOut responses do not include paymentDetailsData — the recipient details are the ones you provided in the request.

Error Responses

Error CodeDescription
invalidRequestParametersMissing or invalid fields
duplicateIdentifieridTransactionMerchant already exists
noSuitableTariffForRequestNo tariff for this method/amount
notEnoughMoneyOnBalanceInsufficient merchant balance
noPaymentDetailsAvailableNo providers available

Important Notes

  • Your balance must cover the payout amount plus commission
  • For SBP payouts, number must be a phone number in format +7XXXXXXXXXX
  • For card payouts, number must be a valid card number (16 digits)
  • For mobile payouts, number and bankName are still required. Set number to the phone number and provide the bank name. Additionally pass phoneNumber field
  • For KZT mobile payouts, same as above — number, bankName, and phoneNumber are all required
  • For ARS CBU payouts, number must be a 22-digit CBU account number
  • The bankName affects commission calculation — see Identifying the bank
  • Final status comes via webhook

On this page