Fixed Assets
Fixed assets represent long-term tangible property (equipment, vehicles, furniture, etc.) that depreciates over time. This feature requires the Fixed Assets add-on.
Asset Lifecycle
| Status | Description |
|---|---|
draft |
Recorded but not yet in service — no depreciation |
active |
In service and depreciating |
fully_depreciated |
Book value has reached salvage value |
disposed |
Sold, traded, scrapped, lost or donated |
Asset Categories
Organize assets by category with default depreciation settings and the ledgers each posting should hit:
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/categories" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Computer Equipment",
"default_useful_life_months": 36,
"default_depreciation_method": "straight_line",
"default_salvage_percent": 10,
"asset_ledger_id": "ASSET_LEDGER_UUID",
"accumulated_depreciation_ledger_id": "ACCUM_DEPR_LEDGER_UUID",
"depreciation_expense_ledger_id": "DEPR_EXPENSE_LEDGER_UUID"
}'Depreciation methods: straight_line, declining_balance, double_declining, units_of_production.
Seed standard categories (furniture, vehicles, equipment, etc.):
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/categories/seed-defaults" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"GET /api/v1/fixed-assets/categories lists them; PATCH / DELETE /api/v1/fixed-assets/categories/{category_id} edit or remove one.
Create a Fixed Asset
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "MacBook Pro M4",
"category_id": "CATEGORY_UUID",
"original_cost": 349900,
"purchase_date": "2026-03-01",
"useful_life_months": 36,
"salvage_value": 30000,
"depreciation_method": "straight_line",
"serial_number": "C02XYZ123",
"vendor_id": "VENDOR_UUID"
}'
original_costandsalvage_valueare in cents.349900= $3,499.00.
Required: name, original_cost, purchase_date. useful_life_months defaults to 60, salvage_value to 0, depreciation_method to straight_line. Pass in_service_date to place the asset in service immediately; otherwise it is created as a draft. For units_of_production, also set total_expected_units.
Capitalize from bank transactions
If the purchase already sits in a bank feed, turn those transactions into an asset instead of re-typing the cost:
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/from-transactions" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"name": "Delivery van",
"ledger_id": "VEHICLES_LEDGER_UUID",
"transaction_ids": ["TRANSACTION_UUID"],
"useful_life_months": 84,
"auto_place_in_service": true
}'The cost basis is the sum of the transactions' absolute amounts; all of them must already be categorized to ledger_id. POST /api/v1/fixed-assets/suggest-capitalization asks the AI which recent transactions look like capital purchases.
List Fixed Assets
curl "https://api.ondayzero.com/api/v1/fixed-assets?status=active" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"| Parameter | Type | Description |
|---|---|---|
status |
string | draft, active, fully_depreciated, disposed |
category_id |
UUID | Filter by asset category |
search |
string | Match on name, asset number or serial number |
cursor / limit |
Standard pagination |
Each asset in the response includes computed book_value, accumulated_depreciation, depreciable_amount, monthly_depreciation_amount and remaining_life_months.
Place in Service
Start depreciation on a draft asset:
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/{asset_id}/place-in-service" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{"in_service_date": "2026-03-15"}'Depreciation
View Schedule
curl "https://api.ondayzero.com/api/v1/fixed-assets/{asset_id}/depreciation-schedule" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"GET /api/v1/fixed-assets/{asset_id}/depreciation-entries returns the entries actually recorded so far, and GET /api/v1/fixed-assets/depreciation-matrix?start_date=…&end_date=… gives a month-by-asset grid across the whole register.
Preview Period Depreciation
See what depreciation entries would be generated for a specific period:
curl "https://api.ondayzero.com/api/v1/fixed-assets/depreciation-preview?period_date=2026-03-31" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID"Run Depreciation
Post depreciation for a period — all active assets, or only asset_ids:
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/run-depreciation" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{"period_date": "2026-03-31", "create_journal_entries": true}'Scheduled depreciation
DayZero can also queue every future depreciation entry up front and post each one when its date arrives:
POST /api/v1/fixed-assets/generate-schedulesqueues draft entries for active assets that have none (a backfill; creates no journal entries).GET /api/v1/fixed-assets/scheduled-journal-entries?through_date=…shows what is queued.POST /api/v1/fixed-assets/post-scheduled-depreciationwith an optional{"as_of": "2026-03-31"}posts everything due. It is idempotent — a retry cannot double-post.
Dispose an Asset
Record the disposal (sale, write-off, etc.) of an asset:
curl -X POST "https://api.ondayzero.com/api/v1/fixed-assets/{asset_id}/dispose" \
-H "Authorization: Bearer dz_your_token_here" \
-H "x-business-id: YOUR_BUSINESS_ID" \
-H "Content-Type: application/json" \
-d '{
"disposal_date": "2026-06-15",
"disposal_method": "sold",
"disposal_amount": 100000,
"disposal_notes": "Sold to employee"
}'disposal_method is one of sold, traded, scrapped, lost, donated; disposal_amount (proceeds, in cents) defaults to 0. Disposal automatically calculates the gain or loss against book value and creates the corresponding journal entries. Disposal is irreversible — confirm the asset and amount first.
Update or Delete
PATCH /api/v1/fixed-assets/{asset_id} edits descriptive fields (name, description, asset_number, serial_number, location, notes, category_id, vendor_id) and, while the asset is still a draft, its depreciation settings — cost, useful life and method are locked once the asset is in service.
DELETE /api/v1/fixed-assets/{asset_id} removes an asset that has no posted depreciation. Add ?force=true to also remove its depreciation entries and every journal entry posted for it (capitalization, depreciation, disposal) — for assets that were set up by mistake.