Question

How does one determine that the card a person is entering is a debit card, check card, or credit card?

I am looking at this for web payments in the US only. This is for utility billing.

Was it helpful?

Solution

I'm thinking you are getting confused that when you swipe the card in a store the machine knows which kind of card you've got. Although with my Dutch debit card I always got the option to choose..

But I'm guessing the magnetic strip stores more than just the number, and the card readers use that to determine your type of card.

You'll just have to join the other applications/sites and ask the user :)

OTHER TIPS

The best code I've seen for checking a card type is a Javascript page at http://www.eflo.net/mod10.htm - can differentiate between a VISA Debit and Credit card as you requested, a long with many other variations of cards. I've ported this code to C# very easily.

Your other alternative is to acquire a copy of the BIN (Bank Identification Number) database, which is a list of all card prefixes, the card issue, and the card validation requirements (e.g. Expiry Date, Issue No, Start Date). Some BIN sources;

not sure what you need that for, but all POS systems i'm aware of ASK THE USER to specify the type of the card.

you can run Debit as Credit - no need for pin number
you can run Credit as Debit - enter in your pin, and transaction will count as cash advance

Wiki has lists of credit vs. debit prefixes

However, IIRC some cards may be used as both credit and debit depending on context.

You've probably found this out already through your payment gateway but cards (debit, credit, custom [e.g store cards] are not easily distinguishable without a bit of help. Usually you can send the card number to the payment gateway and they'll give you this detail but you can work it out from a simple prefix table.

Simply put each bank/organisation is given access to a certain set of prefixes [numbers at the start] and depending on the level of detail you want you can match any card number to an organisation using the prefix. What is nice is that Debit Cards and Credit Cards use different prefixes even from the same bank.

From a web gateway point of view you don't typically care as the payment gateway will automatically tell you if they accept the card, do hotcard checks for you and validate the other information entered.

The comment (above/below) about not having to enter your pin on a debit card is wrong. That is not a debit card, sometimes referred to as Garage/Fuel Cards (where I come from) they only work for certain "fuel type transactions" to speed up processing at the forecourt.

Number ranges. Here is a small excerpt of an old specification I had once.

  • 510000 - 510249 16 Now Reserved for Europay (MCS and MCG)
  • 510250 - 510399 16 Now MasterCard debit card
  • 510400 - 510549 16 Now MasterCard Electronic
  • 510550 - 510999 16 Now MasterCard debit card
  • 511000 - 511204 16 Now MasterCard debit card
  • 513000 - 513999 16 Now Reserved for Use by Europay France ICA - 1031 ONLY
  • 514130 - 514629 16 Now MasterCard debit card
  • 514630 - 514730 16 Now MasterCard Business Card (previously noted as business debit)
  • 514731 - 514740 16 Now World MasterCard (U.S.)
  • 514741 - 514760 16 Now Platinum MasterCard debit card
  • 514761 – 514800 16 Now MasterCard Standard (Proposed New Premium Product – U.S.) – 40
  • 514801 – 514815 16 Now MasterCard Standard (Proposed New Premium Product – LAC) – 15
  • 514816 - 514830 16 Now MasterCard Standard (Proposed New Premium Prodct - SAMEA) - 15

There may well be other methods by now for instance in the return message from the processor, but I have not had to deal with this for a long time. We process everything as a credit card and if the card is strictly a debit card the bank just takes care of it.

Binbase will tell you whether card is debit or credit based on the first six digits of the card number. You can do 10 manual lookups per day or you can pay to buy the whole database. www.binbase.com/search.html

The information returned is in this format:

Card Brand: VISA
Issuing Bank: BRANCH BANKING AND TRUST COMPANY
Card Type (Credit/Debit): DEBIT
Card Level: CLASSIC
ISO Country Name: UNITED STATES
ISO Country A2 Code: US
ISO Country A3 Code: USA
ISO Country Number: 840
Bank Website: HTTP://WWW.EXAMPLE.COM
Bank Phone: 555-555-5555 OR 800-555-5555

I found a Free BIN checker json API. https://api.freebinchecker.com/bin/{bin} for checking a single BIN number. It accepts a number of length six, the initial digits of any payment card. The app will perform database lookup to return all the relevant information stored for the BIN and about 350,000+ records. There also have premium feature.

You can get card type & other relevant info. No need full card number except first 6 digit.

Example:

**Request:**  
https://api.freebinchecker.com/bin/370245   

**Response:** 
{"valid":true,
"card":{  
    "status":"active",
    "brand":"VISA",
    "type":"credit",
    "category":"STANDARD",
    "sub-category":"The payment system \"Visa\""
},
"country":{  
    "name":"United States",
    "alpha-2-code":"US",
    "numeric-code":"840",
    "latitude":"37.09024",
    "longitude":"-95.712891"
},
"issuer":{  
    "name":"JPMORGAN CHASE BANK, N.A.",
    "url":"www.jpmorganchase.com",
    "tel":"1-800-565-3460-9200"
}}

For more info: Freebinchecker

https://binlist.net/ offers a free (rate-limited) API. You only need to enter the first 6 or 8 digits of the card number - i.e. the Issuer Identification Numbers (IIN), previously known as Bank Identification Number (BIN).

curl -H "Accept-Version: 3" "https://lookup.binlist.net/45717360"

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top