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 | nullExisting Vendor Expense ID when updating.
format: uuid
dispatchIdstring | nullformat: uuid
categorystringrequiredone of: Lumper, Insurance, Customs / Duties, Customs Broker, Transload / Crossdock, Toll, Permit, Storage, Scale Ticket, Washout, Other
amountnumberrequiredvendorNamestringrequiredmin length: 1; max length: 200
paymentMethodstringrequiredone of: Credit Card, Check, ACH, Cash, EFS / Comcheck, Wire, E-Transfer, Other
paidAtstring | nullreferenceNumberstring | nullmax length: 200
descriptionstring | nullmax length: 5000
notesstring | nullmax length: 5000
billCustomerbooleandefault: false
customerChargeNamestring | nullmax length: 200
customerChargeAmountnumber | nullExample 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
objectstringrequiredokbooleanrequiredapi_versionstringrequiredrequest_idstringrequiredErrors
No operation-specific error responses.