Fixed Assets and Depreciation
Assets are the long-lived things a company owns: buildings, machines, vehicles, IT equipment, and (increasingly) capitalised software and leases.
Why it’s its own module
Because one asset is simultaneously valued differently under different rulebooks at the same time:
| Depreciation area (book) | Purpose | Method |
|---|---|---|
| 01 — IFRS/local GAAP | Statutory reporting | Straight line, 5 years |
| 15 — Tax | Tax return | Declining balance, 3 years, first-year allowance |
| 30 — Group | Consolidation in group currency | Straight line, 7 years |
| 32 — Management | Internal costing | Replacement cost, usage-based |
| 40 — Insurance | Insured value | Indexed replacement cost |
Same asset, same cost, five different net book values. This is why you cannot model assets as a table with a depreciation column.
The asset lifecycle
Requisition ──▶ Purchase ──▶ AuC ──▶ Capitalisation ──▶ Depreciation ──▶ Retirement
│ │ │
(Asset under monthly depreciation sale / scrap /
construction) run per area transfer
Key values
| Term | Meaning |
|---|---|
| APC (Acquisition & Production Cost) | Original cost, gross |
| Accumulated depreciation | Total depreciated to date (contra-asset) |
| NBV (Net Book Value) | APC − accumulated depreciation |
| Useful life | How long you’ll use it, in years/periods |
| Salvage / residual value | Expected value at end of life; not depreciated |
| Depreciation base | APC − salvage value (usually) |
| Capitalisation date | When depreciation starts |
| Impairment | A write-down when NBV exceeds recoverable amount |
| Revaluation | Upward restatement to fair value (allowed under IFRS, not US GAAP) |
Depreciation methods
Straight line (SL)
annual = (APC − salvage) / useful_life
Simplest, most common for book purposes.
Declining balance / reducing balance (DB)
annual = NBV_start_of_year × rate
Front-loads depreciation. Common for tax. Often switches to straight line when SL would give more (the “changeover”).
Double declining balance (DDB)
rate = 2 / useful_life
Sum-of-years-digits (SYD)
year_n = (remaining_life / sum_of_years) × base
Units of production
period = (units_this_period / total_expected_units) × base
Ties depreciation to actual usage. Good for machines and vehicles.
MACRS (US tax)
Prescribed percentage tables by asset class and recovery period, with half-year / mid-quarter / mid-month conventions. Do not compute this from a formula — use the published tables.
Period control conventions
When does depreciation start and stop within a period? This is configuration, and it differs by country:
| Convention | Rule |
|---|---|
| Pro rata temporis | Exact days from acquisition date |
| Half-year | Half a year in the year of acquisition regardless of date (US tax) |
| Mid-month | Half a month in the acquisition month (US real property) |
| Mid-quarter | Applies if >40% of the year’s acquisitions land in Q4 (US) |
| Full month | Full month if acquired any time in the month |
| Next month | Starts the month after acquisition |
| Full year | Full year regardless (some tax regimes) |
Get this wrong and every asset’s depreciation is off by a fraction of a year — small per asset, material in aggregate.
Depreciation run
A monthly batch job:
For each company, each depreciation area, each asset:
1. Determine periods to depreciate (handles catch-up if the asset was capitalised late)
2. Calculate planned depreciation per the method + period control
3. Compare to already-posted depreciation
4. Post the difference:
Depreciation expense Dr (cost centre of the asset)
Accumulated depreciation Cr
5. Update the asset's posted values
Properties this job must have:
- Idempotent — re-running for the same period posts nothing extra
- Restartable — a failure at asset 40,000 of 100,000 must resume, not restart
- Test-mode — a dry run producing the same numbers without posting
- Catch-up capable — an asset capitalised in March with a January start date owes three months at once
- Per-area — one area may post to the GL, others may be memo-only (tax book usually doesn’t post to the financial ledger)
Only one depreciation area posts to the leading ledger. The others feed tax returns and parallel ledgers. Posting all of them to one ledger is a classic beginner error.
Asset under construction (AuC)
While you’re building something, costs accumulate on an AuC — a special asset that does not depreciate:
Costs collected on AuC (or on an internal order/WBS settling to AuC)
→ at go-live: settlement/capitalisation
Fixed asset (machine) Dr 850,000
AuC Cr 850,000
→ depreciation starts from the capitalisation date
Settlement can be full or partial (line-item settlement), splitting one AuC across several final assets with different useful lives. This is common for building projects: structure 40 years, HVAC 15 years, fit-out 10 years.
Retirement and disposal
Sell an asset: APC 100,000, accumulated depreciation 70,000, sale price 40,000
Bank / AR Dr 40,000
Accumulated depreciation Dr 70,000
Fixed asset (APC) Cr 100,000
Gain on disposal Cr 10,000
If sold for less than NBV, it’s a loss instead. Scrapping = same without the proceeds, full loss of NBV. Partial retirement (selling half a fleet asset) proportionally reduces APC and accumulated depreciation.
Transfers
- Intra-company — asset moves between cost centres or plants; values carry over
- Inter-company — asset moves between legal entities. This is a sale from one entity and an acquisition by the other, with a transfer price, potential gain, and elimination at consolidation
Impairment (IAS 36)
If an asset’s recoverable amount drops below NBV, you write it down:
Impairment loss Dr 120,000
Accumulated impairment Cr 120,000
Requires an annual indicator review (and mandatory annual testing for goodwill and indefinite-life intangibles). Under IFRS, impairments can be reversed if conditions improve (except goodwill); under US GAAP they cannot.
Leases — IFRS 16 / ASC 842
Since 2019, nearly all leases go on the balance sheet:
At commencement:
Right-of-use asset Dr PV of lease payments
Lease liability Cr PV of lease payments
Each period:
Depreciation expense Dr (ROU asset over lease term)
Accumulated depreciation Cr
Interest expense Dr (liability × discount rate)
Lease liability Dr (principal portion)
Bank Cr (the payment)
This created an entire lease-accounting sub-module in every ERP: contract master, payment schedules, discount rate (incremental borrowing rate), modifications, remeasurement on index-linked rents, short-term and low-value exemptions, and separate disclosure. Treat it as its own domain.
Data model
asset(
id, company_id, asset_class, asset_number, sub_number,
description, serial_number, inventory_number,
cost_center_id, plant_id, location, responsible_person,
capitalisation_date, deactivation_date,
quantity, unit,
status -- PLANNED|AUC|ACTIVE|RETIRED|SCRAPPED
)
asset_valuation( -- one row per asset per depreciation area
asset_id, area_id,
depreciation_key, useful_life_years, useful_life_periods,
salvage_value, depreciation_start_date,
apc, accumulated_depreciation, accumulated_impairment,
posted_through_period
)
asset_transaction( -- append only
id, asset_id, area_id, transaction_type, -- ACQ|DEP|RET|TRF|IMP|REV
posting_date, fiscal_year, period,
amount, journal_document_id
)
The asset_valuation row per area is the whole design. Every derived number (NBV, remaining life, planned depreciation) comes from it plus the transaction history.
Asset accounting checklist
- Asset class drives GL account determination, default useful life, and depreciation key
- Depreciation run is idempotent, restartable, and has a test mode
- Reconciliation: asset subledger total = GL fixed asset accounts, every period
- Physical verification / asset count process with barcode or RFID tags
- Low-value assets policy (expense below a threshold rather than capitalise)
- Fiscal year change job for the asset ledger runs before the first posting of the new year
- Assets with zero NBV but still in use are reported (candidates for disposal or revaluation)
- Assets with no cost centre, no location, or no responsible person are flagged