← Decline Codes
Soft Decline

Stripe Decline Code · Glossary

try_again_later

try_again_later is a temporary, time-bound soft decline — the issuing bank or card network is not rejecting the transaction on any structural grounds but is signaling that it cannot process the request right now due to a transient system condition.

Recoverable·65–80%·Updated May 2026

What It Means

What try_again_later actually means.

try_again_later is a temporary, time-bound soft decline — the issuing bank or card network is not rejecting the transaction on any structural grounds but is signaling that it cannot process the request right now due to a transient system condition. The card is valid, the account may be funded, and there is no policy block — the bank is essentially saying "the plumbing is temporarily unavailable, come back shortly." It is one of the most recoverable codes in Stripe's taxonomy precisely because the cause is environmental, not cardholder- or card-specific.

Not sure if this code is recoverable for your specific situation? Use the Stripe Failure Lookup →

Why It Happens

The root causes.

  • 1Issuer system temporarily unavailableThe bank's authorization system is experiencing downtime, maintenance, or high load — transaction processing requests are being deferred rather than rejected outright; the bank will accept the charge once its systems recover
  • 2Card network processing delayVisa, Mastercard, or a regional network is experiencing a routing or processing backlog — the authorization request could not be completed within the network's processing window and was returned as a deferred decline
  • 3Bank-side batch processing windowSome issuers run maintenance or batch reconciliation windows during off-peak hours and temporarily suspend real-time transaction authorization — charges hitting during this window return try_again_later until the window closes
  • 4Temporary risk or velocity hold at issuerThe bank's fraud or risk engine has placed a short-duration hold on authorization processing for this account — not a permanent flag, not a velocity ceiling, but a transient hold that expires automatically within hours
  • 5Acquirer or processor routing issueA temporary failure in the payment processing chain between Stripe's acquirer and the issuing bank — the request couldn't complete due to a mid-chain timeout rather than an issuer decision

What NOT to Do

Common mistakes that make it worse.

Don't treat it as a hard decline and trigger a payment method switch email

try_again_later is purely transient — the card is fine, the account is fine, and the customer has done nothing wrong. Sending a "your payment failed, please update your card" email over a bank system hiccup creates unnecessary alarm, drives unnecessary card update abandonment, and misattributes a system issue as a cardholder problem.

Don't retry immediately or within the same hour

The transient condition that triggered try_again_later needs time to resolve. Retrying within minutes produces the same decline — the issuer system is still unavailable. Rapid same-window retries also risk being misclassified as velocity behavior by the bank's fraud engine, escalating a soft system hold into a harder fraud flag.

Don't notify the customer on the first occurrence

try_again_later has the highest silent-retry success rate of any decline code in the taxonomy. The majority of occurrences resolve on the first correctly timed silent retry with zero customer awareness. Firing a customer-facing email before the first retry attempt is unnecessary customer friction and support ticket generation for a problem that very likely self-resolves in hours.

Retry Timing

Optimal retry schedule.

try_again_later is a silent retry-first code — customer outreach is a fallback, not a first response.

Recovery Benchmark

What good looks like.

MetricResult
Overall recovery rate65–80%
Recovery on Silent Retry 1 (3–6 hrs)50–60% of all occurrences
Recovery on Silent Retry 2 (24 hrs)+15–20% additional recovery
Recovery on Silent Retry 3 (72 hrs)+5–8% additional recovery
Recovery requiring customer action~10–15% of total occurrences
Recovery with immediate retry15–20% (hits same system window)
Recovery with correct exponential retry spacing70–80% combined

A 75%+ recovery rate is the benchmark for teams using correctly spaced exponential retry logic. The biggest gap between average and high-performing dunning systems shows most clearly on try_again_later — flat retry schedulers that fire every 24 hours miss the critical 3-hour first retry window entirely and underperform by 20–30 percentage points versus exponential spacing.

At Scale

How to handle it at scale.

Automated

  • Webhook trigger: invoice.payment_failed → check failure_code === 'try_again_later' → route to soft-decline-silent-retry track — completely isolated from hard decline and customer-contact-required workflows
  • Exponential retry scheduler: Configure your retry engine with try_again_later-specific timing: Retry 1 at +3 hours, Retry 2 at +24 hours, Retry 3 at +72 hours — do not use your standard flat dunning schedule for this code
  • Zero customer notification on first 3 retries: Suppress all customer-facing emails, in-app banners, and notifications until all three silent retries have been attempted — this is the single most impactful configuration for this specific code
  • Retry success silent close: If any silent retry succeeds, mark the invoice as paid and close the event with no customer notification — the customer never needs to know the payment had a transient issue
  • Customer email gate — Day 3 only: Trigger the first customer-facing email only after Retries 1, 2, and 3 have all failed — and even then, frame it as a heads-up with an automatic retry in progress, not a payment failure requiring urgent action
  • Alternate method — Day 5: Introduce payment method alternatives alongside the Day 5 retry — not as an urgent demand but as a convenience option for customers who want to ensure continuity

Manual Escalation

  • High-ACV accounts that reach Day 5 without resolution: Personal outreach with calm, reassuring framing — "We've had a temporary issue processing your payment — our system is retrying automatically. If you'd like to manually update your payment method to avoid any further delays, here's a direct link." — converts 25–30% of high-value accounts that reach the manual escalation stage
  • Spike monitoring: If try_again_later failures spike across multiple customers simultaneously — especially from the same issuer or card network — treat it as an infrastructure event affecting that bank and schedule a batch retry for the entire cohort once the outage resolves rather than retrying each individually
  • Annual plan customers: A try_again_later on an annual renewal is worth a personal email even on Day 1 — framed as informational, not alarming — to preserve the customer relationship and ensure they're aware the payment is being retried automatically; high-value customers appreciate proactive communication

FAQs

Frequently asked questions.

What does the Stripe try_again_later decline code mean?

try_again_later means the issuing bank or card network cannot process the transaction right now due to a transient system condition — not a policy block, not a funds issue, not a card problem. The bank is deferring authorization temporarily. It is one of the most recoverable decline codes in Stripe's taxonomy, resolving on a correctly timed silent retry in the majority of cases.

What are the most common causes of a try_again_later error in Stripe?

Common causes include the issuer's authorization system being temporarily unavailable due to maintenance or high load, a card network processing delay or routing backlog, a bank-side batch processing or maintenance window, a short-duration transient risk hold at the issuer, and temporary acquirer-to-issuer routing failures in the payment processing chain.

Should I retry a payment after a try_again_later decline?

Yes — this is one of the few codes where silent retries are the primary recovery strategy. Schedule the first retry at 3–6 hours after the failure to catch bank maintenance window resolutions. Follow with a second retry at 24 hours and a third at 72 hours. Use exponential retry spacing rather than flat daily intervals — the 3-hour first retry alone captures 50–60% of all resolutions.

Should I notify my customer when Stripe returns try_again_later?

Not until all three silent retries have failed. try_again_later has the highest silent recovery rate of any decline code — most occurrences resolve in the background before the customer ever needs to be involved. Sending a payment failure email before attempting silent retries creates unnecessary customer alarm and support volume for a problem that typically self-resolves within hours.

What is the recovery rate for Stripe try_again_later failures?

Overall recovery rates are 65–80% with correctly spaced exponential retry logic. The first 3–6 hour silent retry alone resolves 50–60% of all occurrences. Adding a 24-hour retry recovers an additional 15–20%. Teams using flat daily retry schedules miss the critical 3-hour window and underperform by 20–30 percentage points compared to exponential retry spacing.

Before you retry

Most try_again_later failures are retried on the wrong schedule — which recovers the payment about 30% of the time. The other 70% leaves permanently. See what this code is actually costing at your MRR before deciding how to handle it.

See what try_again_later costs me →

Stop leaving revenue on the table

try_again_later is recoverable. Most teams don't have the retry logic to prove it.

Recurflux handles code-specific retry scheduling, adaptive dunning, and dispute intelligence across all 30 Stripe decline codes. Connect in under 5 minutes.