Enter the first digits of a card number and this page breaks down what the public standards say about them: which major industry the first digit belongs to, which card network the prefix falls into, and whether the length is valid for that network.

It does not name the issuing bank or the country. That information lives in commercial BIN databases, which are licensed products maintained from issuer registrations. We do not host one, and we would rather tell you that plainly than serve you stale or unsourced data. If you need issuer-level lookup for production routing, the established providers are listed below.

Public standards only

Card Prefix Analyser

Enter a prefix or a full number. Everything shown comes from published standards, not from a BIN database — no issuer name, no country.

Standards analysis only. This page does not identify the issuing bank, the country, or the card product — that data is licensed, and we do not host it.

What a BIN tells you — and who knows it

The useful way to think about a card prefix is as two layers of information with completely different availability.

Known from public standards — what the tool above reports

FactSource
Major industry, from the first digitISO/IEC 7812-1
Card networkPublished IIN ranges
Valid lengths for that networkNetwork specifications
Whether the check digit is correctThe Luhn algorithm

Known only from a BIN database — licensed data

FactWhy it is not derivable
Issuing bank nameA registration record, not a property of the digits
Issuing countryAssigned per range by the scheme, and reassignable
Card type: debit, credit or prepaidSet by the issuer per product
Card level: classic, gold, platinum, commercialPortfolio metadata
Regulated or unregulated for interchangeDepends on issuer and jurisdiction

Nothing in the second table can be computed. Each row is something an organisation recorded and someone else licensed, which is why every honest answer to “what bank is this” involves a database and a subscription.

How the BIN system works

ISO/IEC 7812-1 defines the Issuer Identification Number and the registration authority allocates ranges to card schemes and issuers. An issuer receiving a range subdivides it across its own products — a credit portfolio here, a debit portfolio there — and reports the structure back to the schemes, which distribute BIN files to acquirers and processors. That distribution chain is why your BIN data is always slightly behind reality: it is a copy of a copy, refreshed on a schedule.

The width of that identifier changed. Assignments made since April 2022 are eight digits rather than six, because the six-digit space was running out. The short version for this page is that a six-digit lookup key no longer resolves to a single product, and a lookup service that only accepts six digits is answering a question you did not ask.

What BIN data is used for

It is worth being concrete about why this is a normal piece of payments infrastructure rather than something exotic:

  1. Acquirer routing. A merchant with more than one acquirer sends domestic cards to a domestic acquirer and foreign cards to whoever prices them best. At volume this is a material cost difference.
  2. Interchange estimation. Fees vary by card type, level and region, so forecasting processing costs means knowing what mix of cards you take.
  3. Surcharge rules. Where surcharging is permitted at all, the rules usually differ between debit and credit — see the debit card generator for why the digits alone cannot answer that.
  4. Dynamic currency conversion. Whether to offer a cardholder their home currency depends on the issuing country.
  5. Fraud scoring input. A mismatch between card country and IP country is a signal, one among many. It is an input to a model, never a decision on its own.
  6. Authentication flow. Regional rules and issuer behaviour around strong customer authentication differ, and knowing the issuing region shapes what your checkout should expect.
  7. Analytics. Which issuers your customers bank with, and how approval rates differ between them, is genuinely actionable.

Send the prefix, never the whole number

One rule that matters more than any provider choice: when you call a lookup service, send the first six or eight digits and nothing else. A BIN is not cardholder data on its own, and a service that only ever sees a prefix cannot leak an account. Send the full primary account number instead — which several client libraries will happily do if you pass the raw input — and you have handed card data to a third party, widened your PCI scope to include them, and created a copy of something you are supposed to be minimising. Truncate before the call, not inside it, and assert that in a test. The same applies to your logs: the prefix is safe to record, the rest is not.

Where licensed BIN data comes from

Providers, with honest notes and no affiliate links:

  • Your payment provider’s own API. Start here. Stripe’s card object returns brand, a two-letter country, and funding as credit, debit, prepaid or unknown; Adyen and most other gateways return equivalents alongside the authorisation. That covers the majority of real routing and surcharge logic with no extra vendor, no extra latency and no extra thing to be down. The gap is the issuer name, which Stripe’s card object does not include — if you genuinely need that, you need a database.
  • binlist.net — the long-standing free service, and the one to be careful with: it stopped updating in 2023 and directs users to a paid IIN List product. The endpoint still answers, which is exactly the trap, because stale data that returns confidently is worse than no data.
  • Bincodes, BIN Database (bindb.com), Iin.lv, Neutrino API — commercial services with maintained files, priced per lookup or per subscription.

Three questions to ask any provider before you commit: does it accept eight-digit BINs, how often is the underlying file refreshed, and what does it return when it does not know? A service that guesses rather than saying unknown will quietly corrupt every decision downstream.

Source for the Stripe fields: Stripe API — the Card object · Verified: 2026-08-04

Provider details above were last checked against provider documentation on . Providers do change what they publish — the official link beside each claim is authoritative.

What we deliberately do not provide

  • A downloadable BIN list
  • A bank name to prefix mapping, in either direction
  • Any data about which ranges are worth attempting
  • Card status checking of any kind

Lists of BINs circulate in fraud communities as targeting data — a way to pick which issuer’s cards to attempt. Publishing one would serve that use far more than it would serve anyone building software. Commercial providers gate their data behind accounts and terms of use for the same reason.

The format-level question — is this number well-formed — has no such problem, and the card validator answers it in full.

Testing BIN logic

Your BIN handling needs tests, and those tests should not call a third party. Generate synthetic numbers on whatever prefixes your routing table contains with the BIN generator — which also covers the six-to-eight digit migration in detail — then mock the lookup itself:

// Mock the BIN service so tests don't depend on a third party
const binFixtures = {
  '41234567': { brand: 'visa', type: 'credit', country: 'GB' },
  '55123456': { brand: 'mastercard', type: 'debit', country: 'DE' },
};

jest.mock('./binService', () => ({
  lookup: (bin) => Promise.resolve(binFixtures[bin] ?? null),
}));

The ?? null is the important part. Write a test for the null case and one for a timeout, then decide deliberately what your code does in each — because “the lookup did not answer” is a state you will reach in production, and code that only handles the happy path picks a behaviour for you at the worst moment.

Generate full test records with the all-network generator, and check what a processor returns for its own sandbox cards with the test card numbers reference. The IIN and BIN explainer goes deeper into the structure. The tool directory lists everything else, and the FAQ covers what a Luhn-valid number does and does not prove.

Frequently Asked Questions

Taking the leading digits of a card number and finding out what they represent. Part of the answer comes from published standards — the industry the first digit belongs to, the network the prefix falls into, the lengths that network uses — and that is what this page does. The rest, meaning the issuing bank, the country and the card product, comes from a commercial database built on issuer registrations.
Through a licensed BIN database, yes. That data is compiled from issuer registrations and scheme files, maintained commercially, and sold under terms of use. It is not derivable from the digits themselves — the mapping between a prefix and an institution is a record someone keeps, not a calculation anyone can perform.
Yes. It is ordinary business practice in payments, used for acquirer routing, interchange estimation, surcharge rules, currency decisions and risk scoring. The data is licensed rather than secret, and the providers gate it behind accounts and terms precisely because bulk prefix lists have an obvious second use.
Because we do not host a BIN database and will not publish one. Free lists that circulate without a source are usually stale, incomplete, or compiled from data that was not anyone’s to share. We would rather tell you exactly what the public standards support and point you at licensed providers for the rest than serve you data we cannot stand behind.
None in practice. IIN, the Issuer Identification Number, is the term in ISO/IEC 7812; BIN, the Bank Identification Number, is what the industry says. The standard prefers IIN because issuers are not always banks. A document using both is not drawing a distinction you need to act on.
Variable, and usually worse than they look. Issuers reassign ranges, portfolios get sold, and BIN files are updated continuously by the schemes — a snapshot starts drifting immediately. Free sources also tend to be six-digit only, which no longer resolves to a single product now that assignments are made at eight digits. For anything that affects money, use a maintained commercial source or your processor.
Very likely, and this is the answer most people miss. Stripe’s card object returns the brand, the two-letter country and a funding value of credit, debit, prepaid or unknown, and other major gateways return equivalents. That covers most of what routing and surcharge logic actually needs, with no third-party integration and no extra failure mode. Check your provider’s card object before you buy a lookup service.