I am building a checkout system using PHP and the authorize.net AIM integration guide... I will be listing products that have continuity, and thus will be re-billed each month. Thus, pre-paid cards will not work, I cant have the huge decline rate that will come from me trying to re-bill empty pre-paid visa / mastercard cards.. this is especially a problem after the holidays. I want to only accept real credit cards. Is there a method that will detect whether the credit card number fits into an algorithm unique to pre-paid cards?
No, your closest option would be to look at the leading 6 characters that identify the issuing company and have a list of companies that you want to exclude because they only issue prepaid cards. Some companies do both so it will be up to you if you accept all or exclude all of them (which could include both prepay and credit)
Something to think about, you might want to except credit cards that have at least 3months expiry date left, because not only are pre-paid cards going to give you problems, but you will also get people using pre-paid voucher credit cards, which are only valid for short period of time, I think in some cases they are only valid for 24hours.
I've always wondered how some companies are able to detect pre paid cards. Like someone stated earlier, I think it has something to do with the first 6 digits of the card. I don't know if there's any software available that can detect pre cards, at least I haven't heard of one.
SOLUTION! I have found a solution to this problem!! Authorize.net (our payment gateway), has an "authorize only" feature. On our order submission page, we can send the card in for authorization only and get immediate feedback. Authorize.net provides an array of responses, and there is a response field that is only present when a prepaid card is used. I can setup our checkout to see if this response field is present. If so, we can void the transaction on the spot and say "Sorry, we do not accept pre-paid cards. Please use a credit card.".. This requires sending a "void transaction" response back to authorize.net so that we done hold the customers funds in authorization state for 30 days until it expires. On the other hand, if the pre-paid card field is NOT present in authorize.net's response, this means that a pre-paid card has not been used and I can tell the checkout to go ahead and perform a "prior authorization and capture", which tells it to go ahead and capture the funds. And voila, no worries about not being able to do recurring billing PS. I am developing this checkout system from scratch using authorize.net's advanced integration guide so I am able to fine tune details such as this. This is probably not possible with "out of the box" or hosted checkout solutions.