A return inspection states what an operator observed about received merchandise. It records a physical fact and grants no refund or resolution authority.
Create an inspection with POST /v1/returns/{return_id}/inspections. Read inspections with GET /v1/return-inspections?return_id= and GET /v1/return-inspections/{return_inspection_id}, or expand return_inspections on GET /v1/returns/{return_id}. Inspections are written under their Return and read from their own top-level list.
These routes use the commerce.returns.operations.write scope, shared with receipts and dispositions. 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.
An inspection names the return_receipt_id it is checking and the inspection_location_id it happened at. Filter GET /v1/return-inspections by inspection_location_id.
Corrections#
An inspection is an immutable observation. To correct one, create a replacement carrying supersedes_return_inspection_id and a correction_reason. The original stays readable with an observation status of superseded. Correct an inspection before a disposition consumes it. The /decide route only settles review_required, so a superseding inspection is also how you correct an accepted or rejected call.
Inspection lines#
Each line answers three separate questions, and all three are required:
conditiongrades the item:new,unopened,opened,used,damaged,defective,incomplete,undetermined. Chooseundeterminedwhen the item's condition could not be assessed.finding_codesrecords what was discovered:matches_expected_item,wrong_item,damaged,defective,used,missing_parts,empty_package,counterfeit_suspected,other.acceptance_statusis the call:accepted,rejected, orreview_required.
Several words appear in both condition and finding_codes and mean different things there, so read the field name alongside the value.
Acceptance#
Accepted quantity satisfies after_inspection release timing. Under manual receipt disposition, it becomes dispositionable. Under automatic receipt disposition, acceptance creates a successful sellable disposition and returns it in generated_dispositions.
review_required defers the call instead. It raises an inspection_review_required blocker that holds the Return open until POST /v1/return-inspections/{return_inspection_id}/line-items/{return_inspection_line_item_id}/decide settles it with an acceptance_status and an acceptance_decision_reason of inspection_result, return_policy, manual_review, or other.
