One invoice, with the orders behind it
GET/v1/invoices/{number}
scope wallet.read
Pass series when a number could exist in more than one — a number is only unique within its series. lines breaks the invoice down per order, with what was owed, what was actually charged, and what was written off.
Query parameters#
| Name | Example | |
|---|---|---|
series | RO_BK_COM | Required when the number is ambiguous |
Response#
| Field | Type | Description |
|---|---|---|
data | object | One invoice, with the per-order lines behind it. |
data. | string | Series and number together — the invoice's real identity. The number alone is only unique WITHIN a series, so never key on it by itself. |
data. | string | The document series. Sandbox documents carry an SBX_ prefix. |
data. | string | The document number within that series. |
data. | string | The invoice currency. |
data. | integer | What you were charged, in minor units — the platform and shipping fees added up. It EXCLUDES written_off_amount, which nobody charged you. |
data. | integer | Our commission on the covered orders. |
data. | integer | Courier charges on the covered orders. |
data. | integer | What Biklo gave up because the fees you absorbed exceeded what the order was worth. Never charged to you, and on the document because it happened. |
data. | integer | How many orders this invoice covers. Fee invoices are batched, so this is rarely 1. |
data. | string|null | ISO-8601 UTC. |
data. | string | Path to the PDF, relative to the API base. Fetch it with your key like any other call — do not treat it as a public link. |
data. | boolean | true on a sandbox document, which is stamped NOT A FISCAL DOCUMENT. Stated in the payload so you never have to infer it from the series prefix. |
data. | array | One line per order on this invoice — the fee liabilities it settled. |
data. | integer | The liability id. |
data. | integer|null | Which order it arose from. |
data. | string | Its currency. |
data. | integer | What the order owed us in total — platform plus shipping fees. |
data. | integer | What we actually took. This DIFFERS from owed_amount whenever a liability settled only partly, and reading one while assuming the other is how books stop balancing. |
data. | integer | The difference we gave up rather than pursued. |
data. | integer | The commission part of what was owed. |
data. | integer | The courier part of what was owed. |
data. | string | pending means not yet collected. settled means we took what we could — NOT necessarily all of it, so check written_off_amount before assuming the order paid in full. cancelled follows a refund.Accepts |
data. | string|null | ISO-8601 UTC, or null while pending. |
data. | object|null | The invoice this landed on, once one was issued. null means it is owed but not yet invoiced — which is exactly what GET /v1/fee-liabilities is for. |
data. | string | The invoice series. |
data. | string | The invoice number. |
data. | string | Path to that invoice's PDF. |
Example
{
"data": {
"id": "RO_BK_COM/0524",
"series": "RO_BK_COM",
"number": "0524",
"currency": "RON",
"total_amount": 3950,
"platform_fee_amount": 2100,
"shipping_fee_amount": 1850,
"written_off_amount": 350,
"orders_count": 2,
"issued_at": "2026-09-12T08:10:59Z",
"pdf_url": "/v1/invoices/0524/pdf?series=RO_BK_COM",
"is_sandbox": false,
"lines": [
{
"id": 15,
"order_id": 721,
"currency": "RON",
"owed_amount": 3050,
"charged_amount": 3050,
"written_off_amount": 0,
"platform_fee_amount": 1800,
"shipping_fee_amount": 1250,
"status": "settled",
"settled_at": "2026-09-12T08:09:40Z",
"invoice": {
"series": "RO_BK_COM",
"number": "0524",
"pdf_url": "/v1/invoices/0524/pdf?series=RO_BK_COM"
}
}
]
}
}