← All Stripe decline codes

Stripe decline code

duplicate_transaction

The issuer detected what appears to be a duplicate of a recent transaction.

Type

Soft decline

Recoverable

Recoverable

Frequency

Rare

What does duplicate_transaction mean?

duplicate_transaction is returned when the card network sees a second identical charge attempt within a short window. This is usually the result of a missing idempotency key or a retry without backoff in your integration.

Recovery strategy

Retry approach

Do not retry the exact same charge. If you genuinely need to charge again (e.g., a new subscription period), make sure the amount, currency, or idempotency key is different.

Customer message

No outreach needed in most cases. Debug your integration first.

Best practices

  • Always use idempotency keys on write API calls
  • Implement exponential backoff on retries
  • Log duplicate_transaction occurrences as integration bugs

About soft declines

Temporary issue. The card is still valid. High recovery rate with proper retry timing.

Frequently asked questions

How do I use idempotency keys?

Pass an Idempotency-Key header with a unique value (e.g., a UUID) on every charge request. Stripe will return the same response for duplicate requests, preventing duplicate charges.

How Rebounce handles duplicate_transaction

Automatic soft decline handling, no code required

Rebounce classifies every failed payment by its Stripe decline code and applies the optimal recovery strategy automatically. For duplicate_transaction, that means intelligent retries at the right times. Multi-channel follow-up through email, SMS, WhatsApp, and in-app banners ensures the customer actually sees the message.

Start free trial