---
title: "Retrieve a parsed receipt by ID"
method: GET
path: "/v1/receipts/{id}"
tags: ["Receipt OCR"]
---

# Retrieve a parsed receipt by ID

`GET /v1/receipts/{id}`

## Request

- Base URL: `https://api.nashboard.ai`
- URL: `https://api.nashboard.ai/v1/receipts/{id}`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

Required scope: `receipts:read`. Poll after POST /v1/receipts at 500ms–1s intervals; stop when status is `parsed` or `failed` (30s ceiling). Includes line_items when parsed.

## Path parameters

- `id` string, uuid, required

## Headers

- `X-Nashboard-Version` '2026-06-13'

## Response `200`

Receipt detail with line items.

- ReceiptDetail
  - `id` string, uuid, required
  - `status` 'queued' | 'parsed' | 'failed', required
  - `currency` string, required
  - `total_minor` integer, required
  - `subtotal_minor` integer, nullable
  - `tax_minor` integer, nullable
  - `tax_lines` object, nullable
  - `service_charge_minor` integer, nullable
  - `tip_minor` integer, nullable
  - `payment_method` string, nullable
  - `merchant_id` string, uuid, nullable
  - `merchant_confidence` number, nullable
  - `captured_at` string, date-time, required
  - `detected_langs` string[], nullable
  - `extraction_confidence` number, nullable
  - `product_links_status` 'pending' | 'ready'
  - `needs_review` boolean
  - `failure_reason` string, nullable
  - `ai_generated` boolean, required: Always true (EU AI Act Art. 50 disclosure).
  - `line_items` object[]
    - `line_no` integer
    - `description` string, nullable
    - `quantity` number, nullable
    - `unit_price_minor` integer, nullable
    - `total_minor` integer, nullable
    - `gtin` string, nullable
    - `product_global_id` string, uuid, nullable
    - `product_link_confidence` number, nullable

## Other responses

- `400`: Bad request (invalid JSON, invalid ID, invalid cursor, etc.)
- `401`: Missing, malformed, or invalid API key.
- `403`: Insufficient scope or scope escalation attempt.
- `404`: Resource not found.
- `409`: Conflict (e.g. email already taken).
- `413`: Request body too large.
- `415`: Unsupported media type.
- `422`: Request body failed schema validation.
- `429`: Rate limited, quota exceeded, or DP budget exhausted.
- `500`: Internal server error.
- `502`: Upstream dependency error (e.g. receipt image storage unavailable — code storage_failure).

---

[API](https://skmtc.dev/nashboard/apis/nashboard-b2b-api.md) · [All operations](https://skmtc.dev/nashboard/apis/nashboard-b2b-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nashboard/apis/nashboard-b2b-api/revisions/a51f5ab22ec5?raw)
