--- title: "Payouts" slug: "test-scenarios-payouts" updated: 2026-07-08T15:38:35Z published: 2026-07-08T15:38:35Z canonical: "docs.xendit.co/test-scenarios-payouts" --- > ## Documentation Index > Fetch the complete documentation index at: https://docs.xendit.co/llms.txt > Use this file to discover all available pages before exploring further. # Payouts 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. ## Before you start > [!WARNING] > **Important Note** > > Simulation is only available in Test Mode. Ensure you are using a Development API Key to test. - [**Create an API Key**](/docs/create-an-api-key-1) **in your Xendit Dashboard**. You will need the API Key to make API calls. - [**Set up your webhook URL**](https://docs.xendit.co/docs/payouts-set-up-webhooks). Configure this to receive real-time notifications on payout status changes. - **Check** [**Payout Coverage**](https://docs.xendit.co/docs/overview-payouts-coverage) **for channel-specific information**. You need to know what information needs to be collected to start sending payouts. ## Test Guideline - Test calling all Payout 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 Payouts API` using any of the following test details to simulate the scenario you’re testing. ### Positive Scenarios | **Scenario** | **Criteria** | **Expected Result** | | --- | --- | --- | | Successful Payout | Send valid Create Payout request, with any `account_holder_name` and `account_number` | Payout will be `SUCCEEDED` | ### Negative Scenarios | **Scenario** | **Criteria** | **Expected Result** | | --- | --- | --- | | Failed Payout due to request containing duplicate idempotency key but same payload | Try a payout with a duplicate idempotency key and the exact same payload. | Will return the same payout as the original request. | | Failed Payout due to request containing duplicate idempotency key but different payload | Try a payout with an active duplicate idempotency key and a different payload. | `DUPLICATE_ERROR` | | Failed Payout due to | account_number: 98018521 | Payout will be `FAILED` with `failure_code = TRANSFER_ERROR` | | Failed Payout due to switching network experiencing downtime | account_number: 123456 | Payout will be `FAILED` with `failure_code = TEMPORARY_TRANSFER_ERROR` | | Failed Payout due to rejection from recipient channel | account_number: 999999 | Payout will be `FAILED` with `failure_code = REJECTED_BY_CHANNEL` | | Failed Payout due to invalid destination account | account_number: 121212 | Payout will be `FAILED` with `failure_code = INVALID_DESTINATION` | | Failed Payout due to sanction list screening on Sender | account_holder_name: Walter Green account_number: 72019761 | Payout will be FAILED with failure_code = `SLS_SENDER` | | Failed Payout due to sanction list screening on Recipient | account_holder_name: Walter White account_number: 79018761 | Payout will be FAILED with failure_code = `SLS_RECIPIENT` | | Failed Payout due to insufficient balance | Initiate a payout greater than the balance you have. | Payout will be `FAILED` with `failure_code = INSUFFICIENT_BALANCE` | | Failed Payout due to forbidden request | Try an API key without the right permissions to perform the request. | `REQUEST_FORBIDDEN_ERROR` |