I have searched and come up with answers on this but they are old, and/or don't seem quite right for what I'm doing, although it is a common scenario:
The customer enters an order, along with their card information, and we authorize for the full amount of the order. We do not capture (yet).
Some time later (1-3 days), we pack the order and ship it. At that time, we capture the previously authorized transaction. That works fine.
I should mention that we use Accept.js for our credit card form so that (for now) we don't handle the card account number to our server at all, only the opaqueData. We use the official python api server side to do the authorization and later to do the capture.
What does not work fine is, if we pack the order and discover at that time that we don't have some items in stock, then we need to send multiple shipments. In that case, we only want to capture the amount for the items we are actually shipping. We cannot do this because, as I understand it, you can only capture an authorization once.
Some posts suggest creating a user profile, and linking the transactions to that. I understand that then I could use an api call to get a list of transactions in the profile, and capture the ones I want. But this is not helpful if I don't know in advance how many transactions to authorize.
And, we can't create an additional authorization on the fly because we don't have the account number from the card, the way we have things set up right now, we never see that much less store it. But I'm open to making changes to how we do things to get this to work.
What's the correct way to handle this?
Thanks
Ben
07-28-2021 04:44 PM
Thank you for the reply Dominique, but in my case the customer has already chosen just one shipping destination and method for the entire order, and now.. after the card has been authorized and the order sent to the warehouse.. then it is discovered that two shipments must be sent. One now, and one in a week or two. The total charge for the order does not change. I just wish to only capture the amount we are actually shipping today and then capture the remainder when the remaining products are sent.
I understand that a single authorization can only be captured once.
But, this being a pretty common problem.. there must be some way to work around it??
Thanks
Ben
07-29-2021 07:51 AM
Anyone? Please?
Thanks
Ben
08-03-2021 09:15 AM
That is not the problem I am trying to solve.
I am trying to ship a single order, to a single address.
And it was planned to send the order in one shipment, so it was authorized as one charge.
But, part of the order is later discovered to be out-of-stock.
So, I want to ship part of the order now.. and capture that part of the payment.
Then ship the remainder later, and capture that part later as well.
I know I can't capture the same authorization id more than once.
So, what should I do to solve this problem?
Thanks
08-07-2021 11:15 AM
@skylight paycards wrote:
I have searched and come up with answers on this but they are old, and/or don't seem quite right for what I'm doing, although it is a common scenario:
The customer enters an order, along with their card information, and we authorize for the full amount of the order. We do not capture (yet).
Some time later (1-3 days), we pack the order and ship it. At that time, we capture the previously authorized transaction. That works fine.
I should mention that we use Accept.js for our credit card form so that (for now) we don't handle the card account number to our server at all, only the opaqueData. We use the official python api server side to do the authorization and later to do the capture.
What does not work fine is, if we pack the order and discover at that time that we don't have some items in stock, then we need to send multiple shipments. In that case, we only want to capture the amount for the items we are actually shipping. We cannot do this because, as I understand it, you can only capture an authorization once.
Some posts suggest creating a user profile, and linking the transactions to that. I understand that then I could use an api call to get a list of transactions in the profile, and capture the ones I want. But this is not helpful if I don't know in advance how many transactions to authorize.
And, we can't create an additional authorization on the fly because we don't have the account number from the card, the way we have things set up right now, we never see that much less store it. But I'm open to making changes to how we do things to get this to work.
What's the correct way to handle this?
Thanks
Ben
You can't combine items that come from different buildings, but you can see if they are in the same building when you get to the order checkout page. If the items split out into different shipments you can see that, and attempt to change the shipping option (slower) to see if it can merge shipments together. At some point though the cost of merging the shipments isn't worth it, or the items just aren't close enough together that they can be merged.
10-13-2021 10:14 PM