All posts
Functional5 min read

Managing Aged Receivables and Customer Collections in Odoo

Use Odoo aged receivables reporting and collection activities to systematically follow up on overdue customer invoices - prioritizing by risk and automating reminder sequences.

Aged Receivables Management in Odoo#

Collecting overdue receivables requires systematic prioritization and consistent follow-up. Odoo combines aged receivables reporting with automated payment reminders and activity scheduling to keep collections organized.

Aged Receivables Report#

Accounting → Reporting → Aged Receivable:

CustomerCurrent1-30 days31-60 days61-90 days90+ daysTotal
Customer A$10,000$5,000---$15,000
Customer B--$3,000$2,000$8,000$13,000

Customer B has $8,000 over 90 days - highest collection priority.

Payment Follow-Up Levels#

Accounting → Configuration → Follow-Up Levels:

Define escalating follow-up actions:

  • Level 1 (1 day overdue): Automatic reminder email - "Your invoice is overdue"
  • Level 2 (15 days overdue): Personalized email from account manager
  • Level 3 (30 days overdue): Phone call activity assigned to collections rep
  • Level 4 (60 days overdue): Legal notice / collections agency referral

Running Follow-Up Activities#

Accounting → Customers → Follow-Up:

  • Lists all customers with overdue amounts
  • Shows next follow-up action due for each customer
  • Click Process Follow-Ups → Odoo:

- Sends emails automatically for Level 1 and 2

- Creates phone call activities for Level 3

- Attaches all overdue invoice PDFs to reminder emails

Dispute Management#

When a customer disputes an invoice:

  1. Open the invoice → Report Dispute
  2. Add dispute reason: "Incorrect pricing - customer paid $200 less"
  3. Invoice is flagged: appears in dispute report, excluded from overdue follow-up
  4. Assigned to AR specialist for resolution
  5. On resolution: credit note issued or invoice adjusted

Payment Plans#

For customers who can't pay in full:

  1. Accounting → Customers → [Customer] → Payment Plan
  2. Schedule agreed installments:

- 2027-10-01: $2,000

- 2027-11-01: $2,000

- 2027-12-01: $2,000

  1. Follow-up reminders adjust to match the payment plan dates - no follow-up while customer is on track

Bad Debt Provision#

When receivables become uncollectable:

Accounting → Accounting → Journal Entries → New:

  • Debit: Bad Debt Expense
  • Credit: Allowance for Doubtful Accounts

When formally written off:

  • Debit: Allowance for Doubtful Accounts
  • Credit: Accounts Receivable (with the customer invoice as reconciliation)

DSO Tracking#

Days Sales Outstanding (DSO) = (Accounts Receivable / Revenue) × Days in Period

Track DSO monthly - rising DSO indicates deteriorating collections. Odoo doesn't calculate DSO natively, but the Aged Receivables export combined with revenue data gives the inputs.

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

Get started free