Moving to a subscription model changes your invoicing, but above all your year-end close. How Odoo Subscriptions automates the schedule, and how to book every euro to the right period under the PCN 2020.

In short. Odoo handles recurring billing through the Subscriptions module: you define a plan, a frequency and a price, and the system raises invoices on schedule without anyone touching them. The easy part ends there. The real accounting question surfaces at year-end: an annual subscription collected in October covers nine months of the following financial year, and those nine months have no business sitting in this year's profit. Without deferred revenue treatment, your profit is wrong, and so is your tax.

More and more Luxembourg SMEs are shifting some or all of their turnover to a recurring model: maintenance, hosting, support, licences, service contracts. It is comfortable for cash flow, but it builds in an accounting trap that many only discover at the close, when the reported result makes no sense. Here is how to configure the mechanics in Odoo, and above all how to wire it properly into Luxembourg accounts.

How does recurring billing work in Odoo?

In Odoo, recurring billing rests on the Subscriptions module, built around a plan that sets the billing frequency, the commitment term and the renewal conditions. Once a subscription is confirmed, Odoo raises invoices automatically at each due date, triggers payment where a mandate exists, and updates the recurring revenue indicators. No manual reminder is needed.

In practice, setting it up comes down to four decisions.

  • The recurrence plan: monthly, quarterly or annual, with the first invoice date and the renewal rule, automatic or explicit.
  • The subscription products: the items sold on a recurring basis, with their tax and revenue account. Much of the accounting hygiene is decided here.
  • The payment method: invoice to settle, or direct debit under a mandate, which brings in SEPA payments in Odoo.
  • The cancellation policy: notice period, pro-rating, and what happens to periods already invoiced.

This configuration is worth the time it takes. An SME running fifty maintenance contracts by hand easily loses a day a month to raising invoices, chasing the ones it forgot and following up on payment. Automated, it becomes a monitoring task rather than a production one.

The real issue: booking revenue to the right period

Here is the point generic articles on subscriptions skip, and it is what determines whether your accounts are right.

Take an annual maintenance contract of 12,000 € excluding VAT, invoiced and collected on 1 October 2026, covering October 2026 to September 2027. If your financial year ends on 31 December, only 3,000 € belongs to 2026. The remaining 9,000 € pays for a service you have not yet delivered: it is deferred revenue, which belongs on the liabilities side of the balance sheet, in the accruals accounts of the PCN 2020, not in the year's profit.

Treatment2026 result shownConsequence
No deferral12,000 €Profit overstated, tax paid early on revenue not yet earned
With deferred revenue3,000 €Result consistent with the matching principle, 9,000 € on the balance sheet

The gap is not cosmetic. Across a portfolio of annual subscriptions signed throughout the year, it quickly runs to tens of thousands of euros of phantom profit, with a direct effect on your corporate income tax and on the accounts you file. It is also the kind of anomaly an inspection spots without effort, because it leaves an obvious trail between the invoice date and the contract period.

Automating the deferral in Odoo

The good news is that Odoo can do this, provided someone has configured it. Odoo Accounting includes deferred revenue handling, which spreads an invoiced amount automatically across the period it relates to.

The principle runs as follows. You attach your subscription products to an account configured for deferral, stating the method and the duration. When the invoice is posted, Odoo places the full amount on an accruals account, then generates month by month the entries transferring each slice to the revenue account. At 31 December, your profit and loss holds only the portion earned, and the balance to be deferred appears on the balance sheet with no manual adjustment.

Two cautions drawn from experience. First, the deferral period must match the contract period, not the invoice date: a contract billed on the 15th spreads from the 15th to the 14th, and a setup aligned to calendar months introduces a drift that accumulates. Second, check how mid-period cancellations are handled: the remaining deferred balance must be released to profit when the service ceases to be owed, and no automation will work that out for you.

Already billing on a recurring basis without knowing whether revenue is booked to the right year? We will look at your last close.

Have my accounts reviewed

Where does VAT fit in?

Be careful not to conflate two logics that follow different calendars. VAT becomes chargeable under tax rules, generally when the invoice is issued, whatever period it covers. Accounting deferral concerns the result. On our October contract, you therefore declare VAT on the full 12,000 € in the relevant period while recognising only 3,000 € as revenue for the year. The two treatments coexist without contradiction.

For a subscription billed to a VAT-registered customer in another member state, the exemption mechanism sits on top with its own reporting obligations, which we cover in our article on intra-EU VAT in Luxembourg. The underlying setup, fiscal positions included, is described in our guide to configuring Luxembourg accounting in Odoo.

What recurring revenue gives you in management terms

Once the mechanics are in place, the subscription model offers something one-off invoicing never does: visibility. Odoo calculates your monthly recurring revenue, your churn rate and the value of contracts in force. These are figures you can read every month rather than reconstruct on a spreadsheet at year-end, and they make a cash forecast far more reliable than an order book.

They only help if they are accurate, which means the accounts feeding them must be current. A dashboard fed by books three months in arrears shows correct indicators over stale data, which is the worst of both worlds: you decide confidently on something false.

Why we handle this from both sides

Recurring revenue is a textbook case of work falling between two stools. Your integrator configures the subscriptions but does not know how deferred revenue is treated under the PCN 2020. Your accounting firm discovers the problem at the close and adjusts by hand, every year, something that could have been automatic. The outcome is a laborious annual adjustment and an interim result that is unusable for eleven months.

At Advena we do both: we configure the deferral at deployment, then keep the books in that same Odoo, from 325 € per month, all in. The practical consequence is simple: your monthly result is already adjusted, therefore readable, and the year-end holds no surprises. That is the coupling described in our guide to accounting firms in Luxembourg, applied to a concrete case.

An honest caveat: if your subscription model involves complex multi-year commitments, usage tiers or contestable revenue recognition, that is substantive work with your auditor rather than a configuration exercise. We frame the ordinary mechanics and say so when a case goes beyond them.

Moving to a recurring model, or already there? Let's frame the setup and the accounting together, before the next close.

Book a conversation

Frequently asked questions

Can Odoo invoice automatically every month?

Yes. The Subscriptions module raises invoices at each due date according to the recurrence plan defined, monthly, quarterly or annual, and can trigger direct debit where a payment mandate exists. Renewal can be automatic or subject to confirmation.

What is deferred revenue?

It is the portion of an invoiced amount that pays for a service not yet delivered at the reporting date. It sits on the liabilities side of the balance sheet, in the accruals accounts, not in profit and loss. An annual subscription invoiced in October generates deferred revenue for the months falling into the following year.

Does Odoo handle revenue spreading automatically?

Yes, through deferred revenue handling in Accounting. Once the accounts and durations are configured, Odoo places the invoiced amount in accruals and generates the spreading entries period by period. The configuration must follow the contract period rather than the calendar month.

Does VAT follow the same calendar as accounting deferral?

No. VAT is in principle chargeable when the invoice is issued, on the full amount, whereas deferral concerns only the recognition of revenue in profit and loss. The two treatments coexist without contradiction.

Do I need Odoo Enterprise for recurring billing?

The Subscriptions module belongs to the Odoo Enterprise applications. The choice between editions goes beyond this single requirement and is settled at project level, as we explain in our comparison of Odoo Community and Enterprise in Luxembourg.

Read next

Why Advena?

We configure Odoo and keep the books in the same system, which forces us to get both right: a badly configured deferral is one we have to unpick at the close. Fixed accounting fee from 325 € per month, a named account manager, accounts kept current, no hourly billing. The features described here correspond to Odoo 19, the stable version as at July 2026; check the exact scope of your edition before committing to a configuration.

A subscription portfolio to structure properly, from invoice to balance sheet? Let's talk.

Talk to us