Back to sensacat

Home  /  Solutions

· SensaCat Team

Business Flow Monitoring: Subscription Billing and Dunning

Dunning is a sequence that can stall at any step, and a stall means a customer who was never told their card failed.

Renewal looks like a single event and is actually a chain: an invoice is raised, a payment is attempted, entitlement is updated, a receipt goes out. When the payment fails, a second and longer chain begins, and each link can break independently.

The happy path

# Event key Max gap from previous What a stall here means
1 invoice.created n/a (opens the flow) Nothing yet
2 payment.attempted 1 hour Billing run did not execute
3 payment.succeeded 10 minutes Gateway slow, or failed silently
4 entitlement.updated 2 minutes Paying customer locked out
5 receipt.sent 30 minutes Support queries, disputes later

Step 4 produces the fastest complaints in any subscription business. A customer whose payment succeeded and whose access was not restored contacts you within minutes, usually irritated.

Step 5 seems cosmetic and is not. Customers who never received a receipt are measurably more likely to dispute a charge they do not recognise on a statement, and a dispute costs far more than the email.

The dunning path, which is where it gets expensive

When step 3 fails, a different sequence starts and it runs over days rather than minutes. It is also the sequence nobody tests, because it only exercises when payments fail.

# Event key Max gap from previous What a stall here means
1 payment.failed opens the dunning flow Nothing yet
2 dunning.email.sent 1 hour Customer never told
3 retry.scheduled 2 hours No second attempt will happen
4 retry.attempted 4 days Retry silently skipped
5 resolved or access.restricted 14 days Unpaid account with full access

Step 2 stalling is the costly one and the hardest to see. The customer's card expired, your system knows, and the customer does not. They discover it when their access is cut, at which point the conversation is about your billing rather than their card.

Step 5 stalling is the silent revenue leak: an account that failed payment, exhausted retries, and never had access restricted. Nobody reports being given a product for free.

Instrumenting the failure path deliberately

The dunning chain rarely executes in testing, so it needs monitoring more than the happy path rather than less. Open the dunning flow instance at the moment of payment failure.

Recording the provider's message ID at step 2 matters. It converts a claim that you sent the email into evidence, which is what you need when a customer says they were never warned.

Audit entitlement independently

Flow monitoring catches a sequence that stalls. It does not catch drift that accumulated before you instrumented anything, and most established products have some.

Run a nightly comparison between billing status and granted access as a backstop. The two together cover different failures: the flow catches new breaks in minutes, the audit catches everything that broke before you were watching.

Choosing the gaps

Use your provider's actual retry schedule for the dunning steps rather than inventing one. If your processor retries on days 3, 5 and 7, a four-day limit between retries is correct and a one-day limit will alert constantly.

SensaCat tracks both chains per subscription, so a single customer stuck at the notification step is visible rather than averaged away. Start free.