IFRS 15 Revenue Recognition in Odoo#
IFRS 15 requires revenue to be recognized when (or as) performance obligations are satisfied - not simply when cash is received or an invoice is issued. For multi-element contracts, this often means recognizing revenue over time or upon specific delivery milestones.
Core IFRS 15 Steps in an Odoo Context#
- Identify the contract → the signed sale order or contract
- Identify performance obligations → distinct goods or services promised
- Determine the transaction price → the total contract value
- Allocate the price to obligations → prorate by standalone selling price
- Recognize revenue when each obligation is satisfied → delivery, milestone, or over time
Deferred Revenue for Upfront Payments#
When a customer pays upfront for services delivered over time:
- Invoice the customer → Account: Deferred Revenue (Liability)
- Set up a deferred revenue schedule in Odoo (see "Managing Prepaid Expenses and Deferred Revenue")
- Each period, Odoo auto-posts: Debit Deferred Revenue → Credit Service Revenue
This matches revenue recognition to when the service is actually delivered.
Milestone-Based Revenue Recognition#
For project-based contracts with milestone payments:
Project → [Project] → Milestones → New:
- Milestone 1: Design Complete - $25,000 (recognized on completion)
- Milestone 2: Development Complete - $50,000
- Milestone 3: Go-Live - $25,000
When each milestone is marked complete:
- Odoo triggers an invoice for that milestone amount
- Revenue is recognized on the invoice date - correctly aligned with obligation completion
Contract Modifications Under IFRS 15#
When a contract is modified (scope change, price adjustment):
- Additive change (new distinct service at standalone price): treat as a new contract
- Modification of existing service: adjust the transaction price allocation across remaining obligations
In Odoo: create a new sale order line for additive changes; issue a credit note + new order for modifications that change the existing obligation.
Multi-Element Arrangements#
When a sale includes software + support + implementation:
- Determine standalone selling prices for each element
- Allocate the total contract price pro-rata:
- Software: $8,000 standalone → 40% of bundle
- Support: $6,000 standalone → 30%
- Implementation: $6,000 standalone → 30%
- Recognize:
- Software revenue at delivery of license
- Support revenue ratably over 12 months
- Implementation revenue at go-live (point in time) or % completion (over time)
Manage this allocation in Odoo using separate invoice lines and deferred revenue schedules per element.
Disclosure Requirements#
IFRS 15 requires detailed disclosures in financial statements - use Odoo's analytic account and deferred revenue reports to compile:
- Remaining performance obligations (contract backlog)
- Revenue recognized from contract liabilities (deferred → recognized this period)
- Disaggregated revenue by type and geography

