brand enum Only generate cards of this brand. Omit for a mix of all four.
Clearly-fake test credit cards — Luhn-valid numbers with correct Visa, Mastercard, Amex and Discover prefixes, future expiry and matching CVV.
Generated test data for fixtures and development
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
brand | enum | allowed: visa | mastercard | amex | discover example: visa | Only generate cards of this brand. Omit for a mix of all four. |
brand enum Only generate cards of this brand. Omit for a mix of all four.
| Parameter | Type | Default & allowed | Description |
|---|---|---|---|
count | int | default: 10 allowed: 1 – 100 example: 3 | How many records to generate (1–100). |
seed | int | example: 42 | Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed). |
fields | list | example: number,brand | Return only these fields (comma-separated). Mutually exclusive with 'exclude'. |
exclude | list | example: holderName | Return all fields except these (comma-separated). |
format | enum | default: json allowed: json | ndjson | csv example: csv | Response format: json envelope, ndjson (one record per line) or csv. |
pretty | boolean | default: false example: true | Pretty-print the JSON response. |
unwrap | boolean | default: false example: true | Drop the envelope: return the raw array/object without data/meta wrapper. |
count int How many records to generate (1–100).
seed int Deterministic output: the same seed always returns the same records. Omit for random (the used seed is echoed in meta.seed).
fields list Return only these fields (comma-separated). Mutually exclusive with 'exclude'.
exclude list Return all fields except these (comma-separated).
format enum Response format: json envelope, ndjson (one record per line) or csv.
pretty boolean Pretty-print the JSON response.
unwrap boolean Drop the envelope: return the raw array/object without data/meta wrapper.
| Field | Type | Description | Example |
|---|---|---|---|
number | string | Card number, digits only (no spaces). Luhn-valid with the brand's correct prefix and length, but tied to no real account. | 4539148803436467 |
brand | string | visa | mastercard | amex | discover — always consistent with the number's prefix. | visa |
expMonth | integer | Expiry month, 1–12. | 9 |
expYear | integer | Expiry year — always strictly in the future (request year +1 to +5). | 2029 |
cvv | string | Card verification code: 4 digits for amex, 3 for every other brand. String because it may start with 0. | 417 |
holderName | string | Cardholder's full name in UPPERCASE, as embossed on a physical card. | EMILY CARTER |
number string Card number, digits only (no spaces). Luhn-valid with the brand's correct prefix and length, but tied to no real account.
example: 4539148803436467
brand string visa | mastercard | amex | discover — always consistent with the number's prefix.
example: visa
expMonth integer Expiry month, 1–12.
example: 9
expYear integer Expiry year — always strictly in the future (request year +1 to +5).
example: 2029
cvv string Card verification code: 4 digits for amex, 3 for every other brand. String because it may start with 0.
example: 417
holderName string Cardholder's full name in UPPERCASE, as embossed on a physical card.
example: EMILY CARTER
/api/credit-cards?count=5&seed=42 {
"data": [
{
"number": "2520350047973637",
"brand": "mastercard",
"expMonth": 10,
"expYear": 2029,
"cvv": "319",
"holderName": "KAYLIE GORCZANY-CONSIDINE"
},
{
"number": "4045912567887760",
"brand": "visa",
"expMonth": 5,
"expYear": 2031,
"cvv": "819",
"holderName": "WAINO MARVIN"
},
{
"number": "6011345050180366",
"brand": "discover",
"expMonth": 10,
"expYear": 2029,
"cvv": "201",
"holderName": "HAILEE STREICH"
},
{
"number": "4501986319099194",
"brand": "visa",
"expMonth": 12,
"expYear": 2030,
"cvv": "459",
"holderName": "OTIS HODKIEWICZ"
},
{
"number": "6542069882857086",
"brand": "discover",
"expMonth": 8,
"expYear": 2028,
"cvv": "550",
…
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/credit-cards?brand=visa&count=3 {
"data": [
{
"number": "4465350047973630",
"brand": "visa",
"expMonth": 10,
"expYear": 2029,
"cvv": "319",
"holderName": "KAYLIE GORCZANY-CONSIDINE"
},
{
"number": "4004591256788775",
"brand": "visa",
"expMonth": 8,
"expYear": 2028,
"cvv": "942",
"holderName": "WAINO MARVIN"
},
{
"number": "4813450501803676",
"brand": "visa",
"expMonth": 7,
"expYear": 2028,
"cvv": "554",
"holderName": "HAILEE STREICH"
}
],
"meta": {
"endpoint": "credit-cards",
"count": 3,
"seed": 42,
"params": {
"brand": "visa"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} /api/credit-cards?brand=amex&count=3&seed=7 {
"data": [
{
"number": "378517491214943",
"brand": "amex",
"expMonth": 2,
"expYear": 2030,
"cvv": "7829",
"holderName": "BELL TREUTEL"
},
{
"number": "375370983767561",
"brand": "amex",
"expMonth": 7,
"expYear": 2031,
"cvv": "8451",
"holderName": "JERMAINE SCHUMM"
},
{
"number": "347670178792737",
"brand": "amex",
"expMonth": 8,
"expYear": 2028,
"cvv": "9128",
"holderName": "JULIANA BINS"
}
],
"meta": {
"endpoint": "credit-cards",
"count": 3,
"seed": 7,
"params": {
"brand": "amex"
},
"generatedAt": "2026-07-29T08:13:22.000Z"
}
} Generates clearly-fake test credit cards for checkout forms, payment sandboxes and fixtures. Every number is generated at random and belongs to no real account, person or bank — these cards can never be charged. They are however Luhn-valid (correct ISO/IEC 7812 mod-10 check digit) with the genuine issuer prefix and length for each brand, so client-side validators, brand detectors and form libraries accept them exactly like real cards:
brand restricts output to one brand (omit it for a mix of all four), and the brand field always matches the number's actual prefix. expMonth/expYear are always strictly in the future — 1 to 5 years ahead of the request time — so generated cards never trip "card expired" validation. With a seed, the same request returns byte-identical cards forever, ideal for reproducible payment tests.
Yes — every number has a correct Luhn check digit and a real brand prefix and length, so checkout-form validators accept it.
No — they're not connected to any account. They exist to test validation and UI flows; real payment gateways will decline them.
Yes — brand=visa|mastercard|amex|discover, with expiry dates and CVVs generated coherently (amex gets 4-digit CVVs).
Fake account transactions with realistic merchants, weighted statuses and currency-correct amounts — filter by type, status, amount range and date window.
Generate synthetic IBAN-shaped values for 20 countries with matching length, broad BBAN character classes and international MOD-97, or inspect the same checks.
Fake e-commerce products with category-themed names, prices in real currencies (whole yen for JPY), valid EAN-13 barcodes, SKUs, ratings and image URLs.
Clearly fake API keys, JWTs and hex/base64 secrets — structurally valid enough to exercise parsers and middleware, cryptographically meaningless by design.
Validate or compute check digits for Luhn, GTIN/EAN/UPC, ISBN, ISSN, IMEI, ISIN, LEI, VIN, NPI, ABA and ISO 7064 — one cited algorithm per scheme.