Guide
transaction_not_allowed on Stripe: the unknown-reason decline that stops retries
Last updated 13 August 2026 · written by Bruce McGinley, who builds RecoverFlow
An unknown reason, with a known consequence. Stripe's decline codes reference documents transaction_not_allowed the same way it documents do_not_honor: the card was declined for an unknown reason, and the customer needs to contact their card issuer for more information.
What sets it apart is the retry treatment. transaction_not_allowed is one of the nine codes in Stripe's Smart Retries documentation for which Stripe cannot automatically retry: scheduled retries continue, but the payment only executes once a new payment method is obtained.
On this page
The odd one out in the unknown-reason family
Stripe's reference has a family of codes sharing the exact description, declined for an unknown reason, and the exact next step, contact the issuer: do_not_honor, call_issuer, no_action_taken, security_violation, service_not_allowed, stop_payment_order and others. Our do_not_honor guide walks through that family.
transaction_not_allowed reads like a member of the family but is treated differently: of that whole group, it is the one that also appears on the nine code hard decline list. Where a do_not_honor gets retried on your schedule, a transaction_not_allowed does not execute again until a new payment method exists.
What the retry engine does with it
The Smart Retries documentation is specific about the mechanics for the nine codes: scheduled retries continue, attempt_count continues to increment, but retries only execute after detecting a new payment method, and unexecuted retries do not create a new charge.
Practically, the schedule is parked. Any recovery logic that reads a climbing attempt count as evidence of ongoing attempts will mislead you here, which is one more reason to branch on the decline code before branching on the count. The webhook guide covers that trap.
Handling: the email is the only active channel
Since no retry will execute, waiting recovers nothing. The two documented paths forward both run through the customer: they can contact their card issuer, which is Stripe's stated next step and the only way anyone learns the unknown reason, since issuers discuss the specifics of a decline only with their cardholders. Or they can add a different card, which requires no phone call and no explanation.
A good email offers both doors in plain words: the payment was declined by the bank, their bank can say why, and here is a link if they would rather just use another card. One message, no urgency theatre. The dunning email generator covers this code.
Questions people actually ask
Is transaction_not_allowed a hard decline?
Yes, in the sense that governs your Stripe account: it is one of the nine codes in Stripe's Smart Retries documentation for which Stripe cannot automatically retry the payment. Retries stay scheduled but only execute after a new payment method is added.
What does transaction_not_allowed mean?
Stripe's decline codes reference documents it as the card being declined for an unknown reason, with the customer needing to contact their card issuer for more information. The issuer did not give a machine-readable reason.
Why can only the customer find out the reason?
Stripe's card declines documentation explains that for privacy and security reasons, card issuers discuss the specifics of a decline only with their cardholders. You cannot get the answer on their behalf.
What is the difference between transaction_not_allowed and do_not_honor?
The documented description and next step are identical. The difference is retry treatment: transaction_not_allowed is on the nine code list that stops Stripe executing retries, and do_not_honor is not, so do_not_honor keeps being retried on your schedule.
Where this came from
Checked against primary sources on 13 August 2026. If Stripe changes something and this page has not caught up, tell us and it gets fixed.
- Stripe: Decline codes reference — the documented meaning and next steps for every code on this page.
- Stripe: Card declines — advice codes, retry limits, and Stripe's guidance on reducing declines.
- Stripe: Smart Retries — the source for the nine hard decline codes and what happens to scheduled retries after one.
If you would rather not build this yourself
RecoverFlow watches your Stripe account for failed subscription payments, stops retrying the ones that cannot succeed, and emails the customers whose card simply needs replacing. It charges 25% of what it can attribute to a specific action it took, with a $29 monthly floor and a $299 monthly ceiling, and the floor is waived for the first 30 days.
It is early. It is run by one person. If Stripe's own free retry settings are enough for you, use those instead, and there is a page on this site that says exactly when that is the right call.
See how the pricing works
Recover