Skip to content

Test Cards

All test cards work only in sandbox mode (publishable key starting with pk_sandbox_). Use any future expiry date (e.g. 12/30) and any 3-digit CVC (or 4-digit for Amex).

These cards always produce a successful charge or tokenization.

BrandNumberCVCNotes
Visa4242 4242 4242 4242Any 3 digitsMost common test card.
Mastercard5555 5555 5555 4444Any 3 digitsStandard Mastercard test number.
American Express3782 822463 10005Any 4 digitsAmex uses a 4-digit CVC and 15-digit card number.
Discover6011 1111 1111 1117Any 3 digitsDiscover network test card.

These cards trigger specific behaviors inside the iframe.

FlowNumberWhat happens
Installments (MSI)4000 0048 4000 0008After clicking the CTA, the iframe shows an installment picker with 3, 6, 9, 12, 18, and 24-month options. The guest selects one before the payment is confirmed. Only applies in checkout mode with installments: { required: true }.
3D Secure4000 0000 0000 3220After clicking the CTA, the iframe shows a simulated 3D Secure challenge page. The guest clicks “Complete authentication” to succeed. In sandbox, the challenge always succeeds.

These cards simulate specific decline scenarios. The error code is returned in the error.code field of the checkout() or createToken() result, and the error message is shown to the guest inside the iframe.

NumberError codeDescription
4000 0000 0000 0002card_declinedGeneric decline with no specific reason.
4000 0000 0000 9995insufficient_fundsCard does not have enough balance.
4000 0000 0000 0069expired_cardCard has expired.
4000 0000 0000 0127incorrect_cvcCVC does not match.
4000 0000 0000 0101incorrect_numberCard number is invalid at the acquirer.
4000 0000 0000 9987do_not_honorIssuer declined without a reason.
4000 0000 0000 0036fraudulentIssuer flagged the transaction as fraud.
4000 0000 0000 0044lost_cardCard reported lost.
4000 0000 0000 0051stolen_cardCard reported stolen.
4000 0000 0000 0119processing_errorTransient acquirer error.

The sandbox environment uses separate endpoints. The SDK handles this automatically based on your publishable key, but these are useful for debugging.

ServiceURL
Card form iframehttps://fields-sandbox.zatlas.com
CDE API (tokenization)https://cde-api-staging.zatlas.com
Payments APIhttps://sandbox-api.zatlas.com
OAuth2 token endpointhttps://cde-api-staging.zatlas.com/oauth2/token

When you are ready to accept real payments:

  1. Replace your publishable key with the production key (pk_live_...).
  2. Replace your OAuth2 credentials (client_id and client_secret) with production values.
  3. Remove any test card numbers from your code.
  4. Verify your integration handles all error codes gracefully.

See the Payments API documentation for server-side details on charges, refunds, and reconciliation.