Deterministic Dunning for
Failed Payments.
Arcli ingests Stripe failures, locks state, and runs recovery sequences with explicit suppression windows. Built for repeatable, audit-safe billing operations.
Limitation #1: Default Stripe Retries
Stripe is a world-class payment processor, but Smart Retries only reattempt a charge. Recovery requires messaging and state management when cards expire or are replaced.
Limitation #2: Generic Workflow Tools
Marketing automation platforms optimize for engagement throughput, not transactional correctness. Retry storms can lead to duplicate processing and overlapping emails.
What Revenue Recovery Actually Looks Like
Founders often underestimate the compounding damage of involuntary churn. For a SaaS company generating $80,000 MRR with a standard 3% involuntary churn rate:
- Monthly Leakage: -$2,400 MRR
- Annual Leakage: -$28,800 ARR
The Infrastructure ROI
Implementing reliable dunning infrastructure to recover just 35% of those failed payments restores:
Recovered without acquiring a single new customer.
The Arcli Dunning Pipeline
Financial automation requires strict state management. Arcli processes every Stripe failure logically with predictable transitions.
Resilient Webhook Ingestion
We catch the invoice.payment_failed webhook and apply an idempotency key to absorb retry storms safely.
The Grace Period Router
Instead of instantly locking the user out, Arcli shifts the tenant into a "Past Due" state while respecting suppression windows.
Deterministic Resolution
When the invoice.paid webhook arrives, the state clears and pending emails are removed from the queue.
Replace Webhook Hacks with State Safety
- 1. Webhook hits generic endpoint.
- 2. No state lock applied to event.
- 3. Stripe sends duplicate retry payload.
- 4. Worker processes payload twice.
- 5. Customer receives overlapping emails.
- 6. Engineering spends cycles debugging.
Arcli.handleWebhook(payload, {
event: "invoice.payment_failed",
idempotency_key: payload.id,
strategy: {
apply_lock: true,
state: "past_due",
dispatch: "dunning_flow_v2",
suppress_on: ["invoice.paid"]
}
}); // Designed for effectively-once execution.Pre-Dunning: Catching Failures Early
The best way to handle a failed payment is to prevent it entirely. Arcli listens to Stripe's customer.source.expiring webhooks to trigger risk-aware reminder flows 14 days before the card actually fails.
Exact Revenue Attribution
Arcli shows you exactly how much MRR was saved. We trace the pipeline directly from the initial dunning email to the final Stripe charge.
Stripe Dunning FAQ
Does Arcli replace Stripe Smart Retries?
Yes. Stripe Smart Retries silently ping the card using basic logic, but they do not orchestrate the customer communication required to actually get a user to update an expired card. Arcli replaces this with fully orchestrated recovery workflows.
How do you prevent sending an email if they just paid?
Arcli is architected to prevent race conditions. The moment an invoice.paid webhook is ingested, the system clears the internal lock and dynamically drops any pending dunning emails from the queue, strongly minimizing the risk of double-emailing.
Can we customize grace periods before cancellation?
Yes. The Grace Period Router allows you to hold a user in a "Past Due" state for a specific number of days, orchestrating warnings before finally dispatching a subscription_cancelled event to your primary database.
How hard is the Stripe integration?
It requires zero database migrations. You simply point a Stripe webhook endpoint to Arcli in the dashboard, map your tenant IDs, and the ingestion engine automatically begins tracking lifecycle billing events.