Stripe Connect · sub-$30K MRR

Stripe's default dunning is built for everyone. DunDial is built for you.

Generic retry-after-3-days logic recovers some revenue. Per-decline-code retry scheduling, tuned email cadence, and a customer-facing update portal recover more. DunDial gives sub-$30K-MRR SaaS the dunning controls that enterprise tools charge five figures for — as a Stripe Apps Dashboard embed.

Stripe Connect OAuth · Read-write on connected accounts · Embedded in your Stripe Dashboard

Recovery mode
Per-code tuning
Dashboard
Stripe App embed
Retries
Scheduled
Customer portal
Active
How it works

Four steps from invoice failure to recovered revenue.

Connect once via Stripe OAuth. DunDial intercepts failed invoices, classifies the decline code, applies your retry rules, and notifies customers — all from inside the Stripe Dashboard.

/01

Connect via Stripe OAuth

DunDial connects to your Stripe account using Stripe Connect Standard OAuth. It receives failed invoice webhooks on your behalf and bills its own subscription separately via Stripe Billing.

/02

Decline code classified, rule applied

Every failed invoice arrives via webhook. DunDial classifies the decline code — insufficient funds, expired card, do_not_honor, and more — and applies the retry schedule you've configured for that code. Aggressive retries on retryable declines; no retries on codes that signal a hard block.

/03

Dunning emails fire on your cadence

DunDial sends dunning emails on the schedule you set — not Stripe's default. You control the timing, the number of emails, and whether a customer update portal link is included before a retry attempt.

/04

Review everything in the Stripe Dashboard embed

The DunDial Stripe App embeds in your existing Stripe Dashboard — visible from the invoice list and invoice detail views. See retry status, scheduled attempts, and pending customer portal sessions without leaving Stripe.

What you get

Five dunning controls built for sub-$30K-MRR SaaS.

Retry logic

Per-decline-code retry scheduling

Configure retry timing and attempt count per Stripe decline code. insufficient_funds gets a payday-aware gap. do_not_honor gets no retry at all. Every decline code has a sensible default; you override where it matters.

Email cadence

Dunning email cadence control

Set how many emails fire, when they fire relative to each retry attempt, and whether a customer update portal link is included. Stop the default Stripe cadence from burning your customer relationship before a payment succeeds.

Customer portal

Customer Update Portal

DunDial generates a secure, branded portal link your customers use to update their payment method before the next retry attempt. The portal is linked from dunning emails automatically — no engineering required.

Dashboard embed

Stripe Apps Dashboard embed

DunDial is a Stripe App — it appears as an embedded panel in your Stripe Dashboard invoice list and invoice detail views. Retry status, scheduled attempts, and portal sessions are visible without leaving your Stripe workspace.

90-day re-consent

Sensitive-scope consent management

DunDial uses read_write scope on connected accounts. Re-consent is required every 90 days — DunDial manages the warning and grace period automatically, pausing retries cleanly if consent lapses.

Isolation

Tenant-isolated. Your data is yours.

Every DunDial tenant's retry queue, schedule, and audit log is isolated at the database level via row-level security. Your connected Stripe account credentials are encrypted at rest. No other DunDial customer sees your data.

Pricing

Priced for the stage you're at.

Simple flat-rate pricing. No per-recovered-invoice percentage, no surprise overage. Pay the same whether you recover one invoice or one hundred.

Starter
$0 / month

One Stripe account. Default retry rules. See if it fits your workflow.

  • 1 connected Stripe account
  • Default per-decline-code retry rules
  • Dunning email cadence (email only)
  • Customer Update Portal
  • Stripe Apps Dashboard embed
  • Community support
Start Free
Security & reliability

Two webhook routes. One hard rule: they must differ.

Idempotent retry engine

Every retry attempt is keyed on the Stripe event ID. If a webhook delivers twice, DunDial records the attempt once. No duplicate charges, no double retries — idempotency is enforced at the database level.

HMAC-verified embed

The Stripe Apps Dashboard embed uses HMAC-SHA256 verification with a 5-minute replay window. Primary and previous secrets are supported for zero-downtime rotation every 24 hours.

Tenant isolation

Row-level security enforced at the database level. Your Stripe OAuth credentials, retry schedules, and invoice history are isolated — not just filtered at the application layer.

Questions

Straight answers.

Something not answered here? Email us directly.

DunDial does not own payment capture or subscription billing logic. It retries failed invoices and updates subscriptions on your connected Stripe accounts via OAuth. The actual charge is made by Stripe against your customer's payment method — DunDial controls the timing and rules, not the transaction.

Stop retrying every decline code the same way.

Connect your Stripe account now and configure your first per-decline-code retry rule. DunDial starts intercepting failed invoices immediately — the Stripe Dashboard embed is live within minutes.

Free plan · No card required · Cancel anytime

Connect Stripe View privacy policy
Join the waitlist

Not ready to connect yet?

Leave your email and we'll notify you when new features ship and when a slot opens up.

No spam. Unsubscribe anytime.