Transaction success rate is not enough
A recurring business can report a high payment success rate while staff still chase customers, unknown states pile up and finance spends days matching transactions. Measure the lifecycle around the transaction.
1. Paid-by-due-date rate
paid_by_due_date_rate = invoices_paid_by_due_date / invoices_due
Use the same due-in-period invoice cohort for numerator and denominator; measure partial payments separately.
This is the cleanest measure of how much revenue resolves before recovery starts.
2. Median time from due to paid
Measure the median and the distribution, not only the average. A business can eventually collect most invoices and still have a serious delay problem.
3. First-attempt completion rate
first_attempt_completion = invoices_paid_on_first_attempt / invoices_with_an_attempt
Break this down by payment method only when the sample size is large enough to be meaningful.
4. Recovery rate
recovery_rate = invoices_paid_after_entering_recovery / invoices_entering_recovery
This tells you whether dunning actually converts overdue invoices rather than merely generating messages.
5. Unknown-state rate
unknown_state_rate = attempts_entering_unknown / total_attempts
Unknown states block safe retry, create support work and raise duplicate-payment risk. A rising rate often deserves technical investigation.
6. Attempts per paid invoice
attempts_per_paid_invoice = total_attempts_on_paid_invoices / paid_invoices
One paid invoice after four attempts is operationally different from first-attempt success.
7. Reminder count per paid invoice
Track how much communication is required before payment. More reminders are not automatically better recovery.
8. Wallet-switch recovery rate
wallet_switch_recovery = invoices_paid_via_alternate_wallet_after_failed_primary / eligible_wallet_switch_cases
This tells a multi-wallet merchant whether the second wallet is creating measurable value.
9. Automatic payment-match rate
automatic_match_rate = successful_transactions_matched_automatically / successful_transactions
A low match rate exposes hidden finance work.
10. Paid-to-reconciled lag
Measure the time between confirmed customer payment and completed finance reconciliation. Customer state can be paid while finance work remains open.
11. Manual touches per invoice
Count staff actions such as payment lookup, screenshot review, manual reminder, account-reference correction and manual reconciliation. This is one of the best measures of operating cost.
12. Duplicate-payment incident rate
duplicate_incident_rate = invoices_with_more_than_one_success / paid_invoices
This should be close to zero. Every incident deserves root-cause review.
Add exception-age metrics
Count unresolved payments, unmatched transactions, duplicate successes and reconciliation mismatches, but also measure how long each exception remains open. A five-day-old exception is more important than one created five minutes ago.
Segment for diagnosis, not vanity
- Payment method or wallet.
- Provider route.
- Plan or product.
- Customer cohort.
- Country or market.
Avoid drawing conclusions from tiny samples.
KPI template
Companion Google Sheets KPI template: https://docs.google.com/spreadsheets/d/1a4IOwdkawD-QYc3xvbiqWrTq_fD6txkCtDmRpc7tllE/edit
Related guides: failed payment recovery, payment reconciliation, configurable dunning policy and multi-wallet collection.



