Your 90-day AR bucket is growing. Invoices are out. Follow-ups have been sent. But between running operations and managing cash flow, chasing overdue customers isn’t where your attention goes, and the money keeps sitting uncollected.
Odoo accounts receivable management covers the full invoice-to-cash cycle, invoicing, automated reminders, collections, reconciliation, and reporting, all handled natively inside Odoo’s Accounting module.
Most businesses using Odoo have AR configured badly, or not at all. The result is a collection process that’s technically within the software but, operationally, still manual and inconsistent, creating cash flow gaps.
That has a direct cost. On a $5M revenue business, cutting DSO from 45 to 28 days frees up more than $230,000 in cash.
This guide covers the full Odoo AR cycle: automation, reporting, credit management, and when to consider outsourcing the function entirely.
Start with how Odoo structures the AR cycle, because the foundation determines everything downstream.
Key Takeaways
- Odoo’s AR module can automate reminders, reconciliation, and reporting, but only if configured correctly.
- DSO and AR aging reports are the metrics that reveal whether your AR process is working.
- Credit management setup at onboarding prevents most collections problems before they start.
- For businesses where AR consistently creates cash flow problems, outsourced CPA-managed AR is a viable option worth understanding
What Is Accounts Receivable Management in Odoo?
Accounts receivable management in Odoo is the process of using Odoo’s Accounting module to manage every step of the invoice-to-cash cycle, from creating and sending invoices to automated payment reminders, collections follow-up, and reconciling payments to the ledger.
Most businesses get this wrong from the start.
They set up invoicing. They call it done. But invoicing is just Stage 1 of a five-stage cycle, and the other four stages are where the cash flow problems live.
How Odoo Handles the AR Cycle End-to-End?
Odoo handles the entire AR cycle natively, including invoice generation, payment terms, automated reminders, collections escalation, and bank reconciliation, without requiring any third-party AR software.
Here’s how each stage actually works:
Stage 1 – Invoice creation
Odoo pulls invoice data directly from confirmed sales orders. No manual re-entry. No copy-paste from a CRM. The moment a sales order is confirmed, an invoice is ready to send, with a payment link already embedded for online payment.
Stage 2 – Payment terms
You assign payment terms at the customer level, net 30, net 15, 50% upfront, or any custom structure. Odoo calculates due dates automatically across every invoice for that customer. Gone is the tracking spreadsheet running alongside your accounting system.
Stage 3 – Automated reminders
This is where most Odoo setups fall apart. Odoo’s Follow-Up module lets you build a tiered dunning sequence that fires automatically when invoices go past due. A well-configured sequence looks like this:
- Day 7 past due → soft reminder, automated email
- Day 14 → firmer tone, invoice PDF attached
- Day 30 → escalation email from the account owner
- Day 60 → final notice, flag for collections review
Most businesses never configure this. Their follow-up process depends entirely on someone remembering to send an email.
Stage 4 – Collections escalation
Once the automated sequence has run, Odoo’s Follow-Up Report shows you exactly which accounts require manual action. A call. A payment plan. A decision. Odoo flags the account; the action is yours.
Stage 5 – Reconciliation
When payment arrives, Odoo matches it to the open invoice via bank feed. Full payments reconcile automatically. Partial payments and unapplied credits are surfaced clearly for manual matching. The invoice closes when fully matched. The ledger updates in real time.
One system. All five stages. The question is whether yours is configured to run them.
Odoo AR Automation: What You Can Put on Autopilot
Odoo can automate payment reminders, customer portal access, and bank reconciliation, eliminating the manual follow-up work that consumes most AR teams. What it cannot automate: dispute resolution, bad debt write-off decisions, and credit limit reviews.
Here’s the breakdown.
What Odoo automates natively:
- Automated payment reminders are Odoo’s strongest AR feature. The Follow-Up module sends scheduled emails based on the dunning levels you set. You configure the message, the timing, and the trigger. Odoo handles delivery; no one has to remember. For a business sending 50–500 invoices per month, this single feature eliminates hours of weekly follow-up work.
- The customer portal removes payment friction entirely. Customers receive invoices with a direct pay link, can log in to view all open invoices, and pay without ever contacting your team. For B2B customers on recurring schedules, this is the difference between a payment that arrives on time and one that waits until someone finds the email from three weeks ago.
- Bank feed reconciliation runs daily once connected. One payment, one invoice, matching reference, Odoo reconciles it automatically. No manual input needed.
What Odoo does NOT automate:
- Dispute management – a customer disputing an invoice requires a human conversation before the invoice can be closed
- Bad debt write-off decisions – Odoo processes the journal entry, but the decision of when to write off requires human judgment
- Credit limit reviews – Odoo enforces the limits you set, but reviewing and updating those limits as payment behavior changes is manual
Here’s the honest truth: the businesses getting the most out of Odoo AR automation configure the full dunning sequence on day one and review it quarterly. Setup takes a few hours. The time savings compound every month after that.
Customer Credit Management: The AR Problem You Can Prevent
In Odoo, customer credit management lets you set customer-specific credit limits, block new orders when limits are exceeded, and assign payment terms by risk tier, stopping AR problems before they start rather than chasing them after the fact.
Most businesses skip this entirely.
They manage invoicing and reminders, but do not handle credit, so every customer has unlimited credit. This can result in a $40,000 invoice being 90 days overdue without any warning.
Here’s how Odoo’s credit management actually works:
- Credit limits are set at the customer account level. Once you assign a limit, Odoo monitors the outstanding balance in real time. When a customer exceeds it, Odoo blocks new sales orders from being confirmed, stopping you from shipping more product to someone who already owes you money you haven’t collected.
- Payment terms strategy is equally important. The terms you assign at onboarding determine your exposure with every invoice that follows.
The framework we use when configuring a new client’s Odoo AR:
- New customer, no history → 50% deposit or net 15
- 3–6 months of on-time payments → net 30
- 12+ months, no late payments → net 45 consideration
- Any customer with a 61–90 day balance → terms tightened until cleared
The credit decisions you make at onboarding determine the majority of your collections workload later.
Fix it upstream. The downstream collections work largely takes care of itself.
How to Read and Act on Odoo's AR Reports?
Odoo’s two key AR reports are the Aged Receivables Report, which groups open invoices into 0–30, 31–60, 61–90, and 90+ day buckets, and the Follow-Up Report, which shows accounts requiring immediate manual action. Together, they give you a complete picture of your AR health and what to do next.
Most businesses glance at these reports occasionally. Businesses with the cleanest AR treat it as a weekly operational tool.
Here’s how to use each one.
- The Aged Receivables Report is your AR health dashboard. Every open invoice is sorted by how long it’s been unpaid.
Here’s what each bucket should trigger:
- 0–30 days: Monitor only. The invoice is within the normal payment window.
- 31–60 days: Confirm automated follow-up fired. If no response, prepare for escalation.
- 61–90 days: Pick up the phone. An invoice that hits 90 days without a call is significantly harder to collect than one addressed at 61.
- 90+ days: Collections decision required. Review the customer relationship, outstanding balance, and history. Write off, escalate, or negotiate a payment plan.
If your 61–90 day bucket is growing month over month, that’s a collections process problem, not a customer payment problem. Your follow-up sequence isn’t working, or it isn’t configured.
- The Follow-Up Report is your daily action list. It surfaces exactly which customers have exhausted the automated sequence and need a human touch today. Reviewed weekly, it replaces the mental overhead of wondering who to call.
- Days Sales Outstanding (DSO) ties both reports together. DSO = (Accounts Receivable ÷ Total Revenue) × Days in Period. It tells you how long, on average, it takes to collect after invoicing. Industry benchmarks vary; manufacturing typically runs 40–50 days, SaaS 30–45 days, and ecommerce 20–35 days.
A DSO trending up month over month is an early warning signal. Caught at 45 days, it’s a configuration fix. Caught at 75 days, it’s a cash flow crisis.
AR Management for Ecommerce and Manufacturing Businesses
Odoo handles AR differently depending on your business model. Ecommerce businesses need clear account structures for marketplace delays and chargeback workflows. Manufacturers need partial-shipment invoicing and stricter enforcement of credit limits for high-value accounts.
The configuration that works for a B2B services firm doesn’t work for an ecommerce brand or a manufacturer on net 60 terms. Here’s what each vertical actually needs.
Odoo AR for Ecommerce Businesses
Two AR challenges in ecommerce don’t exist in other B2B models: marketplace payment delays and chargeback reconciliation.
1. Marketplace payment delays
If you sell on Amazon, remember that the money from your sales won’t hit your bank account right away. Odoo records the sale immediately, but you’ll get paid days or weeks later after Amazon deducts its fees. Without a clearing account, your accounts receivable aging shows “open” balances that are just waiting for Amazon to pay. This can make your DSO look worse than it is and cause your collections process to flag accounts that don’t need follow-up.
2. Chargeback reconciliation
Chargebacks create negative invoices that need to be matched against original transactions. Odoo handles this through credit notes, but only if the workflow is configured. Without it, chargebacks create a manual reconciliation backlog, making AR aging reports unreliable. For brands processing 200+ orders per month, this compounds fast.
Odoo AR for Manufacturing Companies
Manufacturing AR runs bigger and longer. Net 60 or net 90 terms. Large invoice amounts. One unpaid $80,000 invoice hits differently than three unpaid $3,000 invoices.
1. Partial shipment invoicing
You ship 60% of a purchase order and invoice accordingly. Odoo now needs to track two things simultaneously, the partial invoice and the remaining deliverable, then match payment to the right line items when the rest ships.
Odoo’s delivery and invoicing policy settings handle this. But only if they’re configured to match your billing model. Get it wrong, and your AR aging fills up with partially-matched invoices that are impossible to action cleanly.
2. Credit limit management
In manufacturing, this isn’t optional. One large customer, the kind that represents 15–20% of your total AR balance, going 90 days past due isn’t a collections problem. It’s a working capital crisis.
Odoo’s credit limit enforcement prevents new orders from being confirmed when a customer exceeds their limit. Pair that with a quarterly credit review on your largest accounts, and you catch the problem at 45 days, not 90.
When Odoo's Native AR Isn't Enough and What to Do
Odoo’s native AR handles the full invoice-to-cash cycle well for most $1M–$20M B2B businesses. It reaches its limits when dispute volume is high, multi-entity AR is involved, complex deduction management is required, or your business simply lacks the capacity to act on the exceptions Odoo surfaces.
Let’s be specific about where the ceiling is.
- High dispute volume: Odoo tracks disputes. It doesn’t manage them. If customers regularly short-pay, dispute invoice amounts, or require deduction management, you need either a third-party tool (Kolleno and Chaser both integrate with Odoo) or a dedicated managed AR team handling disputes as a function.
- Multi-entity AR: Multiple legal entities, separate US and international entities, and distinct operating subsidiaries adds intercompany AR complexity that the standard Odoo configuration doesn’t handle cleanly out of the box.
- Complex deduction management: Retailers and large distributors short-pay invoices for promotional deductions, compliance violations, or freight chargebacks. Validating, disputing, and reconciling those deductions requires a workflow outside Odoo’s native AR module.
- AR team capacity: Odoo automates the reminders and surfaces the exceptions. Someone still has to make the calls, resolve the disputes, and make the credit decisions. If you don’t have dedicated AR capacity, exceptions pile up regardless of how well the system is configured.
Here’s the bottom line: if your AR is consistently creating cash-flow unpredictability, overdue balances are growing, DSO is trending up, and reconciliation is always behind, that’s a management problem, not a software problem.
Two paths forward: add a specialist AR tool on top of Odoo, or outsource the AR function to a team that runs Odoo natively and manages the whole cycle for you.
Conclusion
Odoo has everything a $1M–$20M business needs to run accounts receivable management properly.
The invoicing. The automation. The reporting. The reconciliation. It’s all there.
The businesses that struggle with AR on Odoo aren’t struggling because of the software. They’re struggling because the cycle was never fully configured, and the gaps left open compound every month.
The through-line across every section of this guide is simple: AR management is a process, not a recording function. Configure Odoo to run that process, dunning levels, credit limits, payment terms, weekly AR report reviews, and cash flow becomes predictable. Leave it half-configured, and it stays reactive.
If your Odoo AR is consistently creating cash flow unpredictability, overdue balances are growing, DSO is trending upward, and reconciliation is always a week behind, that’s a configuration and management problem. And it’s fixable.
Book a free consultation for call Odoo AR Review with the Ledger Labs CPA team. No commitment. No sales process. We look at your Odoo AR setup, tell you exactly what we’d fix, and give you a clear picture of what a managed AR function would look like for your business.
FAQs
How does Odoo track unpaid invoices?
Odoo tracks unpaid invoices through two reports: the Aged Receivables Report, which groups open invoices into 0–30, 31–60, 61–90, and 90+ day buckets, and the Follow-Up Report, which surfaces invoices where the automated reminder sequence has been exhausted, and manual action is required. Both reports update in real time as payments are received and reconciled.
Can Odoo automate payment reminders?
Yes, Odoo’s Follow-Up module lets you configure a tiered dunning sequence that fires automatically when invoices go past due. A standard sequence runs at Day 7 (soft reminder), Day 14 (firm reminder with invoice attachment), and Day 30 (escalation notice). Each level has its own email template and trigger logic. Once configured, reminders are sent automatically without manual intervention from your team.
How do you reconcile customer payments in Odoo?
Odoo reconciles customer payments by matching incoming bank transactions, automatically pulled via a bank feed, against open invoices. Full payments with matching references reconcile automatically. Partial payments are registered against the invoice, leaving the remaining balance open. Unapplied credits are held in a suspense account until manually matched. The process is largely automated for clean, one-to-one payments.
What is the aged receivables report in Odoo?
The Aged Receivables Report in Odoo shows all outstanding customer invoices grouped by how long they’ve been unpaid: 0–30, 31–60, 61–90, and 90+ days. Each bucket signals a collection’s urgency, from routine monitoring at 0–30 days to a collection’s decision at 90+ days. Reviewed weekly, it is the primary tool for prioritizing follow-up and forecasting near-term cash collections.
How do you write off bad debt in Odoo?
To write off bad debt in Odoo, create a credit note against the uncollectible invoice and post it to a Bad Debt Expense account in your chart of accounts. This closes the open invoice and records the loss as an expense in the current period. The accounting decision, when to write off and at what amount, requires judgment; Odoo processes the entry once that decision is made. Bad debt reviews should happen before year-end close, not during the year-end close.
Does Odoo integrate with payment gateways?
Yes. Odoo integrates natively with Stripe, PayPal, Authorize.net, and several other payment providers. Once connected, customers can pay invoices directly from the customer portal or the emailed invoice link, no call to your team required. Payments post automatically to the corresponding invoice and appear in the reconciliation queue. For high-invoice-volume businesses, this materially reduces payment friction and accelerates cash collection.
What is dunning in Odoo accounting?
Dunning in Odoo is the automated process of sending increasingly firm payment reminders to customers with overdue invoices. It’s implemented through Odoo’s Follow-Up Levels, a configurable sequence of emails triggered by the number of days an invoice is past due. You set the number of levels, the timing, and the message tone for each. The sequence runs automatically; your team only handles accounts that exhaust all levels without responding.
How do you record partial payments in Odoo?
To record a partial payment in Odoo, open the invoice, click Register Payment, and enter the amount received, not the full invoice total. Odoo records the payment, reduces the outstanding balance, and leaves the invoice open until the remainder is collected or written off. The unpaid balance continues to appear in Aged Receivables Reports and Follow-Up sequences until fully resolved.
What modules does Odoo use for AR?
Odoo AR runs primarily through the Accounting module, invoicing, payment terms, bank reconciliation, and financial reporting. The Follow-Up module (part of Accounting) manages the dunning sequence and collections workflow. The Sales module generates sales orders that feed into invoices. The CRM module holds customer credit information and payment history. Payment gateway connections run through Odoo’s Payment Acquirer module.



