List Purchase Invoices
GET/api/purchase-invoices
Get a paginated list of purchase invoices with filtering and sorting.
purchase-orders:readGrant this scope to your token under Settings → Developer → Personal Access Tokens.
Authentication: Requires Bearer token.
Filters use the filter[field] syntax. Text filters support operators like is, is_not, contains, starts_with, ends_with, is_empty, is_not_empty. Numeric filters support is, is_not, greater_than, less_than, between. Datetime filters support date range comparisons.
Allowed sorts: id, purchase_invoice_date, due_date, other_date, supplier_invoice_number, status, purchase_order_id, supplier_id, created_at, updated_at, purchase_order_number, supplier_name, line_item_count, attachments_count.
Each row includes attachments_count (number of attached documents) and attachment_filenames (their file names). Filter with filter[attachments_count] (e.g. =0 for invoices with no documents) or filter[attachment_filename] (match a document's file name). Default sort: -id (newest first). Default: excludes archived invoices unless filter[archived] is provided.
The response also includes unfiltered_total, the count of rows in the base scope before any user filters are applied — used by the frontend to show export totals.
Request
Responses
- 200
- 401
- 403
- 429
OK
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.