List e-invoices
The einvoices.list operation: GET /api/v1/einvoices in the REST API and the einvoices_list tool in the MCP server.
/api/v1/einvoicesLists the brand's e-invoices in the mode of the request, newest first: one per invoice or credit note whose case
(the buyer's country and transaction type) the entity's e-invoicing settings route to a provider, with its
status (pending, queued, delivered, accepted, rejected, failed), the provider's ID and the stored
document. Filter by documentId (an invoice's or credit note's e-invoice) or status. Paginate with limit
(1–100, default 10) and starting_after.
At a glance
- REST:
GET /api/v1/einvoices - MCP tool:
einvoices_list - Operation ID:
einvoices.list - Scope: Brand
- Permission:
invoices:read - Risk tier:
read - Dry run: Not supported
- Idempotency: Not needed (read only)
- Modes: Test and live
- Pagination:
limit(at most 100) andstarting_after - Authentication: API key with the
invoices:readscope - Since: M13
Request
Query parameters
| Field | Type | Required | Description |
|---|---|---|---|
documentId | string | No | The e-invoice of one invoice (inv_…) or credit note (cn_…). |
status | one of pending, queued, delivered, accepted, rejected, failed | No | Only e-invoices in this status. |
limit | integer (1 to 100) | No | Page size, 1 to 100 (default 10). |
starting_after | einv_… ID | No | The next_cursor of the previous page. |
Response
200 OK with a JSON object, a page of the list (newest first):
| Field | Type | Description |
|---|---|---|
object | "list" | |
data | array of object | |
data[].id | einv_… ID | |
data[].object | "einvoice" | |
data[].livemode | boolean | |
data[].orgId | org_… ID | |
data[].entityId | ent_… ID | |
data[].brandId | brd_… ID | |
data[].documentKind | one of invoice, credit_note | |
data[].documentId | string | The invoice (inv_…) or credit note (cn_…) it was generated from. |
data[].documentNumber | string | |
data[].customerId | string or null | |
data[].country | string | |
data[].transactionType | one of b2b, b2g, b2c | |
data[].provider | string | |
data[].format | one of UBL_2_1_PEPPOL_BIS_3, CII, national | |
data[].status | one of pending, queued, delivered, accepted, rejected, failed | pending (queued for sending), queued (the provider took it), delivered, accepted, rejected (by the receiver) or failed (couldn't be generated or sent). |
data[].externalId | string or null | The provider's ID of the transmission. |
data[].buyerEndpoint | string or null | |
data[].sellerEndpoint | string or null | |
data[].buyerReference | string or null | |
data[].file | object or null | The generated document as stored (UBL XML) and the generator version that wrote it. |
data[].error | object or null | |
data[].attempts | integer | |
data[].sentAt | date-time or null | |
data[].lastCheckedAt | date-time or null | |
data[].history | array of object | |
data[].history[].status | one of pending, queued, delivered, accepted, rejected, failed | |
data[].history[].at | date-time | |
data[].history[].reason | string or null | |
data[].createdAt | date-time | |
data[].updatedAt | date-time | |
has_more | boolean | |
next_cursor | einv_… ID or null |
Examples
The e-invoice of an invoice
GET /api/v1/einvoices?documentId=inv_01jacq4m3xf0v8w9zq2y7k5n70
Authorization: Bearer or_test_…
Response (200):
{
"object": "list",
"data": [
{
"id": "einv_01jbxa6qk3f0v8w9zq2y7k5n70",
"object": "einvoice",
"livemode": false,
"orgId": "org_01jacq4m3xf0v8w9zq2y7k5n6a",
"entityId": "ent_01jacq4m3xf0v8w9zq2y7k5n6h",
"brandId": "brd_01jacq4m3xf0v8w9zq2y7k5n6j",
"documentKind": "invoice",
"documentId": "inv_01jacq4m3xf0v8w9zq2y7k5n70",
"documentNumber": "ACME-2026-000101",
"customerId": "cus_01jacq4m3xf0v8w9zq2y7k5n6k",
"country": "HR",
"transactionType": "b2b",
"provider": "fake",
"format": "UBL_2_1_PEPPOL_BIS_3",
"status": "accepted",
"externalId": "fake_einv_000001_inv_01jacq4m3xf0v8w9zq2y7k5n70",
"buyerEndpoint": null,
"sellerEndpoint": null,
"buyerReference": null,
"file": {
"fileId": "file_01jbxa6qk3f0v8w9zq2y7k5n71",
"sha256": "3f0c1e9b7a2d4c6e8f0a1b3c5d7e9f1a2b4c6d8e0f1a3b5c7d9e1f2a4b6c8d0e",
"size": 4211,
"generator": "ubl_peppol_bis_3@1"
},
"error": null,
"attempts": 1,
"sentAt": "2026-10-14T09:31:02.000Z",
"lastCheckedAt": "2026-10-14T09:45:00.000Z",
"history": [
{
"status": "pending",
"at": "2026-10-14T09:30:05.000Z",
"reason": null
},
{
"status": "queued",
"at": "2026-10-14T09:31:02.000Z",
"reason": null
},
{
"status": "accepted",
"at": "2026-10-14T09:45:00.000Z",
"reason": null
}
],
"createdAt": "2026-10-14T09:30:05.000Z",
"updatedAt": "2026-10-14T09:45:00.000Z"
}
],
"has_more": false,
"next_cursor": null
}
Errors
| Code | HTTP status | When | What to do |
|---|---|---|---|
validation_failed | 400 | A filter is malformed. | Fix the fields listed in details.issues and send the request again. |
scope_required | 400 | The request names no brand. | Call the operation with credentials or a target at its level: an organization, a legal entity, a brand or the platform (details.required_scope). |
permission_denied | 403 | You can't see this brand's invoices. | Ask an organization owner or admin for a role or scope that allows this action. |
It can also return these common errors: api_version_unsupported, authentication_required, api_key_invalid, resource_not_found, dry_run_not_supported, rate_limited, internal_error.