All posts
Functional5 min read

Automating Deferred Revenue Recognition in Odoo

Configure Odoo to automatically spread revenue recognition across the service delivery period - booking deferred revenue on invoice and releasing it incrementally each month.

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#

  1. Invoice customer for Annual Subscription: $12,000
  2. Odoo posts: Debit Accounts Receivable $12,000 → Credit Deferred Revenue $12,000
  3. Customer pays → Deferred Revenue balance remains until recognized
  4. Each month: Odoo auto-generates a recognition entry:

- Debit Deferred Revenue $1,000

- Credit Revenue $1,000

  1. 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.

Try ERPeek on your own Odoo module - ask questions, scaffold tests, and explore your codebase in plain language.

Get started free