All posts
Functional5 min read

Provisioning for Bad Debts in Odoo Accounting

Create and manage bad debt provisions in Odoo - identifying aged receivables at risk, posting allowance entries, and writing off uncollectable invoices correctly.

Bad Debt Provisions in Odoo#

Not all receivables are collectable. Accounting standards require provisions for doubtful debts - recognizing the expected loss before it occurs. Odoo supports this through the aged receivables report and manual journal entries.

Identifying Doubtful Debts#

Accounting → Reporting → Aged Receivables:

  • Filter by overdue days: >90 days, >180 days, >365 days
  • High-risk indicators:

- Outstanding >90 days with no payment plan

- Customer in financial difficulty or legal dispute

- Repeated NSF (bounced cheques/payments)

Calculating the Provision#

Common provision rates:

Aging BucketProvision Rate
31–60 days overdue5%
61–90 days overdue10%
91–180 days overdue25%
181–365 days overdue50%
>365 days overdue100%

Calculate the provision: aged balance × rate = provision amount.

Posting the Provision Entry#

Accounting → Accounting → Journal Entries → New:

  • Date: period-end date (e.g., June 30)
  • Journal: Miscellaneous

Lines:

  • Debit: Bad Debt Expense (P&L account) - provision amount
  • Credit: Allowance for Doubtful Accounts (contra-AR account on Balance Sheet) - same amount

The Allowance for Doubtful Accounts reduces the net AR balance shown on the balance sheet without affecting the individual customer balances.

Reversing and Re-Estimating Each Period#

At each period end:

  1. Reverse the prior period provision entry
  2. Re-calculate the provision based on current aging
  3. Post the new provision entry

This approach ensures the provision always reflects the current risk estimate.

Writing Off Uncollectable Invoices#

When a debt is confirmed as uncollectable (customer bankrupt, legal judgment failed):

Accounting → Customers → Invoices → [Invoice] → Action → Write-off:

  • Account: Allowance for Doubtful Accounts
  • Date: write-off date

This moves the bad debt from AR to the Allowance account - no P&L impact (the expense was already recognized in the provision). The customer's balance is cleared.

Recovery After Write-Off#

If a customer pays after the write-off:

  1. Reverse the write-off → restore the AR balance
  2. Register the payment → clear the AR

The recovery is recognized as income in the current period (reversal of the prior write-off).

Disclosure#

Bad debt provision and write-off amounts must be disclosed in the financial statement notes - Odoo's General Ledger filtered to the Bad Debt Expense and Allowance accounts provides the numbers needed.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free