Duplicate transaction checking prevents transaction requests from accidentally processing more than once. This can happen if a customer refreshes your checkout page or clicks a button that issues a new API request. While duplicate checking can help prevent repeat transactions from going through, we recommend talking with your developers to see if changes can be made to your form to reduce the likelihood of this occurring (e.g. disabling the Submit button after it’s clicked).
A transaction will be Gateway Rejected by our duplicate checking logic if the following general and payment method-specific conditions are met:
- Amount is the same
- Order ID is the same (if collected and if the transaction was not created by Braintree's recurring billing functionality)
- Subscription ID is the same (if the transaction was created by Braintree's recurring billing functionality)
- Previous transactions fall within the time window you specify in the Control Panel
- Previous transactions were successful (i.e. status = Authorized, Submitted for Settlement, Settling, Settled, or Voided)
- Android Pay or Apple Pay – DPAN is the same
- PayPal – payer email address is the same
- Credit card – number and expiration date are the same
Duplicate transaction checking is enabled by default with a 30-second window in both the sandbox and production environments. These settings can be updated or disabled by users with Account Admin privileges.
- Log into the Control Panel
- Navigate to Settings > Processing > Duplicate Transaction Checking
- Click Edit to adjust the time window or Enable/Disable to turn the feature on/off