Skip to main content

Test cards

The Sandbox environment accepts registered test cards only. A real card number is refused at tokenization — before it is stored, and before any provider sees it — so you can integrate against Sandbox without ever handling live card data.

Use any future expiry date and any CVC with the numbers below. The cardholder name is free text unless a card's notes say otherwise.

Which cards apply to you

Sandbox routes your payments the same way Live does, so which acquirer authorizes your test payment depends on your account's routing — and the same card number can mean different things at different acquirers. Read the provider field on the resulting transaction (it also appears in the payment webhook payload) and use the section with that name.

If you have not run a payment yet, ask support which provider your Sandbox account is routed to.

Reading the tables

  • Result — whether the payment reaches succeeded or is declined.
  • decline_code — the normalized code the transaction carries when it is declined. It is the same provider-agnostic vocabulary described in Decline codes, so your handling of insufficient_funds is identical whichever acquirer produced it.
  • Notes — what the acquirer itself calls the scenario, so their documentation is easy to cross-reference.
A card that is not listed here will not work

Sandbox matches the whole card number, not just its first digits. A number copied from an acquirer's documentation — or a real card that happens to share a prefix with a test card — is rejected, and no token is created.

Nuvei

Card numberSchemeResultdecline_codeNotes
4761 3441 3614 1390VisaSucceedsNon-3DS approval
4244 9519 0100 5043VisaSucceedsNon-3DS approval
4001 8886 8741 2469VisaSucceedsNon-3DS approval
4000 2874 4738 6587VisaSucceedsNon-3DS approval
4263 7046 3747 3241VisaSucceedsNon-3DS approval
5221 7442 5052 5131MastercardSucceedsNon-3DS approval
5550 3438 7585 1690MastercardSucceedsNon-3DS approval
5413 0373 4073 6315MastercardSucceedsNon-3DS approval
5256 7871 7232 2309MastercardSucceedsNon-3DS approval
3755 105131 69537American ExpressSucceedsNon-3DS approval (15-digit PAN)
3742 451718 46495American ExpressSucceedsNon-3DS approval (15-digit PAN)
6011 4054 3345 5453DiscoverSucceedsNon-3DS approval
6011 4945 8524 1663DiscoverSucceedsNon-3DS approval
3612 5698 5608 8370Diners ClubSucceedsNon-3DS approval
6233 0527 0322 5398UnionPaySucceedsNon-3DS approval
4485 0761 9129 4772VisaDeclinedcard_lost_or_stolenLost or stolen card
4344 1415 1067 1174VisaDeclinedgeneric_declineDo not honor
4000 1739 4619 4872VisaDeclinedinsufficient_fundsInsufficient funds
4000 2489 7322 1309VisaDeclinedexpired_cardExpired card
4521 1079 3879 6906VisaDeclinedinvalid_cvcInvalid CVV
4107 6526 5195 0141VisaDeclinedthree_ds_requiredSoft decline - authentication advised
5569 2699 6354 3635MastercardDeclinedcard_lost_or_stolenLost or stolen card
5221 4224 8657 4534MastercardDeclinedinsufficient_fundsInsufficient funds
5470 7132 9967 6435MastercardDeclinedexpired_cardExpired card
5333 5820 3942 2930MastercardDeclinedinvalid_cvcInvalid CVV
3755 237581 57927American ExpressDeclinedcard_lost_or_stolenLost or stolen card
3755 262459 63088American ExpressDeclinedinsufficient_fundsInsufficient funds
4000 0231 6489 2261VisaSucceeds3DS card; approves after authentication
4021 9371 9565 8109VisaDeclinedthree_ds_required3DS card; soft decline - authentication advised
4871 0401 1654 3210VisaDeclinedcard_lost_or_stolen3DS card; declines as stolen
5408 4589 4706 7358MastercardSucceeds3DS card; approves after authentication
5353 0296 0225 4618MastercardSucceeds3DS card; approves after authentication
4000 0209 5159 5032VisaSucceedsFrictionless 3DS flow (cardHolderName FL-BRW1; amount >= 150)
2221 0081 2367 7736MastercardSucceedsChallenge 3DS flow (cardHolderName CL-BRW2; amount 151)
4567 4910 0000 1113VisaSucceedsFrictionless 3DS flow (amount 83.1)
4567 4910 0000 2228VisaSucceedsChallenge 3DS flow (amount 115.2)
5545 0607 0000 1113MastercardSucceedsFrictionless 3DS flow (amount 83.1)
5545 0607 0000 2228MastercardSucceedsChallenge 3DS flow (amount 115.2)
Need another Nuvei scenario?

Nuvei publishes a longer list in their testing documentation. Those numbers are not accepted in the Orchestr sandbox until we register them — tell support which scenario you need and we will add it.

Stripe

Card numberSchemeResultdecline_codeNotes
4242 4242 4242 4242VisaSucceedsSuccessful payment
4242 4242 4242 4242VisaSucceeds3DS supported but the card is not enrolled
4000 0566 5566 5556VisaSucceedsSuccessful payment on a debit card
5555 5555 5555 4444MastercardSucceedsSuccessful payment
2223 0031 2200 3222MastercardSucceedsSuccessful payment on a 2-series Mastercard
5200 8282 8282 8210MastercardSucceedsSuccessful payment on a debit card
5105 1051 0510 5100MastercardSucceedsSuccessful payment on a prepaid card
3782 822463 10005American ExpressSucceedsSuccessful payment (15-digit PAN)
3782 822463 10005American ExpressSucceeds3DS is not supported on this card
3714 496353 98431American ExpressSucceedsSuccessful payment (15-digit PAN)
6011 1111 1111 1117DiscoverSucceedsSuccessful payment
6011 0009 9013 9424DiscoverSucceedsSuccessful payment
3056 9300 0902 0004Diners ClubSucceedsSuccessful payment
3566 0020 2036 0505JCBSucceedsSuccessful payment
6200 0000 0000 0005UnionPaySucceedsSuccessful payment
4000 0082 6000 0000VisaSucceedsSuccessful payment on a UK card
4000 0025 0000 0003VisaSucceedsSuccessful payment on a French card
4000 0027 6000 0016VisaSucceedsSuccessful payment on a German card
4000 0000 0000 0002VisaDeclinedgeneric_declinecard_declined / generic_decline
4000 0000 0000 9995VisaDeclinedinsufficient_fundscard_declined / insufficient_funds
4000 0000 0000 9987VisaDeclinedcard_lost_or_stolencard_declined / lost_card
4000 0000 0000 9979VisaDeclinedcard_lost_or_stolencard_declined / stolen_card
4000 0000 0000 0069VisaDeclinedexpired_cardexpired_card
4000 0000 0000 0127VisaDeclinedinvalid_cvcincorrect_cvc
4000 0000 0000 0119VisaDeclinedprocessing_errorprocessing_error
4000 0000 0000 6975VisaDeclinedvelocity_limit_exceededcard_declined / card_velocity_exceeded
4000 0000 0000 3055VisaSucceeds3DS supported and optional; authentication succeeds
4000 0084 0000 0027VisaSucceeds3DS authentication required and succeeds
4000 0084 0000 1629VisaDeclinedgeneric_decline3DS authentication required; the payment then declines
Need another Stripe scenario?

Stripe publishes a longer list in their testing documentation. Those numbers are not accepted in the Orchestr sandbox until we register them — tell support which scenario you need and we will add it.

Testing 3-D Secure

The cards marked as requiring authentication trigger a real 3-D Secure challenge in Sandbox. See Card payments for the confirmCardPayment() flow that handles it.

How the challenge appears depends on your account's presentation mode — inline, in a popup, or as a full-page redirect. Don't assume inline when testing: a redirect navigates away from your page, and an integration that keeps state in JavaScript will notice. If you charge a token from your server instead, the challenge reaches you as a 3-D Secure action rather than through the SDK at all.

A card that declines after authentication is worth testing explicitly: authentication succeeding is not the same as the payment succeeding, and your integration should not treat a completed challenge as a result. The authoritative outcome is always the payment.* webhook.

Cards that cannot be registered

Acquirers publish some numbers that deliberately fail the Luhn checksum — Stripe's "incorrect number" card, for example. Those cannot be registered as test cards, and they do not need to be: card-number validation rejects them in the browser, before any request is made, which is the behaviour they were meant to demonstrate.

Next steps

  • Card payments — the full Orchestr.js integration.
  • Decline codes — the vocabulary the decline_code column uses.
  • Webhooks — the payment.* events that carry the final result.