Test cards for Jest
Unit-test card validation logic in Jest with format-valid fixtures — no network, no real card data.
Example
Jest · ts
// card.test.ts
import { luhnIsValid, detectScheme } from "./card";
const VISA = "4242424242424242";
const BAD = "4242424242424241";
test("accepts a valid Visa test number", () => {
expect(luhnIsValid(VISA)).toBe(true);
expect(detectScheme(VISA)?.network).toBe("visa");
});
test("rejects a number that fails the Luhn check", () => {
expect(luhnIsValid(BAD)).toBe(false);
});Test card numbers
The standard Stripe test numbers — successes and declines you can wire into your Jest suite.
Successful payments
Cards that complete a charge in test mode.
| Number | Brand | CVC | Behavior (test mode) |
|---|---|---|---|
4242 4242 4242 4242 | Visa | any 3 digits | Succeeds and immediately processes the payment. |
4000 0566 5566 5556 | Visa (debit) | any 3 digits | Succeeds; card type is debit. |
5555 5555 5555 4444 | Mastercard | any 3 digits | Succeeds and immediately processes the payment. |
2223 0031 2200 3222 | Mastercard (2-series) | any 3 digits | Succeeds; tests the 2221–2720 range. |
5200 8282 8282 8210 | Mastercard (debit) | any 3 digits | Succeeds; card type is debit. |
5105 1051 0510 5100 | Mastercard (prepaid) | any 3 digits | Succeeds; card type is prepaid. |
3782 822463 10005 | American Express | any 4 digits | Succeeds; 15-digit PAN, 4-digit CID. |
3714 496353 98431 | American Express | any 4 digits | Succeeds; alternate Amex test number. |
6011 1111 1111 1117 | Discover | any 3 digits | Succeeds and immediately processes the payment. |
3056 9300 0902 0004 | Diners Club | any 3 digits | Succeeds; 14-digit Diners Club. |
3566 0020 2036 0505 | JCB | any 3 digits | Succeeds and immediately processes the payment. |
6200 0000 0000 0005 | UnionPay | any 3 digits | Succeeds and immediately processes the payment. |
Declines & errors
Trigger specific decline codes to test your error handling.
| Number | Brand | CVC | Behavior (test mode) |
|---|---|---|---|
4000 0000 0000 0002 | Visa | any 3 digits | Charge is declined with a generic decline code. |
4000 0000 0000 9995 | Visa | any 3 digits | Declined: insufficient_funds. |
4000 0000 0000 9987 | Visa | any 3 digits | Declined: lost_card. |
4000 0000 0000 9979 | Visa | any 3 digits | Declined: stolen_card. |
4000 0000 0000 0069 | Visa | any 3 digits | Declined: expired_card. |
4000 0000 0000 0127 | Visa | any 3 digits | Declined: incorrect_cvc. |
4000 0000 0000 0119 | Visa | any 3 digits | Declined: processing_error. |
4100 0000 0000 0019 | Visa | any 3 digits | Declined: flagged as fraudulent (Radar). |
Use any future expiry date (e.g. 12 / 34) and any postal code. Behaviors shown are for Stripe’s test mode; other processors publish their own test numbers. These cards are non-functional fixtures — they will be declined in production.