---
title: "Retrieve a receipt by number"
method: GET
path: "/v1/receipts/by-number/{year}/{number}"
tags: ["Receipts"]
---

# Retrieve a receipt by number

`GET /v1/receipts/by-number/{year}/{number}`

## Request

- Base URL: `https://api.officina.it`
- URL: `https://api.officina.it/v1/receipts/by-number/{year}/{number}`
- Auth: HTTP bearer

Returns the receipt carrying number `number` in year `year` (the year it was issued in) — the number shown in the app, e.g. 12/2026. Numbers repeat across sezionali: pass `sezionale_id` (a sezionale id, or `default` for the series without one) to search one series; without it every series is searched.

The response is identical to `GET /v1/receipts/{id}`. A number that matches more than one document (repeated in historical data) returns 409 `ambiguous_number` with their ids in `candidates`.

## Response `200`

The receipt, exactly as retrieving it by id returns it.

## Other responses

- `401`: Missing, malformed, expired, or wrong-audience bearer token.
- `402`: The company has no active subscription, or its plan does not include API access. API access is included in the Business and Illimitato plans.
- `403`: The authenticated user lacks the required permission.
- `404`: Resource does not exist OR belongs to a different company. The two cases are intentionally indistinguishable.
- `409`: The number matched more than one document — a number repeated in historical data. `candidates` lists their ids; retrieve the right one by id. For sezionale-numbered documents, passing `sezionale_id` narrows the search to one series.
- `422`: A request field is missing or invalid (fast-fail).
- `500`: Unhandled server error. Detail is logged, not exposed.

---

[API](https://skmtc.dev/officina/apis/officina-it-api.md) · [All operations](https://skmtc.dev/officina/apis/officina-it-api/llms.txt) · [OpenAPI document](https://skmtc.dev/officina/apis/officina-it-api/revisions/7da3fccfe551?raw)
