A return receipt states what reached a Flint Location. It records a physical fact and grants no refund or resolution authority.
Create a receipt with POST /v1/returns/{return_id}/receipts. Read receipts with GET /v1/return-receipts?return_id= and GET /v1/return-receipts/{return_receipt_id}, or expand return_receipts on GET /v1/returns/{return_id}. Receipts are written under their Return and read from their own top-level list.
These routes use the commerce.returns.operations.write scope, shared with inspections and dispositions. That separation lets a warehouse or WMS integration record custody without permission to move buyer funds. POST /v1/returns/{return_id}/process combines this work with decisions and resolutions, so it requires all three scopes: commerce.returns.write, commerce.returns.operations.write, and commerce.returns.resolutions.write. The Receiving and inspecting guide walks one parcel through receipt, inspection, and disposition.
Corrections#
A receipt is an immutable observation. To correct one, create a replacement carrying supersedes_return_receipt_id and a correction_reason. The original stays readable with an observation status of superseded. A receipt cannot be corrected after an inspection or disposition consumes it.
Automatic receipt disposition consumes matched merchandise immediately. Use a policy revision with receipt_disposition_mode: manual when your workflow needs a receipt-correction window.
Receipt line shapes#
A receipt line takes one of three shapes, and the shape decides what its quantity is allowed to do next.
| Shape | Send | Effect |
|---|---|---|
| Matched | return_line_item_id | Counts toward received_quantity and satisfies after_receipt release timing |
| Unverified | unverified_item with a name and SKU | Counts toward no line and releases no gate. Raises a merchandise_exception blocker until verified |
| Excess | quantity beyond what was approved | Counts as excess |
Verify an unidentified line with POST /v1/return-receipts/{return_receipt_id}/line-items/{return_receipt_line_item_id}/verify once an operator establishes the identity. Unverified and excess quantity can only take a non-inventory outcome such as discard, donate, or return_to_buyer, because Flint does not know which inventory item to increase.
release_timing gates every resolution type, including exchanges and replacements. See Return resolutions for how receipts release it.
