Stripe · Decline codes
What does the Stripe duplicate_transaction decline code mean?
Checked
Stripe's duplicate_transaction decline code means a transaction with an identical amount and card information was submitted very recently. It protects the customer from being charged twice, for example after a double click or a page refresh. Stripe's advice is to check whether a recent payment already exists. If the first payment succeeded, the order is paid and nothing more is needed; if it did not, wait a moment before a genuine new attempt.
- Type
- Not a funds or card problem
- Who declined
- Flagged as a repeat of a very recent payment
- Retry
- No, until you have checked the earlier payment
- Shopper action
- Check your bank app or email for the first payment before paying again
- Merchant action
- Look for a recent matching payment first
What PlatformDTC does
PlatformDTC's checkout treats duplicate_transaction as never-retry and does not send it to a backup processor, which would risk exactly the double charge the code prevents. On renewals it usually means a second subscription on the same card was billed minutes earlier, so with Smart retry on it gets one retry 48 to 72 hours later, no longer "recent"; a second refusal asks the customer for a new payment method.
Why it happens
The same card and amount reached the bank twice within a short time: a double-tapped pay button, a refreshed confirmation page, or an integration that sent the same charge twice.
What the shopper can do
Before paying again, check whether the first payment went through. A pending charge in your banking app or an order confirmation email means you are already done.
What the store can do
Find the earlier payment in your dashboard. If it succeeded, fulfil that order. If your checkout regularly creates repeats, disable the pay button after the first tap.
Frequently asked questions
- Was the customer charged twice?
- Usually not. This decline stops the second, identical attempt. Check whether the first one succeeded.
- Can I just charge again?
- Only after confirming the earlier payment failed. Otherwise you may create the duplicate charge this code exists to prevent.
Sources
- Stripe decline codes — Stripe
Related
- processing_error — An error occurred while processing the card. Usually temporary.
- reenter_transaction — The bank couldn't process the payment for an unknown reason; try it again.
- invalid_amount — The payment amount is invalid or above what the card allows.
- expired_card — The card is past its expiry date.
- fraudulent — Stripe's fraud checks suspected the payment was fraudulent and blocked it.
- generic_decline — Declined for an unknown reason, or blocked by Stripe Radar or Adaptive Acceptance.
- incorrect_address — The billing address entered doesn't match the bank's records.
- incorrect_cvc — The card's security code (CVC) is wrong.