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:
Content-Type: application/jsonAuthorization: Bearer <YOUR-API-KEY>. See the "Request Authorization" page.
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.