Invoices
Archived invoices are not returned. Archiving is how the Novex UI removes an invoice, so
an archived row disappears from both GET /invoices and GET /invoices/{id} — the detail
route returns 404. There is no way to read an archived invoice through the API.
GET /invoices
curl -sS "https://nov3x.com/api/public/v1/invoices?status=PAID" \
-H "Authorization: Bearer nvx_live_your_key_here"Scope: invoices.read
Query parameters
| Parameter | Type | Notes |
|---|---|---|
limit | integer | Page size, 1–100. Defaults to 25. |
cursor | string | From the previous response’s meta.cursor. |
updatedSince | ISO 8601 | Only invoices updated at or after this instant. |
status | string | Filter by invoice status, e.g. PAID. |
eventId | string | Restrict to invoices attached to one event. |
GET /invoices/{id}
Returns 404 if the invoice is not in your workspace.
Fields
| Field | Type | Notes |
|---|---|---|
id | string | Stable identifier |
number | string | Human-facing invoice number |
status | string | e.g. PAID |
total | string | Total amount — a string, see below |
currency | string | e.g. SAR |
issueDate | ISO 8601 | Issue date |
dueDate | ISO 8601 | Due date |
createdAt | ISO 8601 | Created |
updatedAt | ISO 8601 | Last modified — use for sync |
⚠️
totalis a string, not a number. Amounts are exact decimals, and JSON numbers are floating point — parsing1234.56into a float and back is how invoices end up a halala out. Feed the string straight into your decimal type and never into afloat.
Read-only
Invoices cannot be created or modified through the API, and that is not an oversight. An invoice carries Saudi e-invoicing (ZATCA) submission state tied to a government clearance lifecycle — that is a compliance surface, not a CRUD one, and it deserves its own design rather than arriving as a side effect of a read API.
The ZATCA fields themselves (submission UUID, signed XML, hashes, clearance timestamps) are not returned by this API for the same reason.
What is not included
The money breakdown — subtotal, VAT, discounts, amount paid, balance due — is
not returned in v1. If you are reconciling payments and need it, tell us; it is
a non-breaking addition.