Skip to main content
POST
/
fixed_assets
Create a fixed asset
curl --request POST \
  --url https://api.arcuserp.com/v1/fixed_assets \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "Press Brake CNC-12",
  "cost_basis": 48500,
  "depreciation_method": "macrs",
  "useful_life_months": 84,
  "description": "<string>",
  "asset_code": "<string>",
  "serial_number": "<string>",
  "category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "salvage_value": 5000,
  "placed_in_service_date": "2023-12-25",
  "acquisition_date": "2023-12-25",
  "vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "po_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "vendor_bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "gl_asset_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "gl_accum_depr_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "gl_depr_expense_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "warranty_expiration": "2023-12-25",
  "warranty_provider": "<string>",
  "warranty_terms": "<string>",
  "insurance_policy": "<string>",
  "insurance_expiration": "2023-12-25",
  "notes": "<string>"
}
'
import requests

url = "https://api.arcuserp.com/v1/fixed_assets"

payload = {
"name": "Press Brake CNC-12",
"cost_basis": 48500,
"depreciation_method": "macrs",
"useful_life_months": 84,
"description": "<string>",
"asset_code": "<string>",
"serial_number": "<string>",
"category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"salvage_value": 5000,
"placed_in_service_date": "2023-12-25",
"acquisition_date": "2023-12-25",
"vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"po_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"vendor_bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"gl_asset_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"gl_accum_depr_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"gl_depr_expense_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"warranty_expiration": "2023-12-25",
"warranty_provider": "<string>",
"warranty_terms": "<string>",
"insurance_policy": "<string>",
"insurance_expiration": "2023-12-25",
"notes": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Press Brake CNC-12',
cost_basis: 48500,
depreciation_method: 'macrs',
useful_life_months: 84,
description: '<string>',
asset_code: '<string>',
serial_number: '<string>',
category_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
location_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
salvage_value: 5000,
placed_in_service_date: '2023-12-25',
acquisition_date: '2023-12-25',
vendor_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
po_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
vendor_bill_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
gl_asset_account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
gl_accum_depr_account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
gl_depr_expense_account_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
warranty_expiration: '2023-12-25',
warranty_provider: '<string>',
warranty_terms: '<string>',
insurance_policy: '<string>',
insurance_expiration: '2023-12-25',
notes: '<string>'
})
};

fetch('https://api.arcuserp.com/v1/fixed_assets', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcuserp.com/v1/fixed_assets",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Press Brake CNC-12',
'cost_basis' => 48500,
'depreciation_method' => 'macrs',
'useful_life_months' => 84,
'description' => '<string>',
'asset_code' => '<string>',
'serial_number' => '<string>',
'category_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'location_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'salvage_value' => 5000,
'placed_in_service_date' => '2023-12-25',
'acquisition_date' => '2023-12-25',
'vendor_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'po_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'vendor_bill_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'gl_asset_account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'gl_accum_depr_account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'gl_depr_expense_account_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'warranty_expiration' => '2023-12-25',
'warranty_provider' => '<string>',
'warranty_terms' => '<string>',
'insurance_policy' => '<string>',
'insurance_expiration' => '2023-12-25',
'notes' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.arcuserp.com/v1/fixed_assets"

payload := strings.NewReader("{\n \"name\": \"Press Brake CNC-12\",\n \"cost_basis\": 48500,\n \"depreciation_method\": \"macrs\",\n \"useful_life_months\": 84,\n \"description\": \"<string>\",\n \"asset_code\": \"<string>\",\n \"serial_number\": \"<string>\",\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"location_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"salvage_value\": 5000,\n \"placed_in_service_date\": \"2023-12-25\",\n \"acquisition_date\": \"2023-12-25\",\n \"vendor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"po_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vendor_bill_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_asset_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_accum_depr_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_depr_expense_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"warranty_expiration\": \"2023-12-25\",\n \"warranty_provider\": \"<string>\",\n \"warranty_terms\": \"<string>\",\n \"insurance_policy\": \"<string>\",\n \"insurance_expiration\": \"2023-12-25\",\n \"notes\": \"<string>\"\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/fixed_assets")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Press Brake CNC-12\",\n \"cost_basis\": 48500,\n \"depreciation_method\": \"macrs\",\n \"useful_life_months\": 84,\n \"description\": \"<string>\",\n \"asset_code\": \"<string>\",\n \"serial_number\": \"<string>\",\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"location_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"salvage_value\": 5000,\n \"placed_in_service_date\": \"2023-12-25\",\n \"acquisition_date\": \"2023-12-25\",\n \"vendor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"po_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vendor_bill_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_asset_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_accum_depr_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_depr_expense_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"warranty_expiration\": \"2023-12-25\",\n \"warranty_provider\": \"<string>\",\n \"warranty_terms\": \"<string>\",\n \"insurance_policy\": \"<string>\",\n \"insurance_expiration\": \"2023-12-25\",\n \"notes\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.arcuserp.com/v1/fixed_assets")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Press Brake CNC-12\",\n \"cost_basis\": 48500,\n \"depreciation_method\": \"macrs\",\n \"useful_life_months\": 84,\n \"description\": \"<string>\",\n \"asset_code\": \"<string>\",\n \"serial_number\": \"<string>\",\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"location_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"salvage_value\": 5000,\n \"placed_in_service_date\": \"2023-12-25\",\n \"acquisition_date\": \"2023-12-25\",\n \"vendor_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"po_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"vendor_bill_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_asset_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_accum_depr_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"gl_depr_expense_account_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"warranty_expiration\": \"2023-12-25\",\n \"warranty_provider\": \"<string>\",\n \"warranty_terms\": \"<string>\",\n \"insurance_policy\": \"<string>\",\n \"insurance_expiration\": \"2023-12-25\",\n \"notes\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "data": {
    "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "entity_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "asset_code": "<string>",
    "name": "<string>",
    "description": "<string>",
    "serial_number": "<string>",
    "category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "vendor_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "po_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "vendor_bill_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "cost_basis": 123,
    "salvage_value": 123,
    "accumulated_depreciation": 123,
    "tax_accumulated_depreciation": 123,
    "net_book_value": 123,
    "useful_life_months": 123,
    "placed_in_service_date": "2023-12-25",
    "acquisition_date": "2023-12-25",
    "disposal_date": "2023-12-25",
    "disposal_amount": 123,
    "gain_loss_amount": 123,
    "gl_asset_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "gl_accum_depr_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "gl_depr_expense_account_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "warranty_expiration": "2023-12-25",
    "warranty_provider": "<string>",
    "warranty_terms": "<string>",
    "insurance_policy": "<string>",
    "insurance_expiration": "2023-12-25",
    "notes": "<string>",
    "metadata": {},
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z"
  }
}
{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}
{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}
{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}
{
"error": "not_found",
"code": "not_found",
"type": "not_found",
"hint": "The requested order does not exist or does not belong to this entity.",
"param": "expand[0]",
"required": "accounts:read",
"request_id": "req_abc123"
}

Authorizations

Authorization
string
header
required

API key issued per entity via Settings > Developers > API Keys. Each key carries scopes (e.g. orders:read, products:write). Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.

Headers

Idempotency-Key
string

Client-generated unique key for idempotent POST/PATCH/DELETE operations. Alias for the Idempotency parameter. Max 255 chars. On retry with the same key, the original response is returned without re-executing the operation. Keys expire after 24 hours.

Maximum string length: 255

Body

application/json
name
string
required
Example:

"Press Brake CNC-12"

cost_basis
number<float>
required
Required range: x >= 0
Example:

48500

depreciation_method
enum<string>
required
Available options:
straight_line,
declining_balance,
double_declining,
sum_of_years,
units_of_production,
macrs,
bonus_macrs,
section_179
Example:

"macrs"

useful_life_months
integer
required
Required range: x >= 1
Example:

84

description
string | null
asset_code
string

Optional; auto-generated via canonical getNextNumber when omitted.

serial_number
string | null
category_id
string<uuid> | null
location_id
string<uuid> | null
salvage_value
number<float>
Required range: x >= 0
Example:

5000

macrs_class
enum<string>
Available options:
three_year,
five_year,
seven_year,
ten_year,
fifteen_year,
twenty_year,
twenty_seven_five_year,
thirty_nine_year
macrs_convention
enum<string>
Available options:
half_year,
mid_quarter,
mid_month
placed_in_service_date
string<date>
acquisition_date
string<date>
vendor_id
string<uuid> | null
po_id
string<uuid> | null
vendor_bill_id
string<uuid> | null
gl_asset_account_id
string<uuid>

Optional override; defaults inherit from category.

gl_accum_depr_account_id
string<uuid>
gl_depr_expense_account_id
string<uuid>
warranty_expiration
string<date> | null
warranty_provider
string | null
warranty_terms
string | null
insurance_policy
string | null
insurance_expiration
string<date> | null
notes
string | null

Response

Asset created (response includes schedule_preview of first 12 periods and acquisition_journal_entry_id when placed_in_service_date was supplied)

data
object

A capitalized fixed asset (PP and E) tracked on the entity's books with cost basis, accumulated depreciation, depreciation schedule, and lifecycle state. Lifecycle: pending_service (created, not yet placed in service), active (depreciating), suspended (depreciation halted), fully_depreciated (accumulated depreciation equals depreciable base), disposed (sold/scrapped/donated/traded_in). Scope: assets:read / assets:write. Rule 23 SSOT: cost_basis is written only by createFixedAsset and revalueAsset; accumulated_depreciation is written only by postDepreciation, disposeAsset, impairAsset, and revalueAsset.