API documentation | API docs for agents | OpenAPI 3.1

POST /api/v1/loads/{loadId}/vendor-expenses

ark.upsert_load_vendor_expense

Creates or updates one Vendor Expense on a visible load.

Availability
Expanded preview
Scopes
loads:readloads:writebilling:write
ARK permissions
canViewLoadscanViewBillingcanEditLoadcanMakeAdjustments
Team visibility
Required and enforced
Idempotency-Key
Required for this write
Approval
No MCP approval on REST API-token calls
Rate limit
API credential and organization budgets

Parameters

loadIdpathstringrequired
format: uuid
Idempotency-Keyheaderstringrequired
Required for external write operations. Reuse the same key only for exact retries of the same request body.
min length: 1; max length: 200

Request body

idstring | null

Existing Vendor Expense ID when updating.

format: uuid

dispatchIdstring | null

format: uuid

categorystringrequired

one of: Lumper, Insurance, Customs / Duties, Customs Broker, Transload / Crossdock, Toll, Permit, Storage, Scale Ticket, Washout, Other

amountnumberrequired
vendorNamestringrequired

min length: 1; max length: 200

paymentMethodstringrequired

one of: Credit Card, Check, ACH, Cash, EFS / Comcheck, Wire, E-Transfer, Other

paidAtstring | null
referenceNumberstring | null

max length: 200

descriptionstring | null

max length: 5000

notesstring | null

max length: 5000

billCustomerboolean

default: false

customerChargeNamestring | null

max length: 200

customerChargeAmountnumber | null

Example request

Shell
curl -X POST 'https://arktms.com/api/v1/loads/<loadId>/vendor-expenses' \
  -H "Authorization: Bearer $ARK_API_TOKEN" \
  -H "Idempotency-Key: <unique-key>" \
  -H "Content-Type: application/json" \
  -d '{
  "category": "Lumper",
  "amount": 1,
  "vendorName": "<vendorName>",
  "paymentMethod": "Credit Card"
}'

Success response

Saved Vendor Expense

objectstringrequired
okbooleanrequired
api_versionstringrequired
request_idstringrequired

Errors

No operation-specific error responses.