---
name: "books_save_asset"
area: "books"
title: "Register a fixed asset"
price: "$0.001"
method: "POST"
url: "https://api.conecto.chat/v1/tools/books_save_asset"
mcp_server: "https://api.conecto.chat/mcp/books"
auth: "Authorization: Bearer <conecto_sk_ key>"
docs_url: "https://conecto.chat/tools/books/books_save_asset"
---

# Register a fixed asset (`books_save_asset`)

Registers a fixed asset (a van, a machine) and how it depreciates, like Xero's: straight line, declining balance, at once or not at all.

Put an asset the business bought in the register, like Xero's fixed assets: a van, a machine, a laptop, with its cost, purchase date and the asset account its purchase was booked to (registering books nothing). method: straight_line over its life down to residual, declining_balance at rate_percent of its book value at the start of each fiscal year, full (all of it in the month it starts, for something cheap enough to write off at once) or none (land). averaging: full_month counts the month it starts in full, actual_days counts days. Depreciation goes to the depreciation expense and accumulated depreciation accounts (made as 6950 and 1590 when missing) unless expense_account and accumulated_account say otherwise. An asset depreciated before the books started brings opening_accumulated. To change one, pass asset: once its depreciation is booked, only its name, description, serial number, warranty and tracking change.

Price: $0.001 a call. A call that fails costs nothing.

## Use it when

The business bought something it will use for more than a year and its purchase is booked to an asset account; or an asset's name, serial number, warranty or tracking changes.

- For booking the purchase itself, use [purchasing_create_bill](https://conecto.chat/tools/purchasing/purchasing_create_bill.md).
- For something small booked as an expense at once, use [books_record_expense](https://conecto.chat/tools/books/books_record_expense.md).

## Say this to your agent

> We bought a service van for 36,000 euros on March 14. Depreciate it over five years down to 6,000.

## Inputs

| Name | Type | Required | Description | Allowed values | Default |
|---|---|---|---|---|---|
| `asset` | string | no | The asset to change, by its number. Leave out to register one. 1 to 20 characters. |  |  |
| `number` | string | no | A new asset's number. Default: the next FA-0001. Up to 20 characters. |  |  |
| `name` | string | no | 1 to 120 characters. |  |  |
| `purchase_date` | string | no | YYYY-MM-DD (matches ^\\d{4}-\\d{2}-\\d{2}$) |  |  |
| `cost` | number or string | no | What it cost before tax, in the base currency. Up to 24 characters. |  |  |
| `account` | string | no | The asset account its purchase was booked to, e.g. "1500". 1 to 20 characters. |  |  |
| `method` | string | no |  | `"straight_line"`, `"declining_balance"`, `"full"`, `"none"` | `"straight_line"` |
| `averaging` | string | no |  | `"full_month"`, `"actual_days"` | `"full_month"` |
| `life_years` | number | no | 0.1 to 100. |  |  |
| `life_months` | integer | no | 1 to 1,200. |  |  |
| `rate_percent` | number or string | no | Declining balance: the share of its book value a year. Up to 24 characters. |  |  |
| `residual` | number or string | no | What it is worth at the end of its life. Default 0. Up to 24 characters. |  |  |
| `depreciation_start` | string | no | When it was first used, if after the purchase date. Matches ^\\d{4}-\\d{2}-\\d{2}$. |  |  |
| `opening_accumulated` | number or string | no | Depreciation booked before the books started. Up to 24 characters. |  |  |
| `expense_account` | string | no | An account code from the chart, e.g. "6600". 1 to 20 characters. |  |  |
| `accumulated_account` | string | no | An account code from the chart, e.g. "6600". 1 to 20 characters. |  |  |
| `tracking` | object | no | Tracking options by category, e.g. {"Department": "Service"} (books_list_tracking). |  |  |
| `description` | string | no | Up to 500 characters. |  |  |
| `serial_number` | string | no | Up to 80 characters. |  |  |
| `warranty_until` | string | no | YYYY-MM-DD, "" for none. Matches ^(\\d{4}-\\d{2}-\\d{2})?$. |  |  |

## Example

Written for Hansen & Voss, a restaurant-equipment wholesaler in Hamburg with 60 staff.

MCP: call `books_save_asset` on the MCP server `https://api.conecto.chat/mcp/books` with these arguments:

```json
{
  "name": "Service van",
  "purchase_date": "2026-03-14",
  "cost": "36000",
  "account": "1500",
  "method": "straight_line",
  "life_years": 5,
  "residual": "6000"
}
```

REST:

```bash
curl https://api.conecto.chat/v1/tools/books_save_asset \
  -H "Authorization: Bearer $CONECTO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Service van", "purchase_date": "2026-03-14", "cost": "36000", "account": "1500", "method": "straight_line", "life_years": 5, "residual": "6000"}'
```

## Response

```json
{
  "call_id": "5f0c8a2e-3b7d-4c1e-9a64-2d8e1f7b0c93",
  "tool": "books_save_asset",
  "status": "succeeded",
  "replayed": false,
  "cost_usd": "$0.001",
  "balance_usd": "$19.75",
  "result": {
    "asset": {
      "number": "FA-0001",
      "name": "Service van",
      "status": "registered",
      "purchase_date": "2026-03-14",
      "cost": "36000.00",
      "account": "1500",
      "method": "straight_line",
      "averaging": "full_month",
      "life_months": 60,
      "life_years": "5",
      "rate_percent": null,
      "residual": "6000.00",
      "depreciation_start": "2026-03-14",
      "expense_account": "6950",
      "accumulated_account": "1590",
      "opening_accumulated": null,
      "accumulated": "0.00",
      "book_value": "36000.00",
      "depreciated_through": null,
      "depreciation_per_month": "500.00",
      "fully_depreciated": false,
      "tracking": null,
      "description": null,
      "serial_number": null,
      "warranty_until": null
    }
  }
}
```

`result`: asset: its number, cost, accounts, method, life or rate, residual value, accumulated depreciation, book value, the month it is depreciated through and an ordinary month's depreciation.

## Errors

| Code | Status | When | Fix |
|---|---|---|---|
| `no_books` | 409 | The business keeps no books yet. | Set them up with books_setup (base currency, start date). |
| `archived` | 409 | The account or tax is archived. | Use another one, or un-archive it with books_save_accounts. |
| `invalid_input` | 400 | A new asset lacks its name, purchase date, cost or account; the account is not an asset account of its own; straight line has no life or declining balance no rate; the residual value is above the cost; or an asset depreciated before the books started has no opening_accumulated. | Fix what the message names. |
| `not_found` | 404 | No account has that code, or no asset that number. | Check books_list_accounts and books_list_assets. |
| `name_taken` | 409 | number is another asset's. | Leave it out for the next number. |
| `has_depreciation` | 409 | Its depreciation is booked, so its cost, dates, method and accounts stay. | Undo it with books_depreciate undo_after and asset, change it, then book depreciation again. |
| `asset_disposed` | 409 | It was sold or written off. | Undo that with books_dispose_asset undo. |
| `limit_reached` | 409 | The register holds 2,000 assets. | Delete assets registered by mistake. |

The refusals every tool can give (401 key, 402 balance, 429 limits) are on the errors page: https://conecto.chat/docs/errors.md

## Related

- [books_setup](https://conecto.chat/tools/books/books_setup.md): Starts the business's double-entry books (currency, start date, chart of accounts) or changes their settings. $0.001 a call.
- [books_get](https://conecto.chat/tools/books/books_get.md): The books' settings: currency, start date, fiscal year, locked period, roles, payment accounts, taxes, and what is waiting. Free up to 1,000,000 reads a month.
- [books_list_accounts](https://conecto.chat/tools/books/books_list_accounts.md): Every account with its code, type, role and balance on a day. Free up to 1,000,000 reads a month.
- [books_save_accounts](https://conecto.chat/tools/books/books_save_accounts.md): Adds accounts or changes them, matched by code: name, type, description, code, role or archived. $0.001 a call.
- [books_save_tax](https://conecto.chat/tools/books/books_save_tax.md): Adds or changes a tax rate the books use (VAT, GST, sales tax), matched by name. $0.001 a call.
- [books_record_expense](https://conecto.chat/tools/books/books_record_expense.md): Books a cost the business paid, with its tax split off and the receipt attached. $0.01 a call.
- [books_record_entry](https://conecto.chat/tools/books/books_record_entry.md): Books a journal entry of two or more balancing lines, for whatever the other tools do not cover. $0.01 a call.
- [books_attach_receipt](https://conecto.chat/tools/books/books_attach_receipt.md): Attaches a receipt from the file store to an entry that has none. $0.01 a call.
- [books_reverse_entry](https://conecto.chat/tools/books/books_reverse_entry.md): Undoes an entry by booking its mirror image; entries are never edited or deleted. $0.01 a call.
- [books_list_entries](https://conecto.chat/tools/books/books_list_entries.md): Entries, newest first, with their lines, by dates, account, source or text. Free up to 1,000,000 reads a month.
- [books_import_bank](https://conecto.chat/tools/books/books_import_bank.md): Reads a bank statement from the file store (CSV, CAMT.053 or OFX) onto a bank account, skipping lines imported before. Free.
- [books_bank_lines](https://conecto.chat/tools/books/books_bank_lines.md): Imported bank lines (by default the ones still to match), each with up to three suggestions of what it was. Free up to 1,000,000 reads a month.
- [books_match_bank_lines](https://conecto.chat/tools/books/books_match_bank_lines.md): Says what bank lines were: entries already booked, invoices or bills they pay, an account to book them to, or nothing to book. $0.02 per bank line matched.
- [books_save_bank_rule](https://conecto.chat/tools/books/books_save_bank_rule.md): Saves a bank rule, like Xero's: which new bank lines it matches and how they are booked, to one account or split by percent, each part with its own tax. $0.001 a call.
- [books_list_bank_rules](https://conecto.chat/tools/books/books_list_bank_rules.md): Lists the bank rules in the order they are tried, with where they book and how often they were used. Free up to 1,000,000 reads a month.
- [books_apply_bank_rules](https://conecto.chat/tools/books/books_apply_bank_rules.md): Books every new bank line a rule matches, each by the first rule that matches. $0.02 per bank line booked.
- [books_delete_bank_rule](https://conecto.chat/tools/books/books_delete_bank_rule.md): Deletes a bank rule; what it booked stays booked. Free.
- [books_report](https://conecto.chat/tools/books/books_report.md): A report: profit and loss, balance sheet, trial balance, ledger, tax, the VAT or OSS return, the cash flow ahead or a snapshot of the business. Free up to 1,000,000 reads a month.
- [books_save_tracking](https://conecto.chat/tools/books/books_save_tracking.md): Saves a tracking category with its options, like Xero's: a department, a region or a project line that any line of the books can carry. $0.001 a call.
- [books_list_tracking](https://conecto.chat/tools/books/books_list_tracking.md): Lists the tracking categories and their options. Free up to 1,000,000 reads a month.
- [books_save_budget](https://conecto.chat/tools/books/books_save_budget.md): Saves a budget per income and expense account and month, like Xero's budget manager: amounts, monthly or yearly. $0.001 a call.
- [books_list_budgets](https://conecto.chat/tools/books/books_list_budgets.md): Lists the budgets with every line's monthly amounts and total. Free up to 1,000,000 reads a month.
- [books_delete_budget](https://conecto.chat/tools/books/books_delete_budget.md): Deletes a budget; the books don't change. Free.
- [books_repay_claims](https://conecto.chat/tools/books/books_repay_claims.md): Pays someone back for costs they paid with their own money (expense claims), like Xero's, with a SEPA file when asked. $0.01 a call.
- [books_list_claims](https://conecto.chat/tools/books/books_list_claims.md): Lists expense claims: what people paid for the business privately, and what each is owed. Free up to 1,000,000 reads a month.
- [books_list_assets](https://conecto.chat/tools/books/books_list_assets.md): The fixed asset register: each asset's cost, accumulated depreciation and book value, what a run would book now, and the register held against the books. Free up to 1,000,000 reads a month.
- [books_depreciate](https://conecto.chat/tools/books/books_depreciate.md): Books the depreciation of every registered asset through a month's end, one entry a month, like Xero's run depreciation; or undoes it after a date. $0.01 a call.
- [books_dispose_asset](https://conecto.chat/tools/books/books_dispose_asset.md): Sells or writes off a fixed asset, like Xero's dispose: depreciation to the day it goes, then its cost, the price and the gain or loss. $0.01 a call.
- [books_delete_asset](https://conecto.chat/tools/books/books_delete_asset.md): Takes an asset registered by mistake out of the register; the books don't change. Free.
- [books_lock](https://conecto.chat/tools/books/books_lock.md): Locks the books through a date, so nothing new is booked on or before it; null unlocks. $0.001 a call.
- [books_close_year](https://conecto.chat/tools/books/books_close_year.md): Closes a fiscal year for good: nothing is booked on or before its last day again, and it can't be undone. $0.001 a call.
- [books_export](https://conecto.chat/tools/books/books_export.md): A CSV of the journal or the accounts, a DATEV Buchungsstapel for a German tax adviser or a French FEC, with a download link. $0.001 a call.
