Free Trials - Avoid Giving Out Your Credit Card Number

by hostileapostle

First of all, as a disclaimer, the following information is intended for informational purposes only.

While this information is already widely available to anyone who wishes to find it, please follow the golden rule and don't do anything you wouldn't want done to you.

I get really frustrated sometimes when a website advertises a limited "free trial" and then asks for my credit card information.  There is no good reason for them to have my credit card number if the free trial is really free.  Of course, their plan is to start billing you if you don't cancel within the trial period.  However, my opinion is that this is bad business practice, and I'm happy to circumvent it if I can.

Fortunately, some, if not most, of these web sites will not check to see if the number is real.  They will only check to see if it is valid.  Many of the readers here probably know that credit card numbers are generated using something a "Luhn check."

A Luhn check is a very simple algorithm which doubles the odd digits and does a sum to see if the number is divisible by 10.  The credit card companies actually use a slightly modified version of this algorithm that involves a check digit.  This is the very last digit of the credit card number.

With that said, here are the steps to produce a number that will pass the Luhn check on a 16-digit card number:

  1. Starting with the first digit, double every other number.
  2. If doubling a number results in a two-digit number, add those digits together to produce a single-digit number.
  3. Replace the odd digits with the new ones just created.  You should now have 16 numbers consisting of the new numbers and the original even numbers.
  4. Add up all sixteen numbers.
  5. Manipulate the check digit so that the sum is divisible by 10.

So, as an example, let's use a random number, say: 4264 1658 2275 1393

After doubling the odd digits and summing the ones that end up being two digits, we get: 8234 2618 4255 2393

The sum of these digits is 67, which is not divisible by 10.

So, to fix this, we change the check digit from 3 to 6.

Our valid number is now: 4264 1658 2275 1396

Whether that is really somebody's card number is anyone's guess.

One other thing I did here was I made sure the first digit was 4.

This identifies the number as a Visa number.  I don't know how picky the different websites are, but it's easy enough to include this digit.

Here are the numbers for the major credit card companies:

3 - American Express
4 - Visa
5 - MasterCard
6 - Discover

I used this method a while back to obtain a free trial from:

Of course, there's the small chance I could have just gotten lucky and found someone's real number, so I canceled before the trial period ended, just in case.

It would be a no-brainer to write a script to spit out millions of valid numbers, but if you need that many, I fear what you might be doing with them.

Hope this helps you get some free trials.