LogoRouterDocs

Payment failures

Stripe retry windows, graceful access policies, and when LogoRouter subscriptions end.

This mirrors the playbook popularised by billing platforms such as Commet (“Payment Failures”), adapted for Stripe + LogoRouter.

TL;DR

Card decline or payment failure occurs
→ Customer typically keeps LogoRouter entitlement during Stripe’s retry window
→ Stripe retries according to Smart Retries / your account settings
→ All retries exhausted & invoice left open
→ Subscription becomes terminal → Neon plan downgrades → Worker limits tighten

No surprise hard-off on the first decline unless fraud or mandate requires it — Stripe’s invoicing primitives give multiple chances to recover revenue while customers stay productive.

What your team experiences

StageProduct accessWhat’s happening
Invoice open after first declineGenerally still activeStripe schedules automatic retries (invoice.payment_* hooks)
During Smart Retry windowStill activeCustomer can update PM in Stripe Customer Portal / email links
Retries exhausted + subscription canceled / past_due terminalEscalating loss of entitlementPostgres reflects new tier; KV cache expires; Worker may emit 402/429 style errors

Stripe is the canonical clock — LogoRouter observes webhooks rather than guessing card status.

Encourage admins to bookmark the Stripe Customer Portal baked into /dashboard/billing. Updating a saved card resolves most soft declines without support tickets.

Trials ending into a failed invoice

Trials behave like deferred first invoices. See Trials — if renewal fails immediately after trial, Stripe still schedules retries LogoRouter honours until terminal failure.

Deleting a billing profile

Deleting a Stripe customer via dashboard cancels subscriptions immediately. Access revocation is synchronous with webhook ingestion — do not expect a grace window after manual deletion because there is nothing left to bill.

Operator checklist

  1. Inspect Stripe balance summary vs Radar friction (3DS, issuer decline codes).
  2. Pull recent invoice.payment_failed payloads in Stripe test mode replay.
  3. Verify Neon billing_plans row still matches Stripe price IDs after SKU changes.

On this page