Welcome to Xendit’s latest documentation. For legacy content, access the previous version here.

Cross-Border Payouts

Prev Next

Before taking your integration live, we recommend you to test your integration thoroughly in development mode. Use our Test Mode simulation to simulate various positive and negative scenarios and ensure the flows in your integration are handled correctly.

Note: We recommend using Postman collections for testing. Please see our postman integrations page for more details on how to set up your collections.

Before you start

Important Note

Simulation is only available in Test Mode. Ensure you are using a Development API Key to test.

  • Ensure that you have the right API Key for the currency you want to test

    • One currency = One dashboard account = One API key

    • If you want to payout to currency: PHP, then you must create a dashboard where country of operation: Philippines and create an API Key with Money Out Read and Write permission from that dashboard

    • If you would also like to payout to currency: IDR, then you must create another dashboard account where country of operation: Indonesia and similarly create an API Key using that dashboard account

Test Guideline

  • Test calling all Cross Border Payouts endpoints that you are implementing

  • Test as much simulation scenarios as possible according to your use case

  • Ensure your subscribed webhook events are received and handled in your integration

Simulation Scenarios

Call Create Cross Border Payouts API using any of the following test details to simulate the scenario you’re testing.

Positive Scenarios


Scenario

Criteria

Expected Result

Successful remittance to Indonesia Channel

First, create new customers representing the sender and recipient. Use the following values for the recipient customer:


Option 1

  • identity_accounts

    • company: ID_PANIN

    • properties:

      • account_holder_name: Maria Wenger

      • account_number: 818181


Option 2

  • identity_accounts

    • company: ID_OVO

    • properties:

      • account_holder_name: Ari Fernandes

      • account_number: 081234567890


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Successful remittance to Philippine Channel

First, create new customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: PH_BDO

    • properties

      • account_holder_name: Kal Stones

      • account_number: 828282


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Successful remittance to Singapore Channel

First, create new customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: SG_BOC

  • properties

    • account_holder_name: Ruth Langmore

    • account_number: 838383


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Successful remittance to Thailand Channel

First, create new customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: TH_SCB

  • properties

    • account_holder_name: Justin Morph

    • account_number: 267267


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Remittance has been assessed to be medium or high risk and requires compliance verification. Remittance is eventually approved by compliance and succeeds

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


Option 1

  • identity_accounts

    • company: ID_MANDIRI

    • properties

      • account_holder_name: Evan Dimas

      • account_number: 808080


Option 2

  • identity_accounts

    • company: Anything

    • properties

      • account_holder_name: Anything

      • account_number: 87778798


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “PENDING_COMPLIANCE_ASSESSMENT”


Then, will send a second callback to your callback URL with status: “SUCCEEDED”

Remittance transaction is stuck in compliance assessment

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


Option 1

  • identity_accounts

    • company: ID_MANDIRI

    • properties

      • account_holder_name: Shawn

      • account_number: 898989


Option 2

  • identity_accounts

    • company: Anything

    • properties

      • account_holder_name: Anything

      • account_number: 4455445544  

Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “PENDING_COMPLIANCE_ASSESSMENT”

Successful remittance to Indonesia Cash Channel

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_ALFAMART

    • properties

      • payment_code: 898900


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with disbursement_code and status: “READY”


Then,will send a callback to your callback URL with status: “LOCKED”


Then,will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Simulate an online remittance cancellation flow

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_MANDIRI

    • properties

      • account_holder_name: Gustafo Vring

      • account_number: 10101010


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Remittance status will remain on ACCEPTED.

You can then try a Cancel Remittance  request

Cash remittance ready to pick up

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_ALFAMART

    • properties

      • payment_code: 898911


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with disbursement_code and status: “READY”


Remittance status will remain on READY.



Simulate a cash remittance cancellation flow

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_ALFAMART

    • properties

      • payment_code: 898911


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Remittance status will remain on READY.

You can then try a Cancel Remittance  request

Successful remittance to Singapore Channel

First, create new customers representing the sender and recipient. Use the following values for the recipient customer:


Option 1

  • identity_accounts

    • company: SG_DBS

    • properties:

      • account_number: 818181

Will complete remittance and send a callback to your callback URL with status: “SUCCEEDED”

Negative scenarios


Scenario

Criteria

Expected Result

Remittance has been assessed to be medium or high risk and requires compliance verification. Remittance is eventually rejected by compliance

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


Option 1

  • identity_accounts

    • company: ID_MANDIRI

    • properties

      • account_holder_name: Cynthia Rodriguez

      • account_number: 909090

Option 2

  • identity_accounts

    • company: Anything

    • properties

      • account_holder_name: Anything

      • account_number: 987654321


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “PENDING_COMPLIANCE_ASSESSMENT”


Then, we will send a second callback to your callback URL with status: “COMPLIANCE_REJECTED


Destination account does not exist/is invalid.

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_MANDIRI

    • properties

      • account_holder_name: Teo Alcantara

      • account_number: 4567890


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “FAILED”

and failure_code: “INVALID_DESTINATION”

Transaction has been rejected by the destination channel without a clear error reason

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_CIMB

    • properties

      • account_holder_name: Ichwan De Bruyne

      • account_number: 8787878


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “FAILED”

and failure_code: "REJECTED_BY_CHANNEL"

Transaction failed because of a known temporary issue

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: PH_OMNI

    • properties

      • account_holder_name: Ayrton Da Silva

      • account_number: 868686


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “FAILED”

and failure_code: “TEMPORARY_TRANSFER_ERROR”

Insufficient Balance

First, create customers representing the sender and recipient (which field detail is different with above specifications)


Then, Create remittance payout request with amount greater than the balance you have

Will send a callback to your callback URL with status: “FAILED”

and failure_code: “INSUFFICIENT_BALANCE”

Cash remittance expired

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: ID_ALFAMART

    • properties

      • payment_code: 898922


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with disbursement_code and status: “READY”


Then,will send a callback to your callback URL with status: “EXPIRED”

Singapore bank networks have rejected the transaction due to maintenance or unknown reason

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • channel_code: SG_DBS

    • properties

      • account_number: 999999

Payout will be FAILED with failure_code = REJECTED_BY_CHANNEL

Destination account does not exist/is invalid for Singapore channel

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: SG_BOC

      • properties

      • account_holder_name:  Darlene Snell

      • account_number: 733810


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “FAILED”

and failure_code: “INVALID_DESTINATION”

Destination account does not exist/is invalid for Thailand channel

First, create customers representing the sender and recipient. Use the following values for the recipient customer:


  • identity_accounts

    • company: TH_SCB

  • properties

    • account_holder_name: Harry Johnson

    • account_number: 588372


Then create a Remittance using required params (refer to Create Remittance Payout) and the above sender and recipient customer ids

Will send a callback to your callback URL with status: “FAILED”

and failure_code: “INVALID_DESTINATION”