Based on ANSI X4.13, the LUHN formula (also known as the modulus 10, or mod 10, algorithm) is used to generate and/or validate and verify the accuracy of credit-card numbers.
Credit Card Check Digit
Most credit cards contain a check digit, which is the digit at the end of the credit card number. The first part of the credit-card number identifies the type of credit card (Visa, MasterCard, American Express, etc.), and the middle digits identify the bank and customer.
To generate the check digit, the LUHN formula is applied to the number. To validate the credit-card number, the check digit is figured into the formula.
Here’s how the algorithm works for verifying credit cards; the math is quite simple:
1) Starting with the second to last digit and moving left, double the value of all the alternating digits.
2) Starting from the left, take all the unaffected digits and add them to the results of all the individual digits from step 1. If the results from any of the numbers from step 1 are double digits, make sure to add the two numbers first (i.e. 18 would yield 1+8). Basically, your equation will look like a regular addition problem that adds every single digit.
3) The total from step 2 must end in zero for the credit-card number to be valid.
The LUHN formula was created in the late 1960s by a group of mathematicians. Shortly thereafter, credit card companies adopted it. Because the algorithm is in the public domain, it can be used by anyone.
The LUHN formula is also used to check Canadian Social Insurance Number (SIN) validity. In fact, the LUHN formula is widely used to generate the check digits of many different primary account numbers. Almost all institutions that create and require unique account or identification numbers use the Mod 10 algorithm.