# Xendit test cards

> Test card numbers and other details for Xendit's sandbox, and the result each one gives.

Use these details to try payments in a Xendit sandbox (test) account. They work only in the sandbox: never use them in live, and never put real card or bank details into a sandbox.

Connect Xendit using API keys created in its Test Mode (see [Connecting Xendit](/payment-providers/xendit-connect/)). Xendit says the test cards that apply can vary with your country and live connection, so ask Xendit's support which ones to use for your account. Some results are set by the payment amount.

:::note[Where these details come from]
These are Xendit's test details, not ours. They were copied from Xendit's [Simulate card scenarios (test cards)](https://docs.xendit.co/docs/cards-simulate-card-scenarios) and [Simulate error scenarios](https://docs.xendit.co/docs/simulate-error-scenarios) pages on 19 October 2026, and were correct on that date as far as those pages show. Xendit can change or withdraw them at any time, and we can't confirm that they work. Check Xendit's pages for the current details, and ask Xendit if one doesn't behave as described.
:::

## How to choose a test result

- Connect Xendit using API keys created in its Test Mode ([Simulate error scenarios](https://docs.xendit.co/docs/simulate-error-scenarios)).
- The card number sets the 3D Secure flow. With the simulator cards, you choose the 3D Secure result on Xendit's simulator page ([Simulate card scenarios](https://docs.xendit.co/docs/cards-simulate-card-scenarios)). We ask Xendit to skip 3D Secure for MOTO (staff-entered) payments, so test 3D Secure with online payments.
- The amount sets the decline, except in Vietnam, which has its own amounts ([Simulate card scenarios](https://docs.xendit.co/docs/cards-simulate-card-scenarios)). We send the amount to Xendit as entered, not in minor units, so enter the trigger amount exactly as shown, for example `10051`.
- The test cards can vary with the country ([Simulate card scenarios](https://docs.xendit.co/docs/cards-simulate-card-scenarios)). We send Xendit the customer's billing country (or, failing that, the customer's own country), or the **Default Country** set in the Xendit connection when neither is one Xendit supports.

## Cards

Use any CVC and any future expiry date. American Express cards need a 4-digit CVC.

### Successful payments

| Card | Number | Notes |
| --- | --- | --- |
| Visa | `4000 0000 0000 1000` | 3D Secure frictionless, authenticated |
| Visa | `4440 0000 4220 0014` | 3D Secure frictionless, authenticated |
| Mastercard | `5200 0000 0000 1005` | 3D Secure frictionless, authenticated |
| Mastercard | `5123 4567 8901 2346` | 3D Secure frictionless, authenticated |
| American Express | `3782 822463 10005` | 3D Secure frictionless, authenticated |
| American Express | `3400 000000 02708` | 3D Secure frictionless, authenticated |

### Declines and errors

Use one of these amounts to get the result. Xendit says they work in every country except Vietnam:

| Number or trigger | Result |
| --- | --- |
| Amount `10051` | Declined: expired card (EXPIRED_CARD) |
| Amount `10052` | Declined: suspected fraud (SUSPECTED_FRAUDULENT) |
| Amount `10053` | Declined by the processor (DECLINED_BY_PROCESSOR) |
| Amount `10054` | Declined: insufficient funds (INSUFFICIENT_BALANCE) |
| Amount `10055` | Declined: stolen card (STOLEN_CARD) |
| Amount `10056` | Declined: inactive or unauthorised card (INACTIVE_OR_UNAUTHORIZED_CARD) |
| Amount `10057` | Processor error (PROCESSOR_ERROR) |
| Amount `10058` | Declined: invalid CVC (INVALID_CVV) |
| Amount `10059` | Declined by the issuer (DECLINED_BY_ISSUER) |

Xendit also lists these amounts:

| Number or trigger | Result |
| --- | --- |
| Amount `10.05` | Declined by the issuer: do not honour (05) |
| Amount `10.14` | Declined: invalid card number (14) |
| Amount `10.30` | Processor error: format error (30) |
| Amount `10.51` | Declined: insufficient funds (51) |
| Amount `10.65` | Declined by the issuer: exceeds withdrawal limit (65). Visa only |

In Vietnam, use these amounts instead:

| Number or trigger | Result |
| --- | --- |
| VND `405400` | Declined: expired card (EXPIRED_CARD) |
| VND `405900` | Declined: suspected fraud (SUSPECTED_FRAUDULENT) |
| VND `405100` | Declined: insufficient funds (INSUFFICIENT_BALANCE) |
| VND `400700` | Declined: stolen card (STOLEN_CARD) |
| VND `405500` | Declined: inactive or unauthorised card (INACTIVE_OR_UNAUTHORIZED_CARD) |
| VND `402500` | Processor error (PROCESSOR_ERROR) |
| VND `403900` | Declined: CVC doesn't match (INVALID_CVV) |
| VND `400300` | Declined by the issuer (DECLINED_BY_ISSUER) |

### 3D Secure

The frictionless cards are under [Successful payments](#successful-payments). These cards are challenged:

| Number | Result |
| --- | --- |
| Visa `4000 0000 0000 2503` | Challenge, then approved if the one-time passcode is correct |
| Mastercard `5200 0000 0000 2151` | Challenge, then authenticated if the one-time passcode is correct |
| Visa `4200 3500 0000 0801` | Challenge, then authenticated if the one-time passcode is correct. Frictionless for amounts under THB 20 |
| Mastercard `5413 5300 0000 0501` | Challenge, then authenticated if the one-time passcode is correct. Frictionless for amounts under THB 20 |
| JCB `3337 0000 0000 0008` | Challenge |
| American Express `3400 000000 02534` | Challenge |
| Visa `4440 0000 0990 0010` | Challenge: choose the result on the simulator page (below) |
| Mastercard `5123 4500 0000 0008` | Challenge: choose the result on the simulator page (below) |

On the challenge simulator page, choose one of these options:

| Value | Result |
| --- | --- |
| AUTHENTICATED | Authenticated |
| UNAUTHENTICATED | Failed |
| CANCELLED_AUTHENTICATION | Failed: cancelled |
| AUTHENTICATION_NOT_AVAILABLE | Failed: authentication not available |
| AUTHENTICATION_REJECTED | Failed: rejected |
| AUTHENTICATION_SERVER_ERROR | Failed: server error |
| API_GW_ASM_POLICY_ERROR | Failed |