# Track assets and depreciation

> A debit that bought equipment is not an expense. create_asset mints the asset from that debit so the cost on the depreciation schedule and the amount that left the bank are the same number. You choose the method: instant write-off, diminishing value or prime cost, with an effective life for the last two. An instant write-off above the tenant's threshold is refused with the threshold named. get_depreciation_schedule walks each asset forward from acquisition, so this year's opening value is last year's closing value to the cent, and record_asset_disposal computes the balancing adjustment without characterising it.

URL: https://biloh.com.au/docs/how-to/track-assets-and-depreciation
Category: How-to guides | Audience: operator | Updated: 2026-09-18

## Step 1: mint the asset from the debit

> "That $1,200 debit on the 14th was a laptop. Put it on the register,
> instant write-off."

`create_asset` with `source_bank_transaction_id` takes the cost and the
acquisition date from the debit itself. A year later, "why do we say this
cost that" is answered by opening the bank line. The debit must be a debit on
your feed and must not already have minted an asset. An asset can also be
minted from a document already in the evidence layer, or entered by hand
when neither exists.

## Step 2: choose the method

`method` is required with no default:

| Method | What it means | Needs |
| --- | --- | --- |
| `instant_writeoff` | The whole cost is claimed in the acquisition year | Cost at or under `finance.assets.instant_writeoff_threshold` |
| `diminishing_value` | A fixed percentage of the written-down value each year | `effective_life_years` |
| `prime_cost` | An equal share of cost each year | `effective_life_years` |

An instant write-off above the threshold is refused with the threshold named,
rather than silently depreciated by a method nobody chose. The effective life
comes from your accountant or the ATO's effective life tables.

Ordinary consumables (fuel, cleaning supplies, small tools under your own
policy) are expenses; triage the bank line instead. See
[reconcile money out](/docs/how-to/reconcile-money-out).

## Step 3: read the schedule

> "What is our depreciation for the year?"

`get_depreciation_schedule` for a financial year (named by its end year, so
FY2027 is 1 July 2026 to 30 June 2027; omit it for the current year) returns
opening written-down value, additions, depreciation, disposals and closing
written-down value per asset, with totals. Each year is produced by walking
the asset forward from its acquisition, so this year's opening value **is**
last year's closing value, to the cent, with no re-basing off original cost.
Every row names the library each figure came from, and the response states
the write-off threshold and the diminishing-value factor it was computed
against.

An empty register still returns a schedule with headers and nil totals. "We
hold no assets" is an answer an accountant needs to be able to read.

`list_assets` is the register itself rather than the year's figures. The
balance sheet carries fixed assets at written-down value from the same source.

## Step 4: dispose

> "We sold the trailer for $800 on 3 March."

`record_asset_disposal` records the proceeds and the date and computes the
balancing adjustment as proceeds less written-down value at that date. It is
computed and shown, never characterised: whether it is assessable income or a
deduction is a decision for your accountant, and the platform does not make
it for you.

## Related

- [Prepare the BAS and the accountant pack](/docs/how-to/prepare-the-bas-and-the-accountant-pack)
- [Finance settings](/docs/reference/finance-settings)
