List Invoice (find where)
Find a list of Invoice records that match the specified criteria.
Tip: All query parameters accept multiple values for array filtering — e.g. ?id=1&id=2 or ?id[]=1&id[]=2. This also works within the where parameter: ?where={"id":[1,2,3]}.
Note: The per-attribute filter parameters and the where parameter are mutually exclusive. If where is supplied, the per-attribute filters are ignored — put all filter criteria inside where instead. limit, skip, sort, and populate are unaffected.
query Parameters
projectFilter by project ID
amountInvoice total.
invoicedAtTimestamp when the invoice was issued. (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.sssZ). This is an exact match filter; for range queries (greater than, less than), use the where parameter instead
idFilter by record ID
createdAtFilter by creation date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.sssZ). This is an exact match filter; for range queries (greater than, less than), use the where parameter instead
updatedAtFilter by last update date (YYYY-MM-DD or YYYY-MM-DDTHH:mm:ss.sssZ). This is an exact match filter; for range queries (greater than, less than), use the where parameter instead
statusFilter by status (1 = active, 0 = inactive)
whereA JSON-encoded Waterline criteria for advanced filtering. Only whitelisted criteria are supported: project, amount, invoicedAt, id, createdAt, updatedAt, status. Sub-attribute modifiers such as startsWith, >=, <=, >, <, and != are supported on any whitelisted criterion. The contains modifier is not supported on this model.
Note: If where is supplied, the per-attribute filter query parameters above are ignored — where is the entire criteria. (limit, skip, sort, and populate are unaffected.) To combine filters, put them all inside where.
e.g. ?where={"startDate":{">=":"2026-06-01","<":"2026-07-01"}}
limitThe maximum number of records to return. Defaults to 10000, capped at 50000.
skipThe number of records to skip (useful for pagination).
sortThe sort order. By default, returned records are sorted by primary key value in ascending order.
e.g. ?sort=lastName%20ASC
List Invoice (find where) › Responses
Responds with a paged list of Invoice records that match the specified criteria
Get Invoice (find one)
Update Invoice
Partially update an existing Invoice record. Despite using PUT, this endpoint applies PATCH semantics — only the fields included in the request body are modified; omitted fields are left unchanged.
path Parameters
idThe desired Invoice record's primary key value
Update Invoice › Request Body
Aerion model Invoice
Update Invoice › Responses
Responds with the newly updated Invoice record as a JSON dictionary
Aerion model Invoice
Convert a planned invoice into a real invoice
Creates an invoice the same way as bill-project and additionally marks the source planned invoice as approved and links it to the new invoice. Requires plannedInvoiceId in the body. Same permission gate as bill-project.
Convert a planned invoice into a real invoice › Request Body
plannedInvoiceIdID of the planned invoice being converted.
invoiceSame shape as bill-project.
expensestimeEntriesshouldBillAllTimeEntrieslinkTimeEntrieslockProjectDaysConvert a planned invoice into a real invoice › Responses
Created invoice and updated planned invoice
Create an invoice and mark related entries as billed
Creates an invoice for one project and (optionally) sets billedAt / invoice on the project's billable, unbilled time entries within [invoice.startDate, invoice.endDate]. Restricted to admins (canManageAllProjects) or the project's PM. Fails if any in-scope time entry is currently running. Set shouldBillAllTimeEntries or linkTimeEntries to flip the entries; set lockProjectDays to also lock the project days. When approval is active on the account, locked entries are auto-approved.
Create an invoice and mark related entries as billed › Request Body
Invoice fields. Must include project, startDate, endDate.
expensesExpense IDs to attach.
timeEntriesTime-entry IDs to attach. Ignored when shouldBillAllTimeEntries=true.
shouldBillAllTimeEntriesBill every billable, unbilled time entry on the project within [startDate, endDate] (sets billedAt and invoice on each). When approval is active on the account, also approves and locks every project day in the window.
linkTimeEntriesLike shouldBillAllTimeEntries for time-entry linking, but does not lock project days even when approval is active.
lockProjectDaysWhen approval is active, approve and lock every project day in [startDate, endDate]. Independent of time-entry linking — set alongside linkTimeEntries to bill TEs without locking, or alone to lock without billing.
Create an invoice and mark related entries as billed › Responses
Created invoice