Skip to Content
Odoo Menu
  • Sign in
  • Try it free
  • Apps
    Finance
    • Accounting
    • Invoicing
    • Expenses
    • Spreadsheet (BI)
    • Documents
    • Sign
    Sales
    • CRM
    • Sales
    • POS Shop
    • POS Restaurant
    • Subscriptions
    • Rental
    Websites
    • Website Builder
    • eCommerce
    • Blog
    • Forum
    • Live Chat
    • eLearning
    Supply Chain
    • Inventory
    • Manufacturing
    • PLM
    • Purchase
    • Maintenance
    • Quality
    Human Resources
    • Employees
    • Recruitment
    • Time Off
    • Appraisals
    • Referrals
    • Fleet
    Marketing
    • Social Marketing
    • Email Marketing
    • SMS Marketing
    • Events
    • Marketing Automation
    • Surveys
    Services
    • Project
    • Timesheets
    • Field Service
    • Helpdesk
    • Planning
    • Appointments
    Productivity
    • Discuss
    • Approvals
    • IoT
    • VoIP
    • Knowledge
    • WhatsApp
    Third party apps Odoo Studio Odoo Cloud Platform
  • Industries
    Retail
    • Book Store
    • Clothing Store
    • Furniture Store
    • Grocery Store
    • Hardware Store
    • Toy Store
    Food & Hospitality
    • Bar and Pub
    • Restaurant
    • Fast Food
    • Guest House
    • Beverage Distributor
    • Hotel
    Real Estate
    • Real Estate Agency
    • Architecture Firm
    • Construction
    • Property Management
    • Gardening
    • Property Owner Association
    Consulting
    • Accounting Firm
    • Odoo Partner
    • Marketing Agency
    • Law firm
    • Talent Acquisition
    • Audit & Certification
    Manufacturing
    • Textile
    • Metal
    • Furnitures
    • Food
    • Brewery
    • Corporate Gifts
    Health & Fitness
    • Sports Club
    • Eyewear Store
    • Fitness Center
    • Wellness Practitioners
    • Pharmacy
    • Hair Salon
    Trades
    • Handyman
    • IT Hardware & Support
    • Solar Energy Systems
    • Shoe Maker
    • Cleaning Services
    • HVAC Services
    Others
    • Nonprofit Organization
    • Environmental Agency
    • Billboard Rental
    • Photography
    • Bike Leasing
    • Software Reseller
    Browse all Industries
  • Community
    Learn
    • Tutorials
    • Documentation
    • Certifications
    • Training
    • Blog
    • Podcast
    Empower Education
    • Education Program
    • Scale Up! Business Game
    • Visit Odoo
    Get the Software
    • Download
    • Compare Editions
    • Releases
    Collaborate
    • Github
    • Forum
    • Events
    • Translations
    • Become a Partner
    • Services for Partners
    • Register your Accounting Firm
    Get Services
    • Find a Partner
    • Find an Accountant
      • Get a Tailored Demo
    • Implementation Services
    • Customer References
    • Support
    • Upgrades
    Github Youtube Twitter Linkedin Instagram Facebook Spotify
    +32 2 290 34 90
    • Get a Tailored Demo
  • Pricing
  • Help
  1. APPS
  2. Accounting
  3. Collections Workbench v 19.0
  4. Sales Conditions FAQ

Collections Workbench

by ERP Heritage https://www.erpheritage.com.au/
Odoo
In-App Purchases
v 19.0 Third Party 43
Download for v 19.0 Deploy on Odoo.sh
Apps purchases are linked to your Odoo account, please sign in or sign up first.
Versions 16.0 17.0 18.0 19.0
You bought this module and need support? Click here!
Availability
Odoo Online
Odoo.sh
On Premise
Odoo Apps Dependencies • Discuss (mail)
• Invoicing (account)
Community Apps Dependencies Show
Accounting Suite Base
Lines of code 6263
Technical Name eh_account_collections
LicenseLGPL-3
Websitehttps://www.erpheritage.com.au/
Versions 16.0 17.0 18.0 19.0
ERP Heritage · Accounting Suite
ODOO 19 COMMUNITY ACCOUNTS RECEIVABLE

Collections Workbench

Turn the aged receivable report into an active dunning workflow that creates, chases, and escalates a case per overdue customer on its own.

Free · LGPL-3FREE LGPL-3ODOO 19 COMMUNITYv19.0.1.1.6
Auto cases
Dunning ladder
Promise to pay
Late fees
Action log

Why this module

Collections Workbench

01 / AUTOMATION

The report that chases for you

One GROUP BY SQL pass builds a case per overdue customer from open AR and refreshes it nightly. The follow up cron picks the next due level per case and sends it, so the queue moves whether or not a collector logs in.

02 / INTEGRITY

A history you cannot rewrite

Every call, email, follow up, and broken promise escalation writes a row to an action log that blocks write and unlink at the model level. Auto creation is idempotent and de duplicated by a partial EXCLUDE constraint, so re running the cron never doubles a case.

03 / OWNERSHIP

Yours to keep

LGPL-3 source on disk. No activation key, no phone home, no recurring licence. Configure the ladder per company, swap in your own templates, and extend the workflow. Free today, free at renewal, because there is no renewal.

Day in the life

A credit controller starts the morning with the cases already moved.

Overnight the aging refresh cron rebuilt every case from open AR, and a customer who paid down their balance dropped to a zero total instead of showing a stale figure. The follow up cron sent the 30 day firm reminder to three accounts and scheduled a call activity on each. One customer who promised to pay last week missed the date, so the broken promise cron already bumped its priority, moved it to Escalated, and queued the next level, all without re escalating a promise it had handled the day before. The controller opens one account that disputes its invoice, drags it to Disputed, and prints a Statement of Account PDF listing every open invoice and the full contact history on the shared suite letterhead. For a chronic late payer, the late fee wizard previews a prorated percent per month charge to the cent and posts it as a normal customer invoice in one click.

Edge cases

The cases most modules quietly ignore.

In the shipped code today, each one a place where a cheaper module silently does the wrong thing.

PAID OVERNIGHT

The nightly aging refresh zeroes the total on cases whose partner paid down their balance, so a customer who drops out of the overdue aggregation never lingers with a stale figure until someone clicks Refresh.

NEVER REOPENED

A resolved case is never reopened. A new overdue invoice spins up a fresh case so the resolution history stays intact. The EXCLUDE constraint only forbids two open cases for the same partner, not a closed one plus a new one.

BROKEN PROMISE COOL OFF

Broken promise escalation is idempotent. A 24 hour cool off plus a computed broken promise filter stops the cron re escalating the same lapsed promise on every tick, and a fresh promise dated today or later auto clears it.

RACE SAFE COUNTERS

Follow up counters increment with an atomic SQL UPDATE then a cache invalidation, so a manual send and the scheduled cron hitting the same case at once cannot clobber each other with a read modify write race.

FEE TO THE CENT

The late fee wizard computes flat or prorated percent per month fees in Decimal with ROUND_HALF_UP, so the preview and the posted invoice agree to the cent, and it raises a named error when the partner has no overdue receivable.

BOUNDED AT SCALE

A single GROUP BY aggregation per company and partner bounds the work by distinct partner pairs instead of loading every overdue ledger line into Python, so large receivables ledgers stay fast.

What is inside

Built to do the job, end to end.

  • Idempotent auto case creation. A single GROUP BY SQL pass over open receivable lines creates one case per overdue customer per company. The nightly cron updates totals rather than duplicating, and a partial EXCLUDE constraint guarantees one open case per partner.
  • Configurable follow up ladder. A per company days overdue ladder firing on shipped defaults of 7, 30, 60, and 90 days. Each level sends a branded HTML dunning email and schedules a call activity, advanced by a savepoint isolated daily cron so one mail failure does not stop the queue.
  • Promise to pay and broken promise escalation. Promises are captured as an amount plus a date on the case card. When a promised date lapses, a separate cron escalates the case overnight with a priority bump, a move to Escalated, and the next level, idempotent via a 24 hour cool off.
  • Append only action log. Every call, email, SMS, meeting, note, follow up, and escalation writes a row that is blocked from write and unlink at the model level, with a contact made flag and promise capture, so the contact history cannot be edited or deleted.
  • Late fee invoicing wizard. Flat or prorated percent per month fee computed in Decimal to the cent, posting a standard customer invoice in one transaction. It raises a named error when there is no overdue receivable to charge against.
  • Statement of Account PDF. A per case PDF listing open invoices plus action history, rendered through the shared suite brand header and footer, registered as a report so it prints, downloads, or attaches to the case.
  • Mail templates included. Default mail templates ship bound to eh.collections.case: three wired into the default ladder as courteous reminder, firm reminder, and final notice, plus three additional brand styled dunning variants you can swap in.

Honest about the edges

What this does not do, so nothing surprises you.

  • Pausing a case is a single tracked toggle. The follow up cron skips paused cases and manual sends are still permitted, but there is no pause reason field and no automatic resume date. Resuming is a manual action.
  • A recorded promise to pay does not pause or roll back the follow up timer. Promises are surfaced and a lapsed promise is escalated overnight, but the next follow up date is driven by the level and last send date, not by the promise.
  • Follow up levels are days overdue thresholds, not the kanban stages. Activities and emails are driven by levels, not by dragging a card between columns.
  • The dunning ladder is configurable and override able, but there is no built in LLM next action suggestion in this module. That feature exists only if the separate AI Agent Layer module is installed.
  • The follow up engine sends branded HTML emails, not rendered PDF letters. The only PDF is the per case Statement of Account, which is not tied to the ladder levels.
Search

odoo 19 collections management, accounts receivable follow up, dunning automation odoo, overdue invoice reminders, promise to pay tracking, aged receivables workflow, collections kanban, automated payment reminders, late fee invoicing odoo, days sales outstanding DSO, credit control odoo community, broken promise escalation

Languages

Available in 19 languages

The interface ships translated out of the box. Switch language in Odoo and the fields, menus, and messages follow.

ArabicChinese (Simplified)Chinese (Traditional)DutchFrenchGermanHindiIndonesianItalianJapaneseKoreanPolishPortuguese (Brazil)RussianSpanishSwedishThaiTurkishVietnamese
ERP Heritage

Production-grade Odoo accounting, built to an engineering bar and documented honestly. Support: info@erpheritage.com.au
Developed by ERP Heritage - Odoo Implementation • LinkedIn

v19.0.1.1.6 · LGPL-3 · Odoo 19 Community

Please log in to comment on this module

  • The author can leave a single reply to each comment.
  • This section is meant to ask simple questions or leave a rating. Every report of a problem experienced while using the module should be addressed to the author directly (refer to the following point).
  • If you want to start a discussion with the author, please use the developer contact information. They can usually be found in the description.
Community
  • Tutorials
  • Documentation
  • Forum
Open Source
  • Download
  • Github
  • Runbot
  • Translations
Services
  • Odoo.sh Hosting
  • Support
  • Upgrade
  • Custom Developments
  • Education
  • Find an Accountant
  • Find a Partner
  • Become a Partner
About us
  • Our company
  • Brand Assets
  • Contact us
  • Jobs
  • Events
  • Podcast
  • Blog
  • Customers
  • Legal • Privacy
  • Security

Odoo is a suite of open source business apps that cover all your company needs: CRM, eCommerce, accounting, inventory, point of sale, project management, etc.

Odoo's unique value proposition is to be at the same time very easy to use and fully integrated.

Website made with