views:

530

answers:

3

We have a physical product that is shipped every 2, 3, or 4 months depending upon customer preference. In between shipments the user may elect to modify their choices.

Before anyone suggests it - I'm pretty sure a recurring billing system (such as Paypal) is not suited to our needs. For two reasons a system like Paypal's does not seem to be ideal .

  • They only let you do monthly, quarterly, annually. Not every 2 or 3 months. [Paypal API document here]
  • We want the customer to be able to 'ship now' if they want their products early or later than the normal schedule.
  • Since its a physical product we cant split it to be a prorated monthly amount.

I think therefore we will have to rebill using the same mechanism as we do when the initial order is created - with the CC numebr and CVV2 code. But obviously we cant store the CVV2 code for PCI compliance!!

I recently came across 'BrainTrees' payment services - which allow you to create an initial transaction and retrieve a 'token' that represents that credit card number. That token is safe to store because it is useless to a thief. It helps minimize the work needed for PCI compliance.

I'm completely fine using BrainTree's solution. It seems to be perfect for what we need - yet it leaves me confused about Paypal's offering. How would I achieve what i am trying to do with any system other than BrainTree without having to store the CVV2 code ?

+3  A: 

It's been a while since I had to do something like this... and I have only used the Verisign Payflow API. You might want to check it out.

To the best of my memory, payment gateways strongly recommend against storage of card details.

The recommended mechanism is to use the reference number from the original transaction, and then to link the new transaction to it; it must be very similar to the way Brain Tree handles it.

Everyone
So i would store a masked CC number for future reference (so i can tell the user pay with card *************1234) - along with the reference number for the initial transaction. paypal payflow doesnt seem to make this choice an obvious one. do you know if there is a specific 'name' for this linking?
Simon_Weaver
I don't remember exactly; it's been several years. If you have the API, try Reference Transactions ( i tink )
Everyone
+2  A: 

Most gateways don't require the cvv to work. That code essentially means 'credit card present' and should not be used for recurring transactions.

Braintree seems like a pretty good option if you don't want the hassle of conforming to PCI (which I've had to do, not hard, but requires a fair bit of process to be created)

Luke Schafer
I'm just weary of using braintrees 'unique' features and relying on them if they don't really reduce our PCI compliance complexity. the answer from @everyone indicated that I can use a reference number from an original transaction. if this is true then I dont see braintree really offering anything special in this instance with their 'vault'
Simon_Weaver
We (Braintree) can significantly reduce your PCI compliance complexity by eliminating the transmission of credit card data from your environment. Our Transparent Redirect API ( http://www.braintreepaymentsolutions.com/credit-card-storage/tokenization ) allows you to retain control and branding in the checkout process without touching any credit card numbers.
dan-manges
+3  A: 

You may already know that the cvv2 is used in an avs/csc check that is done by taking the numerics from the customers address, the numerics from the post/zipcode and the numbers from the cvv2 and comparing them with known values held by the card issuer.

The result of the avs/csc check returns a three digit value which lets you know whether the address/cvv2 values match those held on file by the card issuer. The result of this check can then be used to help prevent fraudulent transactions.

Therefore a common way to tackle the issue of not being able to store the actual cvv2 code is instead to store the cvv2 result. This way you can be fairly confident that so long as the address hasnt been altered, the card is still valid. The only downside to this approach is that some acquiring banks deem that authorizations performed without a cvv2 check are insecure, and charge a higher interchange rate. You may need to discuss this with your acquirer to explain that only the first authorization is performed with cvv2 check, and subsequent ones are not.

All said though, you will find PCI compliance a lot easier if you instead use a service provider that allows you to hold token values rather than actual card numbers.

Another issue with recurring payments that I'm not sure if you've considered is the fact that over time cards will expire, be cancelled or re-issued. Visa and MasterCard both have a relatively new service called the Visa Account Updater or MasterCard Automatic Billing Updater to handle this. Its something you'd need to organise with your acquiring bank, or if you go the PSP route it will probably be handled automatically - but worth checking.

PaulG
apparently higher interchange rates are not charged if CVV2 code is absent - according to BrainTree : http://www.braintreepaymentsolutions.com/blog/cvv2-does-not-affect-credit-card-qualification-rates/
Simon_Weaver
Sounds good. Over here in Europe we do have some acquirers that alter the interchange rate. I've had discussions with Barclays about this for example.
PaulG
Here's how Barclays have worded it, its in the fine print! http://www.barclaycardbusiness.co.uk/existing_customers/accepting_cards/cv2_avs.html"Using these services is not mandatory, however by using this it will ensure that you do not incur additional charges for non-secure transactions for each item processed without the card security code"
PaulG

related questions