Expenses
The Expenses API provides CRUD access to expenses, tags, the attach/detach action and clone.New to the API? Start with Getting started (base URL, response envelope, errors, pagination) and Authentication (API keys).
Identifier note: expenses are addressed by their numeric expense_id.
Project & client are both optional and independent. When a project is linked, the client
is forced to that project’s client; a conflicting client is rejected (422).
Scope: file attachments (upload/download), recurring schedules, per-user sticky notes & pinning, bulk change-category and invoice-integration are out of API scope. Existing attachments are returned read-only.
The expense object
List / search expenses
category_id, client_id, project_id, billable (billable/not_billable),
billing_status, amount_min, amount_max, date_start, date_end, search, tags[],
sort (expense_date,expense_amount,expense_created), order, limit, page.
Get an expense
Create an expense
201).
Update an expense
billable flag is not changed once the expense has been
invoiced. Project/client consistency is enforced.
Delete an expense
Set tags
Attach / detach (project & client)
422).
Clone
billing_status reset to not_invoiced; recurring
schedules and tags are not copied). expense_date is required; the other fields optionally
override the source.
Returns the new expense (
201).
