> ## Documentation Index
> Fetch the complete documentation index at: https://docs.layerfi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Asset data

Layer tracks a business's fixed assets, such as vehicles, equipment, right-of-use assets, and goodwill, as first-class records. Each asset gets a dedicated ledger account, and you record changes to its carrying value over time, such as depreciation, improvements, impairments, and revaluations, as **value updates**. See the [Asset object](/api-reference/asset/asset) for the full data model and the [asset endpoints](/api-reference/v1/assets/create-asset) for the API.

<Note>
  Assets purchased with financing are usually created as part of the loan rather than on their own, via an `ASSET` loan proceed. See [equipment financing](/guides/loans/equipment-financing) and [leases](/guides/loans/leases) in the loan guide. This guide covers assets you track directly.
</Note>

## Create an asset

Create an asset with a `name` and an `asset_type`. A dedicated ledger account is created for it under Fixed Assets. Set an `external_id` so you can reference the asset later without storing Layer's IDs; re-sending the same `external_id` upserts the existing asset rather than creating a duplicate.

For depreciable assets, set `accumulated_depreciation_account` (along with `original_value` and `useful_life_months`) so you can record depreciation against it. `asset_type` can be `RIGHT_OF_USE_ASSET`, `VEHICLE`, `EQUIPMENT`, or `GOODWILL`. All monetary values are in cents.

```bash Request theme={null}
curl --request POST \
  --url https://sandbox.layerfi.com/v1/businesses/{businessId}/assets \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "Forklift",
  "external_id": "forklift-001",
  "asset_type": "EQUIPMENT",
  "original_value": 4000000,
  "useful_life_months": 60,
  "accumulated_depreciation_account": "ACCUMULATED_DEPRECIATION"
}'
```

## Record value changes

Record changes to an asset's carrying value as **value updates**. Each value update posts a journal entry between the asset (or its accumulated depreciation account) and a `counter_account`. Identify the asset with either `asset_id` or `asset_external_id`, and give each value update its own `external_id` for linking.

<Note>
  Value updates only affect **accrual-basis** books. Under cash accounting, depreciation, impairments, and revaluations are not recognized; see [Assets under cash accounting](#assets-under-cash-accounting) instead.
</Note>

| `update_type`               | Effect on carrying value | Typical counter account                    |
| --------------------------- | ------------------------ | ------------------------------------------ |
| `DEPRECIATION_AMORTIZATION` | Decrease                 | Depreciation expense (`DEPRECIATION`)      |
| `IMPAIRMENT`                | Decrease                 | An impairment loss expense account         |
| `REVALUATION_DOWN`          | Decrease                 | An equity or loss account                  |
| `IMPROVEMENT`               | Increase                 | The cash or payable account that funded it |
| `REVALUATION_UP`            | Increase                 | An equity or gain account                  |

### Depreciation

Depreciation requires the asset to have an `accumulated_depreciation_account`. Record a `DEPRECIATION_AMORTIZATION` value update each period with `counter_account` set to a depreciation expense account (the `DEPRECIATION` stable name maps to the Depreciation Expense account). Layer debits the expense and credits accumulated depreciation.

The example below records one month of straight-line depreciation for a \$40,000 asset over 60 months (\$666.67):

```bash Request theme={null}
curl --request POST \
  --url https://sandbox.layerfi.com/v1/businesses/{businessId}/assets/value-updates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "asset_external_id": "forklift-001",
  "external_id": "forklift-001-depreciation-2024-02",
  "amount": 66667,
  "update_type": "DEPRECIATION_AMORTIZATION",
  "counter_account": "DEPRECIATION",
  "date": "2024-02-29T00:00:00Z"
}'
```

Repeat each period (for example, monthly) for the life of the asset.

### Improvements, impairments, and revaluations

Use the other `update_type` values to record one-off changes. For an **improvement**, set `counter_account` to the account that funded the work (such as `CASH`); for an **impairment** or **downward revaluation**, use `IMPAIRMENT` or `REVALUATION_DOWN`; for an increase in fair value, use `REVALUATION_UP`.

```bash Request theme={null}
curl --request POST \
  --url https://sandbox.layerfi.com/v1/businesses/{businessId}/assets/value-updates \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "asset_external_id": "forklift-001",
  "external_id": "forklift-001-improvement-2024-06",
  "amount": 50000,
  "update_type": "IMPROVEMENT",
  "counter_account": "CASH",
  "date": "2024-06-15T00:00:00Z"
}'
```

## Assets under cash accounting

Value updates only matter for **accrual-basis** accounting. For cash-basis businesses we recommend a simpler lifecycle:

* **Create the asset whenever you need it.** Unless it was created from a [loan proceed](/guides/importing-loan-data), a new asset starts with a balance of zero.
* **Let real cash activity build its balance** instead of recording value updates. Post to the asset's ledger account directly: reference the account in [bill](/guides/importing-bill-ap-data) line items, or [categorize bank transactions](/api-reference/v1/categorize-bank-transaction) to it. Use the asset's `ledger_account` (returned when you create the asset) as the target account.
