Deferred Revenue Recognition in Odoo#
When a customer pays upfront for a 12-month service, the cash is received today but the revenue is earned over the year. Posting it all immediately overstates revenue in the first month. Odoo automates the spreading of this deferred revenue.
Prerequisites#
Accounting → Configuration → Settings → enable Revenue Recognition.
Setting Up a Deferred Revenue Account#
Accounting → Configuration → Chart of Accounts → New:
- Account: Deferred Revenue (e.g., 2400)
- Type: Current Liabilities
- This account holds revenue that has been invoiced but not yet earned
Configuring a Product for Deferred Revenue#
Product → General Information tab:
- Account: select the Deferred Revenue account (2400)
- Deferred Revenue: enable and set method
Deferred Revenue Method:
- Equal Monthly: divide total revenue equally across the period
- Daily Prorated: spreads by exact days (useful when start/end dates are not month boundaries)
The Revenue Recognition Flow#
- Invoice customer for Annual Subscription: $12,000
- Odoo posts: Debit Accounts Receivable $12,000 → Credit Deferred Revenue $12,000
- Customer pays → Deferred Revenue balance remains until recognized
- Each month: Odoo auto-generates a recognition entry:
- Debit Deferred Revenue $1,000
- Credit Revenue $1,000
- After 12 months: Deferred Revenue account = $0, Revenue recognized = $12,000
Creating a Deferred Revenue Schedule#
Accounting → Accounting → Deferred Revenue → New:
- Product/Description: Annual Support Contract
- Amount: $12,000
- Start Date: 2027-09-01
- End Date: 2028-08-31
- Recognition Method: Equal Monthly
Odoo generates a schedule showing $1,000/month recognition for 12 months.
Automation#
Enable Automatic Posting:
Accounting → Configuration → Settings → Revenue Recognition → Auto-Post Entries
Odoo posts recognition entries automatically at the start of each month - no manual journal entry required.
Reporting#
Accounting → Reporting → Deferred Revenue Report:
- Total deferred revenue on the balance sheet
- Monthly recognition schedule (what will be recognized in future months)
- Variance from plan (if any lines were manually adjusted)
This report is critical for month-end close - the balance sheet deferred revenue must tie to the schedule.

