Skip to content
PokutsoftPokutsoft
GlobalAccounting/Accounting
Bad Debt Provision & Write-Off Manager icon

Bad Debt Provision & Write-Off Manager

Aging-based doubtful-debt provision matrix, write-off workflow and auto-reversal on recovery

Odoo 20.0Odoo 19.0Odoo 18.0
Compatible with Odoo 18.0 · 19.0 · 20.0
OPL-1 license · 35+ languages · Community & Enterprise
Bad Debt Provision & Write-Off Manager for Odoo — preview banner

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

✓Run a monthly or quarterly doubtful-debt provision snapshot across all open customer invoices
✓Post only the incremental provision movement instead of re-booking the full allowance balance every period
✓Write off a specific customer's aged receivable against the existing allowance or straight to expense
✓Automatically reinstate a receivable when a written-off customer unexpectedly pays part or all of the debt
✓Cancel a write-off that turns out to have been premature, with the reversal booked automatically
✓Report on aging bands and provision coverage per band across the receivables ledger

Screenshots

Bad Debt Provision & Write-Off Manager — 01 Provision Runs List in Odoo

01 Provision Runs List

Bad Debt Provision & Write-Off Manager — 02 Provision Run Form in Odoo

02 Provision Run Form

Bad Debt Provision & Write-Off Manager — 03 Writeoffs List in Odoo

03 Writeoffs List

Bad Debt Provision & Write-Off Manager — 04 Aging Matrix Form in Odoo

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