River
Y CombinatorBacked by Y Combinator
FREE TEMPLATE

Bad Debt Write-Off Policy Template

Four documents and five sheets that compute the reserve from your own recovery history, and score when to stop chasing.

Free download  ·  No account needed

A reserve set at a flat percentage of receivables is a guess with a number on it, and it is the first thing an auditor tests. Your own aging already holds the real answer. Of every dollar that sat in the 61 to 90 bucket at a month end, some share was never collected, and that share is measurable from history rather than assumed. This pack measures it per bucket, per year, net of everything that came back afterwards.

On the illustrative company in the sheets, three accounts with a dated event are reserved specifically for 60,060.00, and the roll rate on what is left produces 88,164.40. That is an allowance of 148,224.40 on receivables of 2,853,200.00, a blended 5.195 per cent. A flat 1.5 per cent would have given 42,798.00, which is 105,426.40 short of what this book's own history says it will lose. Blend by dollars, because the simple average of the six bucket rates reads 20.500 per cent and means nothing.

The other half is the single account. Four tests get scored before anything is written off: cost against the observed recovery rate for its band, documented contact attempts, a dated event, and age. Worthlessness turns on facts showing no reasonable expectation of repayment, and the Internal Revenue Code treats a partially worthless debt separately, limited to the part charged off in the year. Whether a balance is deductible belongs to your tax adviser. This space keeps the file, and the customer credit policy pack sets the limit that let the balance grow.

One quarter end, from three years of history to a reserve that ties

Loss Rate Derivation, Doubtful Accounts Reserve, Write-off Log, and the Recovery Tracker that keeps the rates from drifting.

Loss Rate Derivation

Ferrand Commercial Services, an illustrative company. Three complete fiscal years of month-end aging traced to final disposition.

BucketDollars observedGross written offRecoveredNet lossRatePer year
Current66,367,600.00264,200.0035,000.00229,200.000.345%0.315 / 0.348 / 0.368
1-3017,059,500.00213,700.0035,200.00178,500.001.046%1.024 / 1.030 / 1.081
31-606,864,600.00371,400.0056,700.00314,700.004.584%4.423 / 4.624 / 4.685
61-903,789,300.00588,400.0075,400.00513,000.0013.538%13.217 / 13.511 / 13.847
91-1202,245,000.00830,300.0079,700.00750,600.0033.434%32.690 / 33.307 / 34.217
120+2,895,400.002,152,600.00124,300.002,028,300.0070.052%69.665 / 69.949 / 70.502

The steepest step is 13.538 to 33.434 per cent, between 61-90 and 91-120. That is where the escalation belongs, which is why the day 60 call in this pack sits earlier than the day 90 most schedules use. The three per-year readings are what tell you a rate describes a population rather than an anecdote.

Doubtful Accounts Reserve

31 March 2026. Specifically identified accounts come out of their buckets before the roll rate runs, or they get reserved twice.

LayerAccount or bucketBalanceRateReserveBasis
SpecificBraddock Modular Homes38,400.000.9034,560.00Chapter 7 petition 18 Feb 2026, no unsecured distribution expected
SpecificTamsen Grocery Cooperative26,800.000.5013,400.00Mediation 22 Apr, customer accepts 50% in writing
SpecificRowan Auto Body12,100.001.0012,100.00Dissolved 9 Jan 2026, agent resigned, no successor
Specific subtotal3 accounts77,300.0060,060.00
Roll rateCurrent remainder1,842,600.000.345%6,363.41Derivation sheet
Roll rate1-30 remainder486,300.001.046%5,088.34Derivation sheet
Roll rate31-60 remainder214,750.004.584%9,844.98Derivation sheet
Roll rate61-90 remainder138,400.0013.538%18,736.76Derivation sheet
Roll rate91-120 remainder48,100.0033.434%16,081.9026,800.00 carved out first
Roll rate120+ remainder45,750.0070.052%32,049.0250,500.00 carved out first
Roll-rate subtotal6 buckets2,775,900.0088,164.40
Total allowance2,853,200.005.195%148,224.40Blended rate is an output
Flat 1.5% of AR2,853,200.001.500%42,798.00Understates this book by 105,426.40

The remainder of 2,775,900.00 plus the 77,300.00 carved out equals the 2,853,200.00 aging total, and no subtotal row is inside any sum. Both checks run before the figure is presented.

Write-off Log

Every write-off with the test it met, the approver from the authority table, and the file note. Eighteen months shown, twelve of them in the current fiscal year.

DateCustomerAmountReasonTest metApproved by
31 Mar 2026Braddock Modular Homes38,400.00Chapter 7 petition 18 Feb 2026SpecificCFO, audit committee
31 Mar 2026Rowan Auto Body12,100.00Dissolved, agent resignedSpecificCFO, audit committee
28 Feb 2026Kestrel Fabrication8,250.00Past 180 days, three attempts, two channelsAge and contactController and CFO
28 Feb 2026Marchetti Signage4,180.00Expected recovery below cost of pursuitCostController and CFO
31 Jan 2026Dunmore Freight21,600.00Judgment 11 Sep 2025, sheriff return of no assetsEventCFO, audit committee
31 Jan 2026Halloway Tile1,940.00Past 180 days, no promise keptAgeController
31 Dec 2025Verrell Interiors16,400.00Disconnected number, returned agentContact and ageController and CFO
30 Nov 2025Sable Hospitality Group47,800.00Chapter 11 converted to Chapter 7SpecificCFO, audit committee
31 Oct 2025Kinnard Electrical11,250.00Three attempts, two channels, 30 daysContactController and CFO
FY2026 to date12 accounts171,040.00Fiscal year begins 1 October

Two of these came partly back. Sable returned 6,200.00 in February and Kinnard 3,400.00 in January, which is why the recovery tracker is a sheet rather than a column.

Recovery Tracker

Every payment received after a write-off, with how it actually came back. Each one reduces the next derived rate.

ReceivedCustomerWritten offRecoveredDays outHow it came back
11 Feb 2026Sable Hospitality Group47,800.006,200.0073Chapter 7 trustee distribution to the unsecured class
08 Jan 2026Kinnard Electrical11,250.003,400.0069Customer resumed trading, paid a negotiated share
04 Dec 2025Camber Roofing3,280.001,150.0065Owner paid personally after a site visit
19 Nov 2025Delmarva Cabinetry9,840.009,840.00142Paid in full after refinancing, credit review reopened
22 Oct 2025Fennimore Interiors6,420.002,100.00144Agency remittance, 3,231.00 gross less a 35% fee
16 Sep 2025Orley Mechanical13,600.004,500.00139Settlement of a counterclaim, no admission
12 May 2025Kestrel Fabrication4,360.001,240.00132Owner paid after a lien threat on an unrelated job
08 Apr 2025Sandhill Excavating18,200.003,640.00129Agency remittance, 5,460.00 gross less a 20% fee
All 12 recoveries133,690.0043,220.0032.329% of the balances that came back at all

Kestrel Fabrication appears twice in this pack: recovered from in May 2025 and written off again in February 2026. That is a credit register question rather than a collections one, and the tracker is where it becomes visible.

What's in the pack

01

Loss Rate Derivation sheet

Every bucket, every fiscal year: dollars observed, gross written off, recovered after write-off, net loss and rate to three decimals. This is the workpaper an auditor re-performs.

02

Doubtful Accounts Reserve sheet

Both layers on one page with the flat-percentage contrast underneath. Carries the two checks that have to run first: buckets summing to the aging total, and carved balances excluded before the roll rate.

03

Write-off Log

Eighteen months of write-offs with the reason, which of the four tests it met, the approver from the authority table, and a file note. Declines to write off get a row too.

04

Recovery Tracker

Twelve recoveries with how each one actually came back: a trustee distribution, an owner paying personally, an agency remittance with the gross and the fee shown separately.

05

Escalation Path sheet

Nine stages from five days before the due date to the write-off journal, each with an owner, a channel, and the trigger it sets in the reserve or the credit register. A balance written off also stops being a forecast receipt, which is where the thirteen week cash forecast pack picks it up.

06

Write-off Policy

The two layers, the four stop-chasing tests, the approval thresholds by amount, and the three things an auditor asks for. Written so it can be tested against the sheets.

07

Loss Rate Derivation

Why rates are weighted by dollars rather than by invoice, why a bucket observation needs closed history, why recoveries net against the numerator, and the four events that force a re-derivation.

08

Escalation Path

The nine stages with the day 60 call placed on the steepest step in the rate table. Also the four tests scored in full, with what evidence each one actually needs.

09

Allowance Rollforward

The four-movement identity with the provision as a plug, a quarterly split so a shorter period can be tested, and the two reconciliations that have to tie before any of it means anything.

How to use it

  1. 1

    Take it blank, or seeded

    Download the empty Word and CSV files with no signup, or open the pack in River and hand it your aging snapshots and write-off history instead.

  2. 2

    Tie the population before anything else

    Accounts receivable per the aging has to equal accounts receivable per the trial balance. A correct rate on the wrong population is still wrong, and the break is usually a credit memo used to clear a bad balance.

  3. 3

    Derive the rates, then read them

    One rate per bucket per year, weighted by dollars, net of recovery. Three readings that sit close together describe a population. Three that are far apart describe nothing, and the honest answer is the most recent year.

  4. 4

    Carve out, then roll, then tie

    Specifically identified accounts leave their buckets first. The roll rate runs on the remainder. Then the rollforward closes: opening, provision, write-offs, recoveries.

Frequently asked questions

Is this template free?

Yes. Four Word documents and five CSV sheets download with no signup and no card. Edit with AI is the optional path for anyone who would rather hand River three years of aging exports than build the derivation by hand. The rest of the template library works the same way.

What format are the downloaded files?

Four Word documents and five CSV sheets in one zip, opening in Word or Google Docs and Excel or Sheets. Open Loss Rate Derivation first: it holds dollars observed, gross written off and recovered per bucket per fiscal year, which is the workpaper an auditor asks to re-perform.

What if I do not have three years of aging history?

Then the rates cannot be derived and the honest interim answer is a specific-identification layer only, with the roll-rate layer left blank and the window stated on the face of the calculation. Use the shortest complete window you have rather than filling the gap with a benchmark.

Why is the simple average of the bucket rates wrong?

Because it weights each bucket equally when the balances are nothing like equal. On the worked book the current bucket holds 64.6 per cent of receivables and the 120-plus bucket holds 3.4 per cent, so averaging the six rates gives 20.500 per cent against a dollar-weighted 5.195 per cent.

Does this tell me when I can take the tax deduction?

No, and it should not. The accounting allowance and the tax deduction run on different tests and reach different answers in the same period. Whether a specific balance is worthless, and whether it is deductible in whole or in part, is work for your tax adviser. This pack keeps the file that question gets answered from.

How is this different from working the aging?

This one decides when to stop. The AR collections pack ranks and chases what is still worth chasing, and the escalation path here picks up where that ends: four scored tests, a named approver by amount, and a reserve that already carries the balance.

What does Edit with AI actually do?

A free River account is created and this pack installs as a private workspace. The agent starts ready for your aging snapshots and write-off history, ties the population to the trial balance, derives a rate per bucket per year, and computes both layers. It fills nothing until you send something.

Reserve on your own history

Download the blank pack as Word and CSV files, or open it in River and let the agent derive a loss rate per bucket from three years of your own aging.

Edit with AI