Webhook Event: payout.completed
(NGN to CNY)
Webhook payload when a payout is completed successfully.
{
"event": "payout.completed",
"data": {
"id": "79d3acd4-8562-90hj-xft6-xxxxxxxxxxxxx",
"remark": null,
"type": "SEND",
"state": "COMPLETED",
"quote": {
"id": "79d3acd4-8562-90hj-xft6-xxxxxxxxxxxxx",
"sourceCurrency": "NGN",
"sourceAmount": 30000,
"targetCurrency": "CNY",
"targetAmount": 136.15,
"rate": 220.3431138,
"fees": [
{
"paymentChannel": "WECHAT",
"amount": 5
}
]
},
"recipient": {
"name": "Zui len",
"firstName": "Zui",
"lastName": "len",
"relationship": "SELF",
"account": {
"sortCode": "",
"accountNumber": "8612343562723",
"branchCode": ""
},
"currency": "CNY",
"country": "CN",
"stored": false
},
"created": "2025-05-13T15:23:15.258847784",
"processed": "2025-05-13T15:23:16.258847784"
}
}
Payload Breakdown
Top-Level Fields
Field | Type | Description |
---|---|---|
event | string | Type of event (e.g., payout.completed ) |
id | string | Unique identifier for the transaction |
referenceNumber | string | Internal tracking reference |
remark | string/null | Optional comment |
type | string | Type of payout (SEND ) |
state | string | Transaction state |
created | timestamp | Time transaction was created |
processed | timestamp | Time transaction was processed |
quote
Object
Field | Type | Description |
---|---|---|
sourceCurrency | string | Currency sent (e.g., NGN ) |
sourceAmount | number | Amount sent |
targetCurrency | string | Currency received (e.g., CNY ) |
targetAmount | number | Amount received |
rate | number | Conversion rate |
fees[].paymentChannel | string | Payment provider used |
fees[].amount | number | Transaction fee charged |
recipient
Object
Field | Type | Description |
---|---|---|
name | string | Full name of the recipient |
firstName | string | First name of the recipient |
lastName | string | Last name of the recipient |
relationship | string | How the recipient is related to the sender (SELF , FAMILY , etc.) |
account.sortCode | string | Bank sort code (empty if not required by destination country) |
account.accountNumber | string | Recipient’s account number |
account.branchCode | string | Branch code (may be empty depending on the country) |
currency | string | Currency in which the recipient receives funds (e.g., CNY ) |
country | string | Recipient’s country code (e.g., CN for China) |
stored | boolean | Whether the recipient’s details were stored for future use |
payout.pending
OR payout.failed
This payload is sent when a payout request is created but still in progress (not yet completed or failed).
{
"event": "payout.pending",
"data": {
"id": "8b99b9d8-998a-48db-9102-xxxxxxxxxxxxx",
"referenceNumber": "RRT6CBX1NMGUJ",
"remark": null,
"type": "SEND",
"state": "PENDING",
"quote": {
"id": "68d2bae4-7365-42fc-bbc2-xxxxxxxxxxxxx",
"sourceCurrency": "NGN",
"sourceAmount": 3000,
"targetCurrency": "CNY",
"targetAmount": 13.62,
"rate": 220.3431138,
"fees": [
{
"paymentChannel": "WECHAT",
"amount": 5
}
]
},
"recipient": {
"name": "Zui len",
"firstName": "Zui",
"lastName": "len",
"relationship": "SELF",
"account": {
"sortCode": "",
"accountNumber": "8612343562723",
"branchCode": ""
},
"currency": "CNY",
"country": "CN",
"stored": false
},
"created": "2025-03-13T15:28:37.258847784",
"processed": "2025-03-13T15:28:37.258847784"
}
}
Payload structure and field definitions are the same as in payout.completed
.