I'm hoping someone can help me with this issue. I have a situation where we allow customers to prepay via our website. When they prepay we authorize the amount of the order. Sometimes customers will come and change the order after they have prepaid for the original amount. I need to then do a second authorization for the new changes.
Original order is 100 widgets at $1 a piece for a total of $100. The customer then calls and says they need 150 widgets. I need to either
a) change the original authorization to $150 or
b) do a second authorization for $50
The issue I have is that we deal with larger customers and the accounting department is the one who pays the bills (prepays on the website) while the customer service department will change the order. So the customer service department doesn't have the credit card information to give me to perform a second authorization. I can't store the credit card information either.
So my question is, How do I perform a second authorization based off a previous authorization or change the original authorization amount?
The short answer to your direct question is that you cannot create a second authorization from a previous authorization.
What you can do instead ,assuming you have Customer Information Manager enabled within your account, is to create Customer Profiles for your customers which would allow you to charge them using the stored credentials as needed.
For example, one option would be to use the createCustomerProfileFromTransactionRequest to create a Customer Profile from an already existing transaction.
Another example would be to create the profile before the original authorization and subsequently submitting all authorization requests from the created profile.
We would strongly recommend that you build in a delay between the creation of the profile and the use of the profile to charge the customer however, to allow for replication of the newly created profile across our entire database network and ensure that no matter which database your transaction request hits it will be found for use. Additionally, you may not wish to create a profile for every customer, in which case the former example of creating a profile from an existing transaction may be better suited for your needs. Ultimately, the choice is yours on how to proceed in this regard.
Please feel free to use our API Reference Guide to test out these request types for more of a visual on how they may function for you in this regard.
I hope this information is helpful.