views:

2268

answers:

6

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.

+6  A: 

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

roman m
See my comment for chaos's answer.
Mike Wills
looking at your edit: if you're writing a web-app, you might as well treat ALL CARDS AS CREDIT
roman m
I'd have to agree with your answer. All of the vendors would benefit financially from forcing the customer to run their card as debit, yet every single vendor allows the customer to make that choice (often with misleading wording that tricks the customer into selecting debit). If there were a valid way to make that determination, most vendors would force the customers with debit cards to actually run them as debit cards.
Mayo
I don't know the cost of Debit vs. Credit for processing, but I have heard in the past that debit transactions are cheaper for the vendor thus the push to debit.
Mike Wills
+3  A: 

Wiki has lists of credit vs. debit prefixes

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

DVK
Seconded; you're going to have to ask the user. Charging their card as debit will often hit the user with a fee instead of you, which will result in some upset users if you didn't ask them to make that choice.
Dean J
@Dean: What bank does that? Not in the US. The merchant is hit with all the fees... they'd rather you process it as a Debit card because the fees are LOWER
0A0D
I don't use it as a debit card for other reasons but I'm pretty sure my US Bank card treats all debit card uses as an out-of-network ATM and will charge me a fee. However the merchant does pay less for debit card usage because of the way the networks were first set up.
bgiles
+2  A: 

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 :)

Davy Landman
The magnetic strip makes sense.
Mike Wills
There are 3 tracks with information. When I checked my VISA card I saw that it had my card-number and my name. Don't remember what else there was.
some
Here is some information about Magnetic Cards (aka credit cards) http://en.wikipedia.org/wiki/Magnetic_stripe_card. Point-of-sale card readers almost always read track 1, or track 2, and sometimes both, in case one track is unreadable. The minimum cardholder account information needed to complete a transaction is present on both tracks. Authorization for a card is described here: http://en.wikipedia.org/wiki/Authorization_hold
Chris
A: 

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.

Just Jules
+2  A: 

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.

Beaner
From reading through your list it does appear that the actual number will determine how a credit card reader will treat the card unless the person using the card physically makes a determination.
Chris
+1  A: 

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;

Ollie