Reference guide · updated September 2026

Discover's prefixes are the most fragmented of any network.

Most networks use one clean prefix range. Discover uses four separate blocks of different widths — which is exactly why partial Discover support is such a common bug.

Discover's Number Structure

PropertyValue
Prefix block 16011
Prefix block 2622126–622925
Prefix block 3644–649
Prefix block 465
Length16 digits
Security code3-digit CID, printed on the back

Four Blocks, Four Different Widths

This is what makes Discover uniquely error-prone to validate correctly: two of its blocks are four digits wide (6011, and 644 through 649 as a range), one is two digits wide (65), and one is a genuinely six-digit block (622126 through 622925). A validation rule written to handle one block cleanly tends to silently miss the others — and the six-digit block in particular gets omitted most often, since it requires checking more leading digits than the other three blocks do.

That six-digit block exists because of a co-branding partnership: it's shared with China UnionPay, reflecting Discover's global acceptance network agreements rather than being a purely internal Discover range.

Discover Global Network

Worth knowing for context: Discover cards are accepted more broadly than the "Discover" brand name alone might suggest, through reciprocal acceptance agreements under the Discover Global Network — including Diners Club International and China UnionPay. This is part of why Discover's own numbering has grown more fragmented over time, rather than staying to a single clean block the way Visa has.

Generating Discover Test Numbers

Select Discover from the Card Network dropdown above — Luhnly's generator draws from the primary 6011, 644–649, and 65 blocks. If your validation logic specifically needs to handle the six-digit UnionPay co-branded block (622126–622925) as well, build a dedicated test case for that range directly, since it's a narrower and more specific slice than general Discover testing usually covers.

Generate test card numbers →

Related Guides

Frequently Asked Questions

Why does Discover have so many separate prefix blocks?

Partly historical accretion of its own ranges (6011, 644-649, 65), and partly due to co-branding and acceptance partnerships — the 622126-622925 block specifically is shared with China UnionPay as part of Discover's global network agreements.

Is the 622126-622925 block commonly missed by validators?

Yes — it's the most frequently overlooked Discover block, since it requires matching six leading digits rather than the shorter four-digit or two-digit checks that cover the other three blocks.

Does Luhnly's generator cover all four Discover blocks?

It draws from the three primary blocks (6011, 644-649, 65). The narrower six-digit UnionPay co-branded block is specific enough that it's worth a dedicated test case if your integration needs to handle it specifically.