Xendit notifies your system change of status of your payout link via webhook. You need to provide an URL to receive webhook. Please specify your URL in Webhook Settings in Xendit Dashboard.
The Cross-Border Payout notification will be sent as POST request to the URL you set. Xendit attach x-callback-token header that you can validate against Verification Token in Webhook Settings to verify message authenticity.
Please response back with status 200 immediately. Xendit marks webhook event as failed if there is no response within 30s. When events failed, automatic retry will kick-off for the next 24h. Alternatively, you can resend any event in Webhook tab at anytime. You can also receive notification via email every 6h to check your webhook health.
Cross-Border Payout Webhook
{
"event": "remittance_payout.pending_compliance_assessment",
"id": "rpo_288250b4-124b-4be5-93a1-1cd50dd4ad02",
"created": "2024-12-13T07:51:10.832Z",
"updated": "2024-12-13T07:51:10.832Z",
"business_id": "665990ef233a8b8054549367",
"description": "This is a sample Cross-border Payout transaction",
"destination_amount": 1000000,
"destination_currency": "IDR",
"origin_amount": 60,
"origin_currency": "EUR",
"purpose_code": "OTHER",
"recipient_customer_id": "cust-b8476133-ec15-4f06-9dfb-562d8dca3f43",
"reference_id": "myref-1482928194",
"relationship": "CUSTOMER",
"sender_customer_id": "cust-1752fefb-358c-4043-a690-58036157d851",
"source_of_fund": "OTHER",
"status": "PENDING_COMPLIANCE_ASSESSMENT",
"metadata": {}
}
Type of the event:
remittance_payout.pending_compliance_assessment
- Request is considered medium or high risk, and is being reviewed by our compliance team. Our team will contact you via email for extra information for enhanced due diligence.remittance_payout.compliance_rejected
- Request is rejected for compliance reasons.remittance_payout.failed
- Payout failed. See possible reasons in Failed Reasons section.remittance_payout.succeeded
- Sender bank/channel has sent out the payoutremittance_payout.ready
- For cash payout only. Cash is ready for pick-up.remittance_payout.locked
- For cash payout only. Cash pick-up in progress.remittance_payout.expired
- For cash payout only. Cash payout has expired.
Only for event remittance_payout.ready
Code to be presented by the beneficiary for cash pick-up. Please share this with the beneficiary.
Xendit-generated unique payout link id in UUID format
Prefix: rpo_
Timestamp when the payout request was made (in ISO 8601 format)
Timezone UTC+0
Timestamp when the payout request was updated (in ISO 8601 format)
Timezone UTC+0
Your Xendit Business ID
A reference to uniquely identify the Payout.
ISO 4217 Currency Code.
Amount to be sent to the destination account.
- For
IDR
currency, number should be integer - For
PHP
currency, number can be up to 2 decimal places - For
VND
currency, number should be integer - For
MYR
currency, number can be up to 2 decimal places - For
THB
currency, number can be up to 2 decimal places
The Id of the sender customer (as returned by the Create Customer endpoint)
The following fields are required in the sender customer object: customer_type
and addresses
- For INDIVIDUAL
customer_type
, the following parameters are also required:given_names
,nationality
, anddate_of_birth
incustomer_type
.individual_detail
object - For BUSINESS
customer_type
, then the following parameters are also required:business_name
incustomer_type
.business_detail
object. - For
addresses
object, the following fields are also required:addresses
.country
,addresses
.city
,addresses
.street_line1
Reference: Customer Object
The Id of the recipient customer (as returned by the Create Customer endpoint)
The following fields are required in the sender customer object: customer_type
, addresses
, identity_accounts
, and one of phone_number
or mobile_number
- For INDIVIDUAL
customer_type
, the following parameters are also required:given_names
,nationality
, anddate_of_birth
incustomer_type
.individual_detail
object - For BUSINESS
customer_type
, then the following parameters are also required:business_name
incustomer_type
.business_detail
object. - For
addresses
object, the following fields are also required:addresses
.country
,addresses
.city
,addresses
.street_line1
- For
identity_accounts
object, the following fields are also required:type
,country
,company
(with the channel code value), andproperties
Reference: Customer Object
Status of the cross-border payout. Default is ACCEPTED.
ACCEPTED
- The payout request has been accepted and has not yet been sent on to a channel. A payout may remain in this status if the chosen channel is currently offline. Xendit will process this automatically when the channel comes back onlinePENDING_COMPLIANCE_ASSESSMENT
- Request is considered medium or high risk, and is being reviewed by our compliance team. Our team will contact you via email for extra information for enhanced due diligence.COMPLIANCE_REJECTED
- Request is rejected for compliance reasons.REQUESTED
- The payout has been sent to the channel. Funds have been sent to the channel for processing.READY
- For cash payout only. Cash is ready for pick-up.LOCKED
- For cash payout only. Cash pick-up in progress.EXPIRED
- For cash payout only. Cash payout has expired.FAILED
- Payout failed. See possible reasons in Failed Reasons section.SUCCEEDED
- Sender bank/channel has sent out the payoutCANCELLED
- Payout has been cancelled per your requestREFUNDED
- Only valid for SKN/RTGS and cash channel use case.
Description to send with the payout. The recipient may see this e.g. in their bank statement (if supported) or in email receipts we send on your behalf.
Source of fund
INVESTMENT
- Bonds, fixed deposits, preference shares, business ownership/equity or property ownershipPERSONAL_SAVINGS
- Funds kept in an account in a bank or a similar organizationBUSINESS_REVENUE
- Income from a business or a companyLEGACY
- Inherited money from a willBUSINESS_ARRANGEMENT
- Any understanding, procedure, course of dealing, or arrangement between a creditor and a sellerLOAN
- A sum of money that is borrowedSALARY
- A fixed regular payment made by an employerOTHER
- Other
Default: OTHER
ISO 4217 Currency Code.
The original amount as sent by the sender. This field will not be used for processing the payout, but is required for monitoring purposes.
Xendit will deduct your balance and process the payout in the destination amount and currency.
Purpose of the Cross-border Payout
SELF
- Transfer to own accountFAMILY
- Family MaintenanceEDUCATION
- Education-related student expensesMEDICAL
- Medical TreatmentHOTEL
- Hotel AccomodationTRAVEL
- TravelUTILITIES
- Utility BillsLOAN_REPAYMENT
- Repayment of LoansTAX_PAYMENT
- Tax PaymentRESIDENCE_PURCHASE
- Purchase of Residential PropertyRESIDENCE_RENT
- Payment of Property RentalINSURANCE
- InsuranceMUTUAL_FUND
- Mutual Fund InvestmentSHARES_INVESTMENT
- Investment in SharesDONATIONS
- DonationsADVERTISING
- Advertising & Public relations-related expensesROYALTY_FEES
- Royalty fees, trademark fees, patent fees, and copyright feesBROKER_FEES
- Fees for brokers, front end fee, commitment fee, guarantee fee and custodian feeADVISORS
- Fees for advisors, technical assistance, and academic purpose, including remuneration for specialistsOFFICE
- Representative office expensesCONSTRUCTION
- Construction costs / expensesSHIPMENT
- Transportation fees for goodsEXPORT
- For payment of exported goodsDELIVERY
- Delivery fees for goodsTRADES
- General Goods Trades - Offline tradeSALARY
- SalaryREFUND
- RefundOTHER
- Other
Default: OTHER
Relationship between sender and recipient
Required for PH_GCASH Default: OTHER
If the Payout failed, we include a failure code for more details on the failure.
INSUFFICIENT_BALANCE
- Client has insufficient balance for the payout amountINVALID_DESTINATION
- The recipient account does not exist/is invalid.REJECTED_BY_CHANNEL
- Payout failed due to an error from the destination channel. This is usually because of network issues associated with the destination bank or issues crediting funds into the destination bank account.TEMPORARY_TRANSFER_ERROR
- The channel networks are experiencing a temporary error.TRANSFER_ERROR
- We’ve encountered a fatal error while processing this payout. Normally, this means that certain API fields in your request are invalid.UNKNOWN_BANK_NETWORK_ERROR
- The bank has delivered an error they have not documented. By definition, this means the bank does not know the issue.DESTINATION_MAXIMUM_LIMIT
- The recipient is unable to receive the funds due to the payout amount exceeding the recipient’s ability to receive.
Key-value entries for your custom data. You can specify up to 50 keys, with key names up to 40 characters and values up to 500 characters. This is for your convenience. Xendit will not use this data for any processing.