Bad Debt Provision & Write-Off Manager
Aging-based doubtful-debt provision matrix, write-off workflow and auto-reversal on recovery
Bad Debt Provision & Write-Off Manager
Aging-based doubtful-debt provision matrix, write-off workflow and auto-reversal on recovery
Bad Debt Provision & Write-Off Manager runs doubtful and bad debts end to end inside Odoo Accounting: an aging-band provision matrix values every open customer invoice, periodic runs post only the delta against the previous allowance balance, and a full write-off to recovery workflow books real journal entries with automatic reversal if a written-off customer pays after all.
Key Features
Configurable aging provision matrix
bad.debt.provision.matrix defines any number of aging bands (e.g. 1-30 / 31-60 / 61-90 / 91-180 / 180+ days) each with its own provision percentage; a 5-band default matrix is seeded per company on install.
Periodic provision run
bad.debt.provision.run ages every open customer receivable as of the run date, classifies each into a band via the matrix, and computes the total required allowance balance.
Movement-only posting
A run posts only the increase or release against the previous run's allowance balance as a single journal entry between the Provision Expense and Allowance for Doubtful Debts accounts, never re-booking the full balance.
Write-off workflow with two methods
bad.debt.writeoff writes off a specific overdue receivable either against the existing allowance or directly to expense, posting its own entry and reconciling the new line against the original invoice so it stops showing as open.
Draft to Posted to Recovered/Cancelled state machine
Each write-off carries a tracked state (draft, posted, recovered, cancelled) with full chatter logging of amounts and journal entry references.
Auto-reversal on recovery
action_register_recovery books the mirror journal entry reinstating the receivable for a recovered amount, leaving a fresh open line for normal payment reconciliation; multiple partial recoveries are supported until the write-off is marked Recovered.
Recovery wizard
bad.debt.recovery.wizard collects the recovered amount, date and note and delegates straight to the write-off's recovery posting logic.
One-click cancellation with automatic reversal
A posted write-off with no recovery yet can be cancelled, which automatically books a full reversal instead of requiring a manual counter-entry.
Use Cases
Screenshots
01 Provision Runs List
02 Provision Run Form
03 Writeoffs List
04 Aging Matrix Form
Why Choose This Module
Bad debt provisioning is easy to get wrong by hand: double-booking the full allowance every period, forgetting to reverse a write-off on recovery, or losing the audit trail of which invoice was written off against which account. This module keeps every step, provisioning, write-off and recovery, as a real, reconciled journal entry with a stored aging snapshot behind it, so finance can trust the allowance balance at any point in time.
Specifications
- Compatible: Odoo 18.0 / 19.0 / 20.0
- License: OPL-1
- Languages: 35+
- Author: Pokutsoft
- Dependencies: account
- Support: support@pokutsoft.com
- Update date: 2026-10-02
Related modules
Bank Statement Import Pro (CAMT.053 / MT940 / OFX / QIF + AI)
Import bank statements from CAMT.053, MT940, OFX/QFX and QIF files with auto-format detection, reconciliation suggestions and optional bring-your-own-key AI categorization.
US BAI2 Bank Parser
Import BAI2 (US/Canada) corporate cash-management bank statement files into Odoo bank statements
Global CAMT.054 Import
Import ISO 20022 CAMT.054 credit/debit notifications and turn every per-entry detail into a scored reconciliation suggestion