Testing
Test your integration with simulated transactions and webhooks.
Pay-ins
You can test card payments using the sample test cards below to simulate different outcomes (e.g. successful or failed payments) in a sandbox environment.
Test cards act as fake credit cards, and allow you to simulate the following scenarios:
- Successful payments by card brand
- Card errors due to declines, fraud, or invalid data
- Authentication with 3D Secure
Breeze offers both fiat (card) and crypto (non-card) payment options, along with Apple Pay and Google Pay wallets. However, the guide below is for testing card payments.
To use the test cards, manually enter the card info as follows:
- The card number listed in the table and the response code you want to test
- Any valid three-digit card verification value (CVV) for Visa and Mastercard cards, or four-digit CVV for American Express cards
- Any future card expiry date, in the format
MM/YYorMM/YYYY - Any valid 5-digit US zip code (e.g.
10001)
Default (non-3DS) cards and responses
If the test card returns a failed payment response, the end user is presented with the following error message: "Payment failed. Please check your card details and balance, or try another card. If the issue persists, contact your bank or support."
| Card type | Card number | Response | Country code |
|---|---|---|---|
| Credit | 4000020000000000 | Success | US |
| Credit | 4242424242424242 | Success | GB |
| Credit | 4242424242424242 Set payment amount to 101. | Failed | GB |
| Credit | 4539467987109256 | Failed | ES |
| Credit | 4024007181869214 | Failed | US |
| Credit | 4916301720257093 | Failed | US |
| Credit | 4485899805156040 | Failed | US |
| Debit | 4659105569051157 | Success | GB |
| Debit | 4095254802642505 | Failed | US |
| Prepaid | 4000148147058142 | Failed | - |
| Card type | Card number | Response | Country code |
|---|---|---|---|
| Credit | 5436031030606378 | Success | MU |
| Credit | 5585076576791786 | Failed | HU |
| Debit | 5305484748800098 | Success | DE |
| Card type | Card number | Response | Country code |
|---|---|---|---|
| Credit | 345678901234564 | Success | ES |
| Credit | 341829238058580 | Failed | US |
| Credit | 3566027046765007 | Failed | US |
| Card type | Card number | Response | Country code |
|---|---|---|---|
| Credit | 6011111111111117 | Success | US |
| N/A | 6011111111111118 | Failed | US |
| Credit | 6011201559638046790 | Failed | US |
| Credit | 6445979375892355607 | Success | US |
3D Secure cards and responses
Use these test cards to simulate different 3D Secure (3DS) authentication flows and results.
You can use:
- Any valid three-digit CVV for Visa and Mastercard, or four-digit CVV for American Express
- Any future expiry date, in the format
MM/YYorMM/YYYY
If your 3DS authentication test is challenged, and you're redirected to the 3DS simulator page, enter the password Checkout1!.
3DS2 Challenge Flow
| Card scheme | Card type | Card number | Country code |
|---|---|---|---|
| American Express | Credit | 372688581899681 | US |
| Cartes Bancaires or Mastercard | Credit | 5137210000000158 | FR |
| Cartes Bancaires or Visa | Debit | 4010061700000021 | FR |
| Mastercard | Credit | 5385308360135181 | US |
| UnionPay International | Debit | 6224120000000003 | CN |
| Visa | Credit | 4242424242424242 | GB |
| Card scheme | Card type | Card number | Country code |
|---|---|---|---|
| American Express | Credit | 346126139326850 | US |
| Cartes Bancaires or Mastercard | Credit | 5341034800000008 | FR |
| Cartes Bancaires or Visa | Credit | 4150561000000001 | FR |
| Mastercard | Debit | 5518832400606463 | US |
| UnionPay International | Debit | 6224120000000060 | CN |
| Visa | Credit | 4152868552773614 | BH |
| Card scheme | Card type | Card number | Country code |
|---|---|---|---|
| American Express | Credit | 375982239796002 | US |
| Cartes Bancaires or Mastercard | Credit | 5341034800000016 | FR |
| UnionPay International | Debit | 6224120000000052 | CN |
| Cartes Bancaires or Visa | Credit | 4150561000000019 | FR |
| Card scheme | Card type | Card number | Country code |
|---|---|---|---|
| American Express | Credit | 347411540178242 | US |
| Cartes Bancaires or Mastercard | Credit | 5341034800000024 | FR |
| Cartes Bancaires or Visa | Credit | 4150561000000027 | FR |
| Mastercard | Credit | 5258901507741160 | CA |
| UnionPay International | Debit | 6224120000000045 | CN |
| Visa | Credit | 4243754271700719 | US |
Crypto
Sandbox uses the Polygon Amoy testnet (chain ID 80002) and Base Sepolia testnet (chain ID 84532) for crypto pay-ins. USDC is the supported test token - USDT is not available on Amoy.
Get test USDC from the Circle faucet and select the testnet you're using. The Polygon Amoy faucet dispenses the gas token (POL) only - not USDC.
There are two crypto pay-in flows, and they're tested differently.
Connected wallet (gas token required)
The customer connects an EVM wallet (e.g. MetaMask) and approves the transfer from within the wallet. Because the wallet broadcasts the on-chain transaction, it must hold a small amount of the network's gas token (POL on Polygon Amoy).
- Set up a testnet wallet. Configure MetaMask (or any EVM wallet) for the testnet you're using.
- Fund the wallet. Get test USDC from the Circle faucet, and get gas token (POL) from the Polygon Amoy faucet.
- Create a payment page with crypto enabled in your sandbox environment.
- Connect the wallet on the payment page and approve the transfer.
- Breeze detects the on-chain transfer automatically and fires the
PAYMENT_SUCCEEDEDwebhook once confirmed.
Manual deposit (no gas token required)
The payment page displays a Breeze-generated deposit address. You send test USDC straight to that address - there's no wallet to set up and no gas token to hold, because the faucet sends the funds on your behalf.
- Create a payment page with crypto enabled in your sandbox environment.
- Copy the deposit address displayed on the payment page. Breeze generates this address automatically - you do not configure one.
- Send test USDC to that address using the Circle faucet - enter the deposit address as the recipient.
- Breeze detects the on-chain transfer automatically and fires the
PAYMENT_SUCCEEDEDwebhook once confirmed.
No mock wallet or manual confirmation step is needed. Once your transaction is confirmed on the testnet, Breeze picks it up automatically via on-chain monitoring.
Payouts
Push-To-Card
Use the following test card for push-to-card payouts in the sandbox environment:
| Card brand | Card number | Sandbox outcome |
|---|---|---|
| Visa (debit) | 4000056655665556 | PROCESSED |
| Mastercard (debit) | 5200828282828210 | REFUNDED |
The Mastercard number always refunds. It is the sandbox's force-refund card, so a payout to it
is refunded every time and the payout method is removed - it is not a second happy-path card. Use
the Visa number for a payout you expect to succeed.
Bank accounts
If the payout page supports more than one rail or currency, a Choose destination step appears
first: the payer picks a country and then a payout currency, and that pair selects the rail whose
bank account form they then fill in. Which countries and currencies are offered comes from the
merchant's agreement, so a rail you want to test may not be listed. Pages that support a single
currency have no destination step - the rail follows from the page's own funding currency, so a
USDC-funded page reaches ACH and a EURC-funded one reaches SEPA.
Append ?locked_payout_methods=BANK_ACCOUNT to the payout page URL to isolate the bank flow.
Values below pass validation in the sandbox. Bank name fields are a searchable list on the page, so
pick any entry rather than typing one.
ACH - USD, United States
| Field | Value |
|---|---|
| Routing number | 031000011 - or 021000021 for a second account |
| Account number | 000123456789 - use 000000000000 to force a REFUNDED payout |
| Account type | checking |
SEPA - EUR
| Field | Value |
|---|---|
| IBAN | MT45SYPL39480744067217548372015 |
| BIC | SYPLMTM2XXX |
| Account holder name | John Smith Doe for a Verification of Payee full match, John Doe for a partial match, John Mary for no match |
GBP FPS - GBP, United Kingdom
| Field | Value |
|---|---|
| Sort code | 040004 |
| Account number | 12345678 |
HKD FPS - HKD, Hong Kong
| Field | Value |
|---|---|
| Bank | any from the list |
| Account number | 123456789 |
| First / last name | Ada / Lovelace |
KRW KFTC - KRW, South Korea
| Field | Value |
|---|---|
| Bank | any from the list |
| Account number | 1234567890 |
| First / last name | Ada / Lovelace |
Zengin - JPY, Japan
| Field | Value |
|---|---|
| Bank | any from the list |
| Branch code | 001 |
| Account type | DEPOSIT |
| Account number | 1234567 |
| First / last name | ADA / LOVELACE |
| Mobile number | 09012345678 |
TWD FISC - TWD, Taiwan
| Field | Value |
|---|---|
| Bank | any from the list |
| Account number | 12345678 |
| First / last name | Ada / Lovelace |
| Mobile number | 0912345678 |
[email protected] |
KYC
When testing payout flows that involve KYC in the sandbox environment, keep the following in mind. Tier 1 is required for card/bank payouts; Tier 2 is required for crypto payouts - see KYC Overview for the full breakdown.
Tier 1 KYC (Card / Bank payouts)
- Name fields - The name entered in the KYC form should match the
firstName,middleName, andlastNamein the corresponding Customer record. - Date of birth - Use a date of birth for a user aged 18 or older. Year 2000 or earlier is a safe choice for sandbox testing. Note that this threshold is specific to the sandbox configuration.
taxId- Use any 9-digit number for US-based testing. The sandbox checks format validity but does not verify the value against a real identity.
Tier 2 KYC (Crypto payouts)
All Tier 1 notes above apply. Additionally:
- When the camera prompt appears for the Government ID document scan, you may use any image - the sandbox does not perform real document authenticity checks.
The hosted KYC form in sandbox may pre-populate with dummy values. Always overwrite these with values that are consistent with your Customer record before submitting.
To keep testing clean, consider creating a fresh Customer record for each distinct test scenario rather than reusing the same one across multiple flows.
Updated 14 days ago
