---
title: "Depreciate Asset"
method: POST
path: "/companies/{company_id}/gl/fixed-assets/{asset_id}/depreciate"
tags: ["gl-modules"]
---

# Depreciate Asset

`POST /companies/{company_id}/gl/fixed-assets/{asset_id}/depreciate`

## Request

- Base URL: `https://app.zeno-works.ch` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zeno-works.ch/companies/{company_id}/gl/fixed-assets/{asset_id}/depreciate`
- Auth: none declared

Post ONE period's depreciation for one asset (the manual per-asset door).

Single-period by design: the orchestrator posts due depreciation in bulk, and
this is the accountant's manual override for one asset and one period.

Refusals are 422. One carries a machine-readable code: the period already has a
depreciation entry for this asset — ``conflict.assetAlreadyDepreciated``, safe
to treat as "already done" rather than as a failure, since each period is
depreciated exactly once (a reversed depreciation releases its period). The date
rules carry codes too: ``conflict.assetNotYetInUse`` (the period ends before the
month the asset is ready for use — that month is the first one depreciated),
``conflict.assetPeriodNotStarted`` (no depreciation for months still ahead),
``conflict.assetAcquisitionReversed`` (the asset's acquisition entry was reversed)
and ``conflict.assetRegisterOutOfSync``. The others are prose only: the asset is deactivated
for the period's fiscal year (reactivate it in the year-end fixed-asset review
first), and the posting date falls outside the period or in a closed period or
sealed year. 404 for an unknown asset.

``journal_entry_id`` comes back **null**, with a 200, when the run was a no-op:
the asset is no longer ``active``, or its depreciable base is exhausted (which
flips it to ``fully_depreciated``). Check it rather than assuming a posting.
A period that already has an entry is the one no-op that answers 422 instead,
because it is the one a caller must be able to recognise.

## Path parameters

- `company_id` string, required
- `asset_id` string, required

## Headers

- `authorization` string, nullable

## Cookies

- `access_token` string, nullable

## Request body

- GlDepreciateRequest
  - `period_id` string, required
  - `posting_date` string, date, required

## Response `200`

Successful Response

- GlPostResultModule
  - `journal_entry_id` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zeno-works/apis/zeno-api.md) · [All operations](https://skmtc.dev/zeno-works/apis/zeno-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zeno-works/apis/zeno-api/revisions/1eb93dde146c?raw)
