Revtain does not send customer-facing emails or SMS. Customers trust messages from the merchant they signed up with. Deliverability and brand-trust both win when the message comes from your domain rather than a recovery vendor.
Using a billing platform? Zero dunning code.
Clients on Chargebee, Stripe Billing, Recurly, Braintree Subscriptions, Zuora, or Shopify Recharge ship dunning with no extra integration. The connector receives recovery outcomes from Revtain and dispatches branded emails through the platform’s existing sender configuration — already pointed at your domain. Configure the connector webhook URL once during onboarding. Everything else runs through your billing platform’s own dunning engine, using the templates, schedule, and sender address you’ve already set up there.Direct-API clients: ship the handler once
Write a single webhook endpoint that listens forrecovery.failed and branches on the recommendedAction field. Because you own the customer relationship, you already hold the customer’s email — match the event back to your invoice (via revtainTransactionId, or the idempotencyKey you supplied to /execute) and send the message from your own infrastructure. Wire it once; every future failure runs through it.
recovery.failed does not contain the customer’s email address or a card-update link — by design. You know your own customer, and for the current direct-gateway model the customer updates their card in your billing portal or checkout, not on a Revtain-hosted page. Branch on recommendedAction to decide what to do.What happens end to end
Recovery engine exhausts retries
The payment ran through the available retry paths on the gateway that issued the original token. None succeeded.
Your webhook fires
recovery.failed arrives with the decline code, recommendedAction, and revtainTransactionId. You match it back to your invoice and customer.Your existing infrastructure delivers the message
When
recommendedAction is request_card_update, your handler emails the customer from your domain with a link into your billing portal / checkout to re-enter their card.Customer updates their payment method
They update their card where your other billing already lives. Pass the refreshed gateway token on your next
/execute call for that customer.Revtain also offers a fully hosted card-update page, but it requires Revtain’s secure vault integration. It is not active in the current direct-gateway launch model — that is why the flow above routes card updates through your own portal. If your account is provisioned with vault integration, the
card.updated webhook and POST /api/recovery/update-card/generate come into play; your onboarding contact will tell you if that applies to you.