Measurement / calculator / Free to use
Fixed-Window Payment Recovery Calculator
Compare invoice-count and amount-weighted recovery after the same observation window. Exclude immature invoices and reconcile on-time, late and unpaid balances.
Growthcraft Editorial · 2026-09-24. AI-assisted research and implementation. Examples are synthetic; Akshay's personal review is not claimed.
Enable JavaScript to change inputs in the interactive calculator. The complete formulas, default example and limitations are available below.
One invoice, one window, one currency
The input represents a complete failed-invoice cohort, not a list of payment attempts. Freeze the outstanding balance at the first qualifying failure. Use one currency with 100 minor units per whole unit. The model assumes full settlement or no settlement; preprocess or reject partial payments, credits, write-offs and disputed/refunded settlements under a separately documented policy.
Formulas and accounting boundaries
Let W be the observation window, a the age at extraction and r the elapsed days until confirmed full settlement. An invoice is mature when a ≥ W. It is recovered within the window when mature and 0 ≤ r ≤ W. If r > W, it is late. If no settlement exists at cutoff, use the explicit - marker. A blank is not evidence of nonpayment and fails validation.
Invoice recovery = recovered mature invoice count / mature invoice count. Amount-weighted recovery = frozen balance of recovered mature invoices / frozen balance of all mature invoices. Mature count = within-window + late + unpaid; the corresponding balances must also sum. No mature invoices means undefined rates, not 0%. All immature invoices are excluded, including those already paid.
Reproduce the synthetic example
Keep W at 30. A/B/C/D are 35 days old and total 1,000 currency units. Only A (100) and B (200) settle by day 30. C (100) remains unpaid and D (600) settles on day 32. E (100) settles early but is only 10 days old. The result is 50% invoice recovery and 30% amount recovery, with late 600, unpaid 100 and immature 100. Reset restores this fixture.
Input and export contract
Use 1–1,000 unique anonymised invoice IDs. Amounts must be positive, at most one billion each and have at most two decimals. The calculator sums integer minor units. Age and settlement time are nonnegative elapsed 24-hour days; decimals are accepted and recovery cannot follow the cutoff. Ages are capped at 3,650 days and W is an integer 1–365. Do not round a timestamp across a boundary. Use the article's UTC conversion example and test invoices exactly at W.
Missing fields, duplicate IDs, scientific notation, unsupported CSV quoting and non-finite values are rejected. JSON exports aggregate counts, amounts in minor units and your scope, not invoice IDs. Editing any input clears stale results. Inputs remain in this browser session and are not submitted to an LLM.
How to use the result
Read the two rates together: a large late invoice can depress the money rate while most small invoices recover. Compare only like cohorts at the same age. The tool cannot verify missing invoices, source timestamps or whether a settlement was later reversed. Recovery is descriptive, not incremental lift, retained customers, MRR, recognized revenue or contribution profit. No statistical uncertainty interval is supplied.
Sources and boundaries
Primary documentation checked 24 September 2026: Stripe payment retries explains that scheduled attempts and executed charges can differ; Paddle Payment Recovery describes a default 30-day dunning period. Neither source validates this original cross-provider measurement convention or guarantees a recovery rate. Dates of these living pages are not stated. Check your actual account configuration.