07 February 2007

I Want to Give You My Money

Enter your credit card number exactly as it is shown on the card. North South Bank. 7856 3456 8301 6734. Ms. J GREEN.   Card Number: 7856 3456 8301 6734   User Error! Enter card number exactly as it is shown on the card.

People are bad at remembering numbers, even for short periods of time. Mostly. The most that most people seem to able to remember reliably, even for a few seconds, is four digits. I thought everyone knew this. That's why we break up telephone numbers into blocks of two, three or four digits usually. And that's why the numbers on credit cards are broken up into groups of 4.

Let's suppose you have a customer who has decided he wants to pay you some money. In fact, let's suppose it's me. You present me with a form containing a box in which to enter my 16-digit credit card number. Remember, I want to pay you money.

Clearly the box should let me type in my credit card number, as it appears on the card, with spaces, in groups of four. Of course, it should also let me type it without spaces. In fact, it should completely ignore all whitespace (and probably dashes too), and provided I enter exactly 16 digits, and nothing else except whitespace, it should go and process the number. And if I typed something else, it should highlight the problem, minimally pointing out the field I got wrong on the form, and preferably telling me something helpful like "the credit card number you entered only had 14 digits". Or whatever.

Here are some of the ways you can lose my business with a very high probability.

  • Reject the number if I type spaces in it.
  • For double credit, complain without telling me that the whitespace is a problem.
  • For triple credit, don't even tell me that the credit card number was the problem field.
  • For quadruple credit, put some text by the box saying "Enter your credit card number exactly as it appears on the card."
  • Alternatively, specially cripple the form so that I can't even type whitespace into it. This will stop me entering the number with whitespace (so I have a chance of getting it right), checking that I did get it right (almost impossible without its being broken up), then deleting the whitespace while swearing profusely.
  • For half credit (you'll probably still get my business but I'll be swearing under my breath), actually force me to break up the number by giving me four separate boxes to type into. (Heart's in the right place, but too fiddly.)

I'm not the first person to notice this. See, among others, Jacob Nielson (9. Overly Restrictive Form Entry", The "No Dashes Or Spaces" Hall of Shame, Don't be a Sucky Webmaster, and Simson Garfinkel.

Occasionally, I complain to a company about this (usually on when my desire to give it money is overwhelming), and it staggers me how often I am told that it is too difficult to implement technically. Here is how hard it is to strip spaces in my language of the moment (python). If the number is stored in a variable called cardNumber, you have to say

cardNumber = cardNumber.replace (' ', '')

(Removing tabs and dashes or anything else is equally simple.) I admit it might take as many as half a dozen lines in some other languages, but not many. If your systems people tell you it can't be done, you need new systems people.

Remember, all I want to do is give you my money.

Labels: , ,