Skip to content
Stripe subscriptions

Recover failed payments, automatically. In your customer's language.

salvio runs smart retries and multilingual dunning for B2B SaaS on Stripe—so involuntary churn does not quietly eat your MRR.

Impact at a glance

$129B+
Global subscription leakage

~9%
Recurring charges at risk

~30% → 85–94%
Baseline vs specialised recovery

Sources we used for public figures on this page:

Stripe Connect

Stripe Connect docs

Data & GDPR

Privacy policy

Security

How salvio handles a failed charge

Failed payment
Classify decline
Retries & localised email
Recovered revenue

Everything between failure and recovery

Stripe tells you when something broke—salvio turns that into a controlled path: classify the decline, retry or message in the right language, and measure what actually came back. Below is how the six pieces fit together for B2B teams on subscriptions.

Intelligent retries

Not every failed charge should be hammered the same way. salvio maps Stripe decline codes to recoverable vs. action-needed vs. lost, then schedules invoice retries with sensible spacing for soft declines. Hard cases skip blind retries and go straight to the right customer message—so you neither waste API calls nor annoy people who cannot pay today.

Multilingual dunning

Recovery emails only work if they read naturally. EN, DE, and FR templates ship on day one, with locale resolved from customer metadata, billing country, or your workspace default—and we always store why that language was chosen. Every mail includes a calm path to update the card and a visible link to your own cancellation flow, not a dead end.

Stripe Connect–native

Your customers keep billing in their Stripe account: salvio connects via standard Connect OAuth and listens to the events that matter—invoice.payment_failed, invoice.paid, customer.source.expiring, and more. No duplicate product catalogue and no parallel payment processor; it is automation on top of what you already trust.

Webhook idempotency

Stripe retries webhooks, networks hiccup, and the same event can arrive twice. salvio stores each stripeEventId once, answers duplicates with HTTP 200, and never double-books a failure or sends a second dunning sequence for the same incident. That is table stakes for money-moving software—and for sleep.

Honest recovery metrics

A 90% recovery rate is meaningless if it counts fraud or stolen cards. salvio’s smart filtering keeps unrecoverable cases out of your active recovery rate and separates revenue actually saved from noise. Finance sees the same story the product tells: what was recoverable, what you won back, and how long it took.

Pre-dunning alerts

Many churn events are predictable: expiring cards before the renewal fails. When Stripe emits customer.source.expiring, salvio can prompt a light-touch card update (with portal links) before the invoice fails—fewer hard declines, fewer emergency tickets, and a better experience for good-faith subscribers.

Built for engineers

webhook → salvio
POST /api/stripe/webhook
Stripe-Signature: t=…,v1=…

{
  "type": "invoice.payment_failed",
  "data": {
    "object": {
      "id": "in_…",
      "customer": "cus_…",
      "amount_due": 9900,
      "currency": "usd"
    }
  }
}

// salvio: idempotent ingest, decline routing,
// EN/DE/FR dunning, metrics — no duplicate product catalog.

Simple plans when you are ready

View pricing