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/YY or MM/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 typeCard numberResponseCountry code
Credit4000020000000000SuccessUS
Credit4242424242424242SuccessGB
Credit4242424242424242
Set payment amount to 101.
FailedGB
Credit4539467987109256FailedES
Credit4024007181869214FailedUS
Credit4916301720257093FailedUS
Credit4485899805156040FailedUS
Debit4659105569051157SuccessGB
Debit4095254802642505FailedUS
Prepaid4000148147058142Failed-

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/YY or MM/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 schemeCard typeCard numberCountry code
American ExpressCredit372688581899681US
Cartes Bancaires or MastercardCredit5137210000000158FR
Cartes Bancaires or VisaDebit4010061700000021FR
MastercardCredit5385308360135181US
UnionPay InternationalDebit6224120000000003CN
VisaCredit4242424242424242GB

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).

  1. Set up a testnet wallet. Configure MetaMask (or any EVM wallet) for the testnet you're using.
  2. Fund the wallet. Get test USDC from the Circle faucet, and get gas token (POL) from the Polygon Amoy faucet.
  3. Create a payment page with crypto enabled in your sandbox environment.
  4. Connect the wallet on the payment page and approve the transfer.
  5. Breeze detects the on-chain transfer automatically and fires the PAYMENT_SUCCEEDED webhook 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.

  1. Create a payment page with crypto enabled in your sandbox environment.
  2. Copy the deposit address displayed on the payment page. Breeze generates this address automatically - you do not configure one.
  3. Send test USDC to that address using the Circle faucet - enter the deposit address as the recipient.
  4. Breeze detects the on-chain transfer automatically and fires the PAYMENT_SUCCEEDED webhook 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 brandCard numberSandbox outcome
Visa (debit)4000056655665556PROCESSED
Mastercard (debit)5200828282828210REFUNDED
⚠️

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

FieldValue
Routing number031000011 - or 021000021 for a second account
Account number000123456789 - use 000000000000 to force a REFUNDED payout
Account typechecking

SEPA - EUR

FieldValue
IBANMT45SYPL39480744067217548372015
BICSYPLMTM2XXX
Account holder nameJohn 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

FieldValue
Sort code040004
Account number12345678

HKD FPS - HKD, Hong Kong

FieldValue
Bankany from the list
Account number123456789
First / last nameAda / Lovelace

KRW KFTC - KRW, South Korea

FieldValue
Bankany from the list
Account number1234567890
First / last nameAda / Lovelace

Zengin - JPY, Japan

FieldValue
Bankany from the list
Branch code001
Account typeDEPOSIT
Account number1234567
First / last nameADA / LOVELACE
Mobile number09012345678

TWD FISC - TWD, Taiwan

FieldValue
Bankany from the list
Account number12345678
First / last nameAda / Lovelace
Mobile number0912345678
Email[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, and lastName in 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.


Did this page help you?