Whether you're attempting to process a payment or issuing a refund, some times you'll see this response code of "Duplicate". Regardless of the error code, there's a few reasons as to why this may display, and it's mainly due to your settings within your payment gateway. In general though, all payment gateways follow this or a similar procedure when handling duplicate transactions. Authorize.Net gives the reason as to why this may display. If you're using a different processor, you'll need to log in to your specific payment gateway that'll have the steps provided to expand this window or remove this flag. It is recommended to keep this on though as this acts as a safety net procedure to protect both you and the customer from multiple charges/refunds on the same card.:
"The error message "Duplicate Transaction" indicates that a transaction request with the same information has been submitted within two minutes of a previous attempt. Authorize.Net looks for transactions which are likely to be duplicates by matching the data provided with the transaction.
The fields that are validated include:
API Login ID | login |
Credit Card Number | cardNumber |
Expiration Date | expirationDate |
Transaction Type | transactionType |
Bank Account Number | accountNumber |
Routing Number | routingNumber |
Purchase Order Number | poNumber |
Amount | amount |
Invoice Number | invoiceNumber |
Customer ID | id |
First Name | firstName |
Last Name | lastName |
Company | company |
Address | address |
City | city |
State | state |
Postal Code | zip |
Country | country |
Duplicate Window | duplicateWindow |
If any of the fields change from one transaction to the next, Authorize.Net will not view the transactions as duplicates.
The duplicate transaction window will always be two minutes for all transactions submitted through the Virtual Terminal. If you wish to adjust the duplicate transaction window for transactions submitted from your software, such as a website or shopping cart, you may do so by adding the field duplicateWindow to your website script.
If you are unable to adjust or add this variable to your shopping cart settings, please contact your shopping cart support team for additional assistance in this regard. The variable duplicateWindow tells us, in seconds, how much time we should check for duplicates after a transaction is submitted.
The largest value we will accept for duplicateWindow is 28800, which equals eight hours. If a value greater than 28800 sent, the payment gateway will default to 28800. If duplicateWindow is set to 0 or to a negative number, no duplicate transaction window will be enforced for your software's transactions. If no value is sent, the default value of 120 (two minutes) would be used.
For example, if you wished to set a duplicate transaction window of five minutes, you would set duplicateWindow to 300, as there are 300 seconds in five minutes.
Note: By submitting duplicateWindow with your online transactions, we will return further details along with this error response, including:
- The original transaction ID that was duplicated;
- AVS and CVV responses for the original transaction;
- The original authorization code, if the transaction was authorized;
- The MD5 hash, if a MD5 hash value was generated for the original transaction.
If you do not submit the duplicateWindow field, we will not return any details from the original transaction, even if you submit a duplicate transaction."