Hundreds of fixed assets on the wrong depreciation method? There's a faster fix than editing them one by one Ask about bulk correction →
Accounting

Fixed asset depreciation in Odoo: the bulk-correction problem nobody warns you about

Odoo’s asset module is genuinely solid — until your depreciation method doesn’t match the one your organisation actually reports against. Then you find out it only lets you fix one asset at a time. And you have three hundred of them.

Entrophy Accounting 7 min read Updated 2026

Fixed asset depreciation is one of those Odoo modules that looks deceptively simple in a demo. You create an asset, pick a method, set a duration, and Odoo generates a clean depreciation board — one line per period, debiting depreciation expense and crediting accumulated depreciation, right through to the end of the asset’s useful life. It works exactly as advertised for a straightforward company running one book, one method, one policy.

The trouble starts when your organisation’s actual depreciation policy doesn’t match Odoo’s default assumptions — and by the time anyone notices, there are already hundreds of asset records sitting on the wrong schedule.

How Odoo actually calculates depreciation

Odoo’s Accounting app (and Assets, if you’re on Enterprise or using the OCA equivalent) supports a handful of computation methods on the asset form: Straight Line, Declining, and Declining then Straight Line. Each asset record carries its own acquisition date, gross value, useful-life duration, and a “first depreciation date” — and by default, that first date is derived from the acquisition or invoice date, prorated to the day or month depending on your prorata setting.

That prorata behaviour is the part that surprises people. Buy an asset on the 18th of the month and, depending on configuration, Odoo will either prorate that first period’s depreciation down to a partial amount, or push the whole first period’s charge to line up with month-end. Both are defensible accounting choices. Neither is universal.

The mismatch: when HQ’s method isn’t Odoo’s method

Here’s the pattern we see most often, and it’s worth describing as an illustrative scenario rather than a specific engagement: a subsidiary or franchise operation goes live on Odoo locally, using Odoo’s sensible acquisition-date-based defaults. Sometime later — often during a group audit, a parent-company consolidation, or a first IFRS/local-GAAP reconciliation — someone points out that the group’s actual depreciation policy runs on a constant period method: every asset class depreciates over fixed, calendar-aligned periods (say, the 1st of the month following acquisition, regardless of the exact purchase date), dictated by a parent-company accounting standard rather than by each asset’s individual acquisition date.

Odoo doesn’t model that out of the box. Its depreciation engine is asset-date-anchored by design — which is correct for the majority of standalone SMBs, and wrong for anyone reporting up into a group standard with its own period-alignment rules. The result: every asset that went in under the wrong assumption has a depreciation board that’s subtly, cumulatively off from what the parent company’s consolidation expects.

This almost never shows up as a dramatic error. It shows up as a small, nagging variance in a monthly close — the kind that’s easy to write off as rounding, until someone traces it back to two hundred assets all posting on the wrong dates.

Where it actually bites: correcting it at scale

Once the mismatch is identified, the fix in Odoo’s native UI is exactly what you’d expect from a well-built single-record form: open the asset, adjust the first depreciation date or method, and Odoo recomputes that asset’s board. It works perfectly — for one asset.

There is no native bulk editor for depreciation schedules. Odoo’s list views let you mass-edit simple fields across selected records, but the depreciation board itself is a computed, per-asset artefact — recalculating it in bulk isn’t exposed anywhere in the standard UI. If your migration or go-live left 40 assets on the wrong method, that’s an afternoon of tedious-but-survivable manual correction. If it left 300 or 3,000, it’s a multi-week project that nobody signed up for, done one form submission at a time, with every click carrying the risk of a fat-fingered date.

Why this is a bad candidate for “just write a script”

The instinct at this point is usually to reach for a one-off Python script against the database, or a bulk import that overwrites the generated depreciation lines directly. Both are riskier than they look:

Why this is exactly the kind of gap purpose-built tooling should close

This is a narrow problem. It only matters to organisations whose depreciation policy diverges from Odoo’s default assumptions, and it only becomes urgent at volume — which is precisely why Odoo hasn’t built a general-purpose bulk-correction tool for it, and why no generic app on the marketplace covers it either. But narrow doesn’t mean small: get it wrong on a few hundred assets and it lands directly in your fixed asset register, your depreciation expense line, and your next statutory audit.

The right way to solve it looks less like a script and more like a proper module: a bulk-selection wizard that lets you filter assets by category, acquisition-date range, or current method; a preview step that shows exactly which depreciation lines will change before anything is committed; safe handling of posted versus unposted journal entries; and an audit trail of what was corrected, when, and by what rule. That’s the difference between a fix you can hand to your auditor with confidence and a fix you quietly hope nobody asks about.

If you’re staring down a fixed asset register that doesn’t match your actual depreciation policy — whether that surfaced during a migration, a group consolidation, or a first real audit — it’s worth talking through before anyone starts editing records one at a time.

Accounting Fixed Assets Depreciation Data Migration

Hundreds of assets on the wrong depreciation schedule?

Tell us how many assets, which method they should be on, and whether any journal entries are already posted. We’ll scope a safe bulk-correction pass — with a preview before anything touches your books.