What a test payment card is

A test payment card is a card number that a payment processor issues for use in its sandbox or test mode. It approves or declines inside a staging environment and fails everywhere else. Developers use these numbers to run charges, refunds, voids, declines, and 3-D Secure challenges without moving money or touching a real account.

How test cards differ from live cards

  • They resolve only against the processor's test API endpoint, never the production endpoint.
  • They carry no cardholder, no issuer, and no available balance.
  • Each processor publishes its own set. A Stripe number will not authorize on an Adyen account.
  • They are public. Treating a test number as a secret signals a broken integration.

Where the numbers come from

Stripe, Adyen, PayPal, and Checkout.com each publish their own test card list in their developer documentation. Pull the list from the processor that holds your merchant account, not from a blog post, and note the mode each number belongs to. Some lists cover successful charges only; others include dedicated numbers for declines, expired cards, and incorrect CVC.

Run a test charge

  1. Open your processor dashboard and confirm the account is in test or sandbox mode.
  2. Copy a test card number from that processor's own documentation.
  3. Enter any future expiry date and any three digit CVC unless the docs specify a fixed value.
  4. Submit the charge through your staging build and check the response code in the dashboard log.
  5. Repeat the same charge with a documented decline number.
  6. Trigger a refund against the successful charge and confirm the status changes to refunded.

Test the failure paths

Approvals are the easy half. Run the numbers that return a generic decline, an insufficient funds code, an expired card, and a CVC mismatch. If your integration supports 3-D Secure, run the challenge flow and the abandoned challenge flow. Record the exact error codes your code receives, then confirm your checkout page shows a message a customer can act on instead of a raw code.

Keep the boundary clear

Test card numbers exist only for sandbox use. Entering a real card number into a test form, or running a test number against a live endpoint, breaks the model and can look like card testing to the processor. Card testing is a fraud pattern that triggers rate limits and account suspension. Live card numbers fall under PCI DSS handling rules; test numbers do not, and the two should never mix in the same environment.