---
title: "Update an existing receipt"
method: PATCH
path: "/receipts/{id}"
tags: ["receipts"]
---

# Update an existing receipt

`PATCH /receipts/{id}`

Updates a receipt. Note: `status`, `receipt_number`, `external_id`, and `ottimate_po_id` cannot be changed.

## Path parameters

- `id` string, required

## Headers

- `Authorization` string, required
- `X-Api-Key` string, required
- `X-API-Version` string

## Request body

- object
  - `receipt_number` string
  - `date` string, date
  - `total_amount` number, double
  - `invoice_number_ref` string
  - `note` string
  - `items` ReceiptsIdPatchRequestBodyContentApplicationJsonSchemaItemsItems[] — Items with `id` update the existing item. Items without `id` create a new item. When creating, `quantity` and one of `ottimate_po_item_id`, `po_external_item_id`, or `sku` are required.
    - `id` string — Existing receipt item ID. If provided, updates that item; if omitted, creates a new item.
    - `external_id` string
    - `ottimate_po_item_id` string — Ottimate-assigned PO item ID. Required when creating a new item (no id), unless po_external_item_id or sku is provided.
    - `po_external_item_id` string — External ID (dd_unique_key) of the PO item — used for lookup when ottimate_po_item_id is not provided.
    - `sku` string — SKU of the PO item — used for lookup when ottimate_po_item_id and po_external_item_id are not provided. Must match exactly one item on the PO.
    - `quantity` number, double — Required when creating a new item (no id).
    - `price` number, double
    - `uom` string

## Response `200`

Successfully updated

- ReceiptUpdateResponse
  - `version` string
  - `id` string, required
  - `external_id` string
  - `receipt_number` string
  - `status` 'open' | 'pending' | 'flagged' | 'closed' | 'archived' | 'deleted', required
  - `ottimate_po_id` string
  - `date` string, date
  - `total_amount` number, double
  - `items_count` integer
  - `last_modified_date` string, date-time — Last modification timestamp. UTC ISO 8601, e.g. "2024-01-16T14:30:00Z".

## Other responses

- `400` — Bad request - Invalid parameters or request format
- `403` — Forbidden - Access denied or insufficient permissions
- `404` — Not found - Resource does not exist

---

[API](https://skmtc.dev/ottimate/apis/api-reference.md) · [All operations](https://skmtc.dev/ottimate/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ottimate/api-reference/revisions/ba91ff4c6969/schema)
