# Invoice details

`GET /v1/invoice/@id` · scope `billing:read`

Invoice details: line items, tax, status, transactions.

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/v1/invoice/@id` |
| Method | `GET` |
| Scope | `billing:read` |
| Header | `Authorization: Bearer <token>` |
| Content-Type | — (no body) |
| Tokens that can call it | app tokens (`tinoat_`), personal API tokens (`tinopat_`) |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | integer | yes | Invoice ID |

## Example request

```bash
curl "https://api.tino.vn/v1/invoice/300001" \
  -H "Authorization: Bearer $TINO_TOKEN"
```

`$TINO_TOKEN` is a token with the scope `billing:read`. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): Python `client.billing.get_invoice_details(id)`, Node.js `await client.billing.getInvoiceDetails(id);`, PHP `$client->billing->getInvoiceDetails($id);`.

## Example response

```json
{
 "invoice": {
  "id": "300001",
  "status": "Unpaid",
  "contact_id": "0",
  "date": "2026-03-30",
  "duedate": "2026-12-07",
  "paybefore": "2026-12-07",
  "datepaid": "0000-00-00 10:00:00",
  "subtotal": 532151,
  "credit": 0,
  "tax": 42572,
  "taxrate": 10,
  "tax2": 0,
  "taxrate2": 0,
  "taxexempt": "0",
  "total": 574723,
  "grandtotal": 574723,
  "payment_module": "190",
  "rate": 1,
  "rate2": 0,
  "rate3": 1,
  "…": "11 more key(s)"
 },
 "cancancelinvoice": false,
 "invoicebody": "",
 "transactions": []
}
```

Live sample from a test account with personal data masked; long arrays and strings are trimmed (`… N more item(s)`, `… N more line(s)`).
