- Home
- Apps
- SaaS Tools
- Deferred Revenue & Expense Recognition
Illustrative previewA build-to-order Odoo module that automates deferred revenue and expense recognition over time with IFRS 15 /
ASC 606-compliant schedules and automated journal entries.
ECOSIRE designs, installs, and supports it on your Odoo 17, 18, or 19.
What is Deferred Revenue & Expense Recognition?
A build-to-order Odoo module that automates deferred revenue and expense recognition over time with IFRS 15 / ASC 606-compliant schedules and automated journal entries. ECOSIRE designs, installs, and supports it on your Odoo 17, 18, or 19. Built to order by ECOSIRE for Odoo 17, 18, 19 — indicative price from $999.00 USD; request a quote for a scoped proposal.
Key Features
Built to order, done for you
No DIY setup — a working app, built, installed and supported by ECOSIRE.
- 1
You order
Start with a one-time build price. We scope it with you at kickoff.
- 2
We build & install
ECOSIRE builds, configures and installs it on your Odoo.
- 3
Go live + support
You go live in about one working week, with two weeks of go-live support. Defects in the code we deliver are fixed free of charge.
Technical Specifications
- Odoo Compatibility
- Odoo 17, Odoo 18, Odoo 19
- Editions
- Enterprise & Community
- License
- Licence confirmation required
- Python Requirement
- Python 3.10+
- Database
- PostgreSQL 12+
About this Product
Subscription, SaaS, and service businesses routinely invoice up front for value delivered over months or years — annual licenses, retainers, prepaid support, multi-period maintenance. Under IFRS 15 / ASC 606 you cannot recognize that cash as revenue on the invoice date; it has to be released to the P&L as the performance obligation is satisfied. Odoo's native deferred revenue/expense handling covers the straightforward case (a start/end date and a linear split posted by a scheduled action), but real recognition policies quickly outrun it: mid-period contract modifications, partial credit notes, catch-up on a late-started contract, prorated first/last periods, multi-currency contracts, and audit-ready schedules that tie every recognized cent back to a source invoice line. Teams end up maintaining the true schedule in a spreadsheet and posting manual journals — exactly the error-prone, un-auditable process the ERP was supposed to remove.
ECOSIRE builds a dedicated recognition engine into your Odoo. At its core is a deferred.schedule model (models.Model) that owns the recognition plan for each source line, with one deferred.schedule.line per period carrying its computed amount, planned recognition date, posted state, and a link back to the account.move.line it derives from. Period amounts are @api.depends-computed from the method you choose — straight-line, days-based proration, or a custom curve captured as a percentage table — so changing a contract's dates or value re-derives the remaining unposted periods without touching what's already recognized. Recognition postings are generated as proper account.move entries (deferred liability/asset account to the P&L account on your product or fiscal position), driven by an ir.cron automated action that sweeps due lines on your close cadence and is idempotent, so re-running it never double-posts. The same framework runs in reverse for prepaid expense amortization — insurance, prepaid rent, prepaid software — releasing a deferred asset to expense on the identical schedule mechanics.
Everything is exposed where accountants already work. A dedicated menu and list/form views (XML, OWL widgets in 17/18/19) let controllers review, adjust, pause, and post schedules; a QWeb report produces the period-by-period recognition waterfall your auditors ask for; and access is locked down with ir.model.access.csv plus record rules so only the accounting group can post and multi-company/multi-tenant boundaries are enforced. Recognition is reconcilable against the deferred balance-sheet accounts, and schedules are queryable over the standard XML-RPC / JSON-RPC API for BI tools or a parent-consolidation feed. We build against your chart of accounts and revenue-recognition policy rather than forcing a generic one, and we account for Community vs Enterprise differences — where Enterprise ships partial native deferred features we extend and reconcile with them rather than duplicating.
Because this is build-to-order, nothing ships blind. We start with a scoping call to capture your recognition policies, contract types, GL structure, and edge cases, then build the module for your exact Odoo version (17.0, 18.0, or 19.0), validate it on a staging copy of your database with your real contracts, and hand over installable source, documentation, and a git repository. Typical delivery is one working week from confirmed scope, and every engagement includes a post-go-live support window plus a documented rollback path.
What you get
- Installable module source code targeted to your exact Odoo version (17.0 / 18.0 / 19.0) and Community or Enterprise edition
- Installation and configuration on your environment: deferred accounts, recognition methods, product/category mapping, and cron cadence
- Technical documentation — model and field reference, `ir.cron` logic, security rules, and extension points for your developers
- End-user guide plus a live training session for your accounting and controller team
- UAT on a staging copy of your database using your real contracts, with a documented rollback plan before go-live
- Post-go-live support window for bug fixes, questions, and minor adjustments after launch
- Git repository handover with full commit history and access for your team
- Recognition-policy mapping document confirming how each contract type and edge case is treated in the schedules
Who this is for
SaaS / Subscription CFO or Controller
Runs annual and multi-year subscription billing and needs IFRS 15 / ASC 606-compliant deferred revenue schedules that survive upgrades, downgrades, and mid-term changes — with an audit-ready waterfall instead of a spreadsheet.
Professional Services & Retainer Firm
Invoices retainers and multi-period projects up front and must release revenue as work is delivered, with proration and catch-up handling that Odoo native can't express.
Accounting Manager on Odoo
Owns the monthly close and wants recognition posted automatically and idempotently by a scheduled action, reconcilable against deferred balance-sheet accounts, without manual journals.
Finance-owning Founder / COO
Wants clean, investor- and auditor-ready revenue recognition built into Odoo without hiring an in-house Odoo developer, and delivered on a fixed scope with support.
How Deferred Revenue & Expense Recognition Compares
| Criterion | ECOSIRE | Custom Build | Competitor | Odoo Native |
|---|---|---|---|---|
| IFRS 15 / ASC 606 fit | Schedules and journals built to your documented recognition policy | Depends entirely on your developer's accounting knowledge | Generic compliance claim, rarely policy-specific | Basic linear deferral only; no policy modeling |
| Recognition methods | Straight-line, days-based proration, and custom curves | Whatever you spec and pay to build | Usually straight-line, limited proration | Straight-line split by scheduled action |
| Mid-term changes & credit notes | Prospective catch-up, re-spread, and reversal handled | Often deferred as 'phase two', frequently missed | Partial or manual workaround | Manual journals in a spreadsheet |
| Odoo version & edition | Built for your exact 17/18/19, Community or Enterprise | Tied to whoever builds it | One build, may lag new versions | Enterprise-leaning; Community feature-thin |
| Audit reporting | QWeb waterfall tying each amount to its source line | Build your own report | Standard export, may not tie to source | No dedicated recognition report |
| Prepaid expense amortization | Same engine, run in reverse for deferred assets | Separate build effort | Sometimes a separate paid module | Basic deferred expense, same limits as revenue |
| Ownership & extensibility | Full source + git repo handover | You own it, but you also own all the risk | Licensed binary/obfuscated, limited access | Core code, not tailored to you |
| Delivery & support | Scoped build, UAT, training, post-go-live support | Timeline and support vary widely | Download plus ticket-based support | Self-serve; no delivery or support |
Frequently Asked Questions about Deferred Revenue & Expense Recognition
How long does delivery take?
This is a build-to-order module, not an instant apps.odoo.com download. After a scoping call to confirm your recognition policies, contract types, and GL structure, typical delivery is one working week from confirmed scope. Complex multi-entity or heavily customized policies may extend that — we give you a firm timeline in writing before we start.
Which Odoo versions and editions do you support?
We build for Odoo 17.0, 18.0, and 19.0, on both Community and Enterprise. Enterprise ships some native deferred features; where it does, we extend and reconcile with them rather than duplicating. We target your exact version and edition so the module fits your instance cleanly.
Is the recognition actually IFRS 15 / ASC 606 compliant?
The engine produces period-by-period schedules and journal entries structured for IFRS 15 / ASC 606 revenue recognition, with an auditable waterfall tying every recognized amount to its source invoice line. Compliance also depends on your accounting policy and how performance obligations are defined — we map those with your team during scoping so the schedules reflect your actual policy, and your auditors sign off on the treatment.
What about support and updates after go-live?
Every engagement includes a post-go-live support window for bug fixes and minor adjustments. Because you receive the full source and git repository, your team can maintain it, or you can retain ECOSIRE for ongoing support and for version-migration work when you upgrade Odoo (for example 18.0 to 19.0).
Will it break my existing invoices or accounting data?
No. We validate the module on a staging copy of your database with your real contracts before anything touches production, and we deliver a documented rollback plan. Recognition posts as standard `account.move` entries against dedicated deferred accounts, so it integrates with your existing chart of accounts rather than altering your invoicing flow.
Can it handle prepaid expenses as well as deferred revenue?
Yes. The same schedule engine runs in reverse for prepaid expense amortization — insurance, prepaid rent, prepaid software — releasing a deferred asset to expense on the same straight-line, prorated, or custom-curve mechanics used for revenue.
Can other systems read the recognition data?
Yes. Schedules and recognized amounts are exposed over Odoo's standard XML-RPC / JSON-RPC API, so BI tools, external reporting, or a parent-company consolidation feed can pull the data without direct database access.
Related Modules

Dashboard With AI
Dynamic sales, inventory, and finance dashboards for Odoo with AI-driven data exploration, built to your exact KPIs. ECOSIRE scopes, builds, installs, and supports it — this is a made-to-order build, not an off-the-shelf download.

Datatrans Payment Gateway for Odoo (Switzerland)
A build-to-order Datatrans payment provider for Odoo that brings Swiss checkout methods — TWINT, cards, PostFinance, Apple Pay — into your Website, eCommerce and Sales flows. ECOSIRE builds, installs and supports it; it is not an off-the-shelf apps.odoo.com download.

Denmark OIOUBL / Nemhandel E-Invoicing for Odoo
A build-to-order Odoo module that turns a posted customer invoice into a validated OIOUBL document and delivers it over Nemhandel/Peppol, with rejection handling, a correction workflow and a compliant archive. ECOSIRE builds, installs and supports it for your Odoo 17.0, 18.0 or 19.0 database.

Deposit & Partial Payment at Checkout for Odoo
A build-to-order Odoo module that lets customers pay a configurable deposit or percentage at checkout and settle the balance later via a secure pay-link, with automated reminders and balance-due invoicing. ECOSIRE scopes, builds, installs and supports it on Odoo 17.0, 18.0 or 19.0.
Deferred Revenue & Expense Recognition
A build-to-order Odoo module that automates deferred revenue and expense recognition over time with IFRS 15 / ASC 606-compliant schedules and automated journal entries. ECOSIRE designs, installs, and supports it on your Odoo 17, 18, or 19.
- `deferred.schedule` model owning per-line recognition plans with `deferred.schedule.line` rows carrying period amount, planned date, posted state, and source `account.move.line` link
- Straight-line, days-based proration, and custom percentage-curve recognition methods, selectable per product, product category, or contract
- `@api.depends` recomputation that re-derives only remaining unposted periods when a contract's dates or value change — never rewriting recognized history
- Idempotent `ir.cron` automated action that sweeps due lines on your close cadence and posts recognition without ever double-posting