I have one production merchant who continues to complain to me that their clients are getting double-charged.
I did some research...
Our system only shows a record of one approved transaction.
However, when we check the MercuryView Portal reporting, we're seeing two distinct Approved Sales with two Authorization Codes. It appears that they came through moments apart. According to the cashier, the system returned an error so they tried to process the transaction again and received an Approval.
What can we do to prevent this type of problem from happening?
Thanks!
Greetings Fred,
Timeouts or other failures, while rare, are inevitable. When using the internet to process payments there's always a chance of a dropped packet or network latency that could impact the ability for the transaction to process properly.
The MercuryPay platform has built-in Duplicate Prevention Logic.
It's based on these three items:
In the event that your software sends out a transaction request but does not receive the expected Approved/Declined response, and instead you receive a timeout or other error, it's always a safe-bet to resend the transaction and to rely on our duplicate prevention logic to ensure that the cardholder isn't charged more than once for a specific Invoice.
The key is to ensure that you're not incrementing your InvoiceNumber when a timeout is received - instead, re-use that invoiceNumber and resend the transaction.
If you're using an API which insulates you from the sensitive card-data like dsiEMVUS, TranCloud, or HostedCheckout, you'll need to resend the transaction through and the card will need to be input again.
An asterisk is included in the transaction response for a transaction that's been caught by our duplicate prevention logic.
The Approval response of AP* will be returned - this indicates that we did receive both the first and second transaction requests - however, we will ensure that the cardholder is only charged once.
And, your software now has the Approval data that you need for your internal POS records and reports.
Part of this is also merchant training.
Make sure that they know that the transaction should be resubmitted and most importantly the same card should be used.
They should avoid letting the cardholder use a different card, or to pay using a different form or payment, like cash.
Additional information is available within the MercuryPay 2020 Platform API and Integration Guide.
I'd be happy to discuss this with you further if you'd like! Reply here and we'll set something up.
- paulblick