# Braintree test cards

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

Use these details to try payments in a Braintree 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.

The Braintree sandbox is a separate account from your live one, with its own login, merchant ID and API keys: connect it as described in [Connecting Braintree](/payment-providers/braintree-connect/), using the sandbox keys. In the sandbox, the payment amount decides whether a payment is approved or declined.

:::note[Where these details come from]
These are Braintree's test details, not ours. They were copied from Braintree's [Testing reference](https://developer.paypal.com/braintree/docs/reference/general/testing/php/), [3D Secure testing](https://developer.paypal.com/braintree/docs/guides/3d-secure/testing/ruby/), [Authorization responses](https://developer.paypal.com/braintree/docs/reference/general/processor-responses/authorization-responses), [ACH Direct Debit testing and go live](https://developer.paypal.com/braintree/docs/guides/ach/testing-go-live/) and [PayPal testing and go live](https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live/javascript/v3/) pages on 19 October 2026, and were correct on that date as far as those pages show. Braintree can change or withdraw them at any time, and we can't confirm that they work. Check Braintree's pages for the current details, and ask Braintree if one doesn't behave as described.
:::

## How to choose a test result

- **Cards:** the [amount](https://developer.paypal.com/braintree/docs/reference/general/testing/php/) sets the result, not the card number. Type it in the checkout as shown below, for example `2001.00` for a decline for insufficient funds.
- **Saving a card:** we ask Braintree to verify a card when it is saved, so for a saved card the [card number](https://developer.paypal.com/braintree/docs/reference/general/testing/php/) sets the verification result.
- **Address and CVC checks:** these only affect the result if address (AVS) and CVC rules are switched on in your Braintree sandbox. Switch on **Require address (AVS)** on the Braintree connection here so that the checkout asks for the billing postcode, which sets the [address check result](https://developer.paypal.com/braintree/docs/reference/general/testing/php/). The checkout always asks for the CVC.
- **3D Secure:** switch on **Enable 3D Secure** on the Braintree connection here. The [card number](https://developer.paypal.com/braintree/docs/guides/3d-secure/testing/ruby/) then sets the 3D Secure result.
- **ACH:** switch on **Enable ACH** on the Braintree connection here (USD only). The [account number](https://developer.paypal.com/braintree/docs/guides/ach/testing-go-live/) sets the verification result and the amount sets the payment result.
- **PayPal:** switch on **Enable PayPal** on the Braintree connection here. In Braintree's default mocked PayPal testing, the [amount](https://developer.paypal.com/braintree/docs/guides/paypal/testing-go-live/javascript/v3/) sets the result.

## Cards

The sandbox only accepts Braintree's test card numbers. A test card number doesn't make a payment succeed on its own: the amount decides that, and so do the address and CVC checks if you have address and CVC rules switched on in the sandbox.

### Successful payments

Any amount from `0.01` to `1999.99` is approved.

| Card | Number | Notes |
| --- | --- | --- |
| Visa | `4111 1111 1111 1111` | |
| Mastercard | `5555 5555 5555 4444` | |
| American Express | `3782 822463 10005` | |
| Discover | `6011 0009 9130 0009` | |
| JCB | `3530 1113 3330 0000` | |
| Diners Club | `3625 960000 0004` | Processed as Discover |
| Maestro | `6304 0000 0000 0000` | |

Braintree lists more test numbers on its [Testing reference](https://developer.paypal.com/braintree/docs/reference/general/testing/php/) page.

### Declines and errors

Use a test card above with one of these amounts. Any amount from `2000.00` to `2999.99` is declined with a response code equal to the amount.

| Number or trigger | Result |
| --- | --- |
| Amount `2000.00` | Declined: do not honour (2000) |
| Amount `2001.00` | Declined: insufficient funds (2001) |
| Amount `2004.00` | Declined: expired card (2004) |
| Amount `2010.00` | Declined: card issuer declined CVC (2010) |
| Amount `2014.00` | Declined: fraud suspected (2014) |
| Amount `2099.00` | Declined: cardholder authentication required (2099) |
| Amount `3000.00` to `3000.99` | Failed: processor network unavailable, try again (3000) |
| Amount `5001.00` | Rejected by Braintree: application incomplete |

When a card is saved and Braintree verifies it, the card number decides the verification result, not the amount:

| Number or trigger | Result |
| --- | --- |
| `4000 1111 1111 1115` (Visa) | Verification declined by the processor |
| `5105 1051 0510 5100` (Mastercard) | Verification declined by the processor |
| `3787 344936 71000` (American Express) | Verification declined by the processor |
| `6011 0009 9013 9424` (Discover) | Verification declined by the processor |
| `3566 0020 2036 0505` (JCB) | Verification failed (3000) |

### 3D Secure

These apply when **Enable 3D Secure** is switched on in the Braintree connection settings. Use expiry month `01` and a year three years after the current one (for example `01/2029` in 2026).

| Number | Result |
| --- | --- |
| `4000 0000 0000 2701` (Visa)<br />`5200 0000 0000 2235` (Mastercard) | Authenticated without a challenge |
| `4000 0000 0000 2925` (Visa)<br />`5200 0000 0000 2276` (Mastercard) | Authentication failed without a challenge |
| `4000 0000 0000 2503` (Visa)<br />`5200 0000 0000 2151` (Mastercard) | Challenge, then authenticated |
| `4000 0000 0000 2370` (Visa)<br />`5200 0000 0000 2490` (Mastercard) | Challenge, then authentication failed |
| `4000 0000 0000 2446` (Visa)<br />`5200 0000 0000 2037` (Mastercard) | Error looking up the card for 3D Secure |

Braintree lists American Express and Discover cards and more scenarios on its [3D Secure testing](https://developer.paypal.com/braintree/docs/guides/3d-secure/testing/ruby/) page.

### Address and CVC checks

These only affect the result if you have address (AVS) and CVC rules switched on in the sandbox.

| Value | Result |
| --- | --- |
| Billing postcode `20000` | Postcode doesn't match (N) |
| Billing postcode `20001` | Postcode not verified (U) |
| Billing postcode `30000` | Address check system error (E) |
| Billing postcode `30001` | Card issuer doesn't support address checks (S) |
| Any other billing postcode | Postcode matches (M) |
| CVC `200` (American Express `2000`) | CVC doesn't match (N) |
| CVC `201` (American Express `2011`) | CVC not verified (U) |
| CVC `301` (American Express `3011`) | Card issuer doesn't take part (S) |
| Any other CVC | CVC matches (M) |

## ACH (US bank accounts)

Use any real 9-digit US routing number, for example `011000015`. Before a bank account can be charged, Braintree verifies it. We ask Braintree for a network check, so the account number decides the verification result:

| Routing number | Account number | Result |
| --- | --- | --- |
| `011000015` | `1000000000` | Verified (1000) |
| `011000015` | `1000000001` | Verified, with risk (1003) |
| `011000015` | `1000000002` | Failed: processor network unavailable, try again (3000) |
| `011000015` | `1000000004` | Declined (2046) |
| `011000015` | `1000000005` | Failed: invalid routing number (2061) |
| `011000015` | `1000000008` | Failed: invalid account number (2061) |
| `011000015` | Any other number | Declined by the processor (2038) |

Once the account is verified, the amount decides the payment result:

| Amount | Result |
| --- | --- |
| `33333.33` | Failed |
| `44444.44` | Pending, then declined at settlement: insufficient funds |
| `55555.55` | Pending, then declined at settlement: unauthorised transaction |
| `6666.66` | Pending, then declined at settlement: account closed |
| `7777.77` | Pending, then declined at settlement: account not found |
| Any other amount | Approved |

## PayPal

Braintree's sandbox tests PayPal in one of two ways:

- **Mocked PayPal testing (the default):** Braintree simulates PayPal's responses in your Braintree sandbox. Nothing reaches a PayPal sandbox account.
- **Linked PayPal testing:** link a PayPal business sandbox account to your Braintree sandbox (in the Braintree sandbox Control Panel, **Settings > Account Settings > Payment Methods > PayPal > Link Sandbox**), then pay with a different PayPal sandbox account. This tests the full PayPal flow. Don't pay with the linked PayPal business account: those payments are declined.

| Amount | Result |
| --- | --- |
| `5001.01` | Declined (2038), in mocked PayPal testing only |
| `4002.00` to `4002.99` | Approved, then settlement pending |