List and search invoices
- In the sandbox
In plain words
A client key sees its own client's invoices; the operator sees every client's, or one client's with client. Rows carry what GET /invoices/{id} carries, without documents, and no invoice content: no buyer or amounts,
and no issue date (for Romania and Poland the deadline_at follows from it, to within a few days). An unknown parameter answers 400.
apiKeyAuthorizationBearer <token>Send your key as a bearer token: Authorization: Bearer <your-api-key>. Health is the only call that needs no key.
q?stringCase-insensitive part of the invoice_ref or the invoice number. At most 100 characters.
length <= 100route?array<>One or more routes, comma-separated.
state?array<>One or more states, comma-separated.
client?stringThe operator's filter to one client. A client key may name only its own client; any other answers 404. Another shape answers 400.
^[A-Za-z0-9][A-Za-z0-9._-]{0,63}$received_from?stringFirst UTC day the invoice was received, inclusive.
datereceived_to?stringLast UTC day the invoice was received, inclusive.
datesort?stringBy the time received. Ties break on id, so a page never reshuffles between calls.
"newest""newest""oldest"page?integer1 <= value1page_size?integer252550100200One page of matches.
application/json- response
data*array<>total*integerMatches before paging.
page*integerThe page returned. A page past the end is clamped to the last.
page_size*integercounts_by_state*Matches per state with every filter but state. A state with none is left out.
curl -X GET "https://example.com/invoices" \ -H "Authorization: Bearer <your-api-key>"{ "data": [ { "id": "string", "invoice_ref": "string", "invoice_number": "string", "route": "PEPPOL", "environment": "sandbox", "state": "received", "legal_id": "string", "buyer_status": "string", "document_sha256": "string", "attempts": [ { "id": "string", "state": "received", "created_at": "2019-08-24T14:15:22Z" } ], "errors": [ { "code": "string", "source": "string", "message": "string", "field": "string", "fix_hint": "string", "who_fixes": "us", "related": [ { "code": "string", "source": "string" } ] } ], "documents": [ { "kind": "string", "sha256": "string", "href": "string" } ], "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "deadline_at": "2019-08-24T14:15:22Z" } ], "total": 0, "page": 0, "page_size": 0, "counts_by_state": { "property1": 0, "property2": 0 }}Invoices received and rejected per day and route GET
Worked out from the store on each call. received counts invoices by the UTC day they arrived; rejected counts invoices now rejected by the UTC day of their last change. A day with nothing has zeros, so a chart has no gaps. Scoped like GET /invoices.
Submit an invoice or credit note as canonical JSON POST
The service checks the document against the canonical model and the pre-checks at once, and answers 422 if either fails. Everything after that runs asynchronously (build, official validation, route submission, statuses) and is reported through status events. A corrected resubmission of a rejected invoice uses the same invoice_ref and a new Idempotency-Key; the service links the attempts. In production an ERP export is read only when the client's connector settings hold its own seller and payment, not the mapping's example: otherwise 422 connector-settings-missing, naming what is missing. A sandbox reads it with the example, as before.