Decline code · Hard decline
Decline code 94: Duplicate Transaction
The issuer or processor detected that this transaction matches one it already received: same card, amount, merchant, and identifiers within the duplicate-checking window. Rather than risk charging the customer twice, it refused the second copy. The original transaction, whatever its status, is the one that counts.
Should you retry?
Do not retry as-is, because the duplicate check will keep matching. First reconcile the original: if it approved, no retry should ever happen; if it genuinely failed, submit a new transaction with fresh identifiers, which is a new attempt rather than a replay of the blocked one.
Why code 94 happens
- A timeout led your system to resubmit an authorization that had actually succeeded, creating an identical duplicate.
- Retry logic fired without changing the transaction identifiers, so the network saw a replay rather than a new attempt.
- The customer double-clicked the pay button and the checkout submitted twice.
- A batch of transactions was accidentally processed twice after a settlement error.
- Idempotency keys or system trace numbers were reused across genuinely different transactions.
What to do about it
- Before anything else, find the original transaction and check its status; the duplicate was declined precisely because a first copy exists, and it may have been approved.
- If the original succeeded, the customer is paid up and needs confirmation, not another charge attempt.
- Fix double-submission at the source: disable the pay button after click, use idempotency keys, and make timeout-driven resubmissions send proper retrieval or reversal requests instead of fresh copies.
- For legitimate repeated purchases, such as a customer intentionally buying the same item twice, ensure each carries unique transaction identifiers so it does not fingerprint as a replay.
Frequently asked questions
- Was my customer charged twice if I got a duplicate transaction decline?
- No, the decline prevented the second charge. But the first submission may have succeeded, so check the original transaction's status before doing anything else. If it approved, the order is paid.
- How do I stop duplicate transaction declines on my checkout?
- Prevent double submission with idempotency keys and a pay button that disables on click, and make sure retry logic assigns fresh transaction identifiers rather than replaying the exact original message. Timeout recovery should reverse the unknown transaction before submitting anew.
Related decline codes