Skip to content

PayOut - P2P - H2H#

This page describes the methods for working with P2P PayOut orders using the H2H flow.

Create Order#

Request#

URL: POST https://<host>/api/v3/merchant/orders/payout/p2p/h2h

Headers:

Request body:

Field Type Required Description
methodID integer yes Order method
amount float64 yes Order amount in fiat, rounded to 2 decimal places
recipientNumber string no* Requisite value for the transfer
recipientName string no Requisite holder name for the transfer
bankCode string no Requisite bank code for the transfer
clientID string no Client identifier
clientMetadata object no Client data, see "General Information"
merchantOrderID string no Merchant order identifier; unique within the merchant
trafficType string no Traffic type
callbackURL string no URL for sending callbacks

* - requiredness depends on the transfer method; confirm during integration.

cURL Example#

curl -X 'POST' \
  'https://<host>/api/v3/merchant/orders/payout/p2p/h2h' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <YOUR-API-KEY>' \
  -d '{
  "methodID": 5,
  "amount": 100.12,
  "recipientNumber": "7777777777777777",
  "recipientName": "Ivan Ivanov",
  "bankCode": "SomeBank",
  "clientID": "ID1234",
  "merchantOrderID": "316b6280-d6e2-4627-bacd-fcda062438bc",
  "trafficType": "mixed",
  "callbackURL": "http://example.com/webhook"
}'

Response#

HTTP Status Code: 200

The response body is the OrderOut order model (see "General Information"):

{
  "id": "46d9ff65-505d-4148-8172-6b8c0a09ded8",
  "createdAt": "2026-08-31T06:37:45.776331Z",
  "updatedAt": "2026-08-31T06:37:45.776331Z",
  "type": "PayOut",
  "direction": "PayOut",
  "status": "created",
  "merchantOrderID": "316b6280-d6e2-4627-bacd-fcda062438bc",
  "clientID": "ID1234",
  "methodID": 5,
  "currencyCode": "KRW",
  "amount": 100.12,
  "exchangeRate": 1600.1636,
  "trafficType": "mixed"
}

Possible business failures (400/409) - see the errorCode table on the "Request Authorization" page. Not enough USDT on the balance - 400 with errorCode = not_enough_money_on_balance; the order is not created.

The frozen part of the balance (frozenBalanceUSDT) is tied to unfinished PayOut orders; see the "Balance" page.

Callback Conditions#

The webhook is sent when the order transitions to one of the trigger statuses. The full list is on the "Callbacks" page.