---
id: "bankcard_discover"
kind: "pattern"
status: "draft"
is_pii: true
categories: ["pii", "finances"]
langs: ["common"]
quality: 85
url: "https://registry.apicrafter.io/datatype/bankcard_discover"
---

# Discover card number (`bankcard_discover`)

> **Draft.** Draft records have not been reviewed yet and may be incomplete or wrong; do not treat them as authoritative for legal or compliance decisions.

Primary account number of a Discover card: 16 to 19 digits that start with 6011, 644 to 649 or 65, or with 622126 to 622925 for cards co-branded with China UnionPay. The last digit is a Luhn check digit. The pattern accepts the number without spaces or hyphens.

- Pattern of: `bankcard`
- Personal data (PII): yes
- Categories: Personally identifiable information (pii), Finances and banking (finances)
- Countries: global
- Languages: Common to most languages (common)
- Classification: identifier

## Detection

Regular expression (Python `re`):

```
^(?:6011[0-9]{12,15}|64[4-9][0-9]{13,16}|65[0-9]{14,17}|622(?:12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[01][0-9]|92[0-5])[0-9]{10,13})$
```

Check digit algorithm: `luhn`

## Examples

- `6011111111111117` — Stripe test card number
- `6011000990139424` — Stripe test card number
- `6200000000000005` (invalid example) — UnionPay test number outside the co-branded range

## Supported by tools

- `datadogsds`
- `pywhat`
- `validatorjs`

## Sources

- wikipedia: <https://en.wikipedia.org/wiki/Payment_card_number>
- doc: <https://docs.stripe.com/testing>

## Quality

Score 85/100. Missing: mapping (Wikidata, Schema.org, ...), translation.

JSON: <https://registry.apicrafter.io/api/v1/datatypes/bankcard_discover.json> · Edit: <https://github.com/apicrafter/metacrafter-registry/edit/main/data/datatypes/any/finances/bankcard_discover.yaml>
