Skip to main content
POST /v5/return/update/ updates an existing Return — the ticket, the Return Shipment, or both. Full specs: API reference.
The Returns APIs are available to accounts using the Perform.AI Returns Experience. Contact your account team to enable it.

Identify the Return

One query parameter identifies it — return_uuid, return_id, or shipment_uuid:
(For returns created through the preprinted-label flow, identify by shipment_id/shipment_uuid instead.)

What you can change

Both body objects are optional — send only what changes. return_ticket fields replace their stored values: total_refund_amount, comment, return_proofs (the whole array), refund_method, return_method, reject_reason, approver_email, additional_cost, internal_notes. shipment follows Update Shipment semantics — most fields replace entirely (whole line_items, whole address objects); tags, events, linked_shipments, documents are add-only. Locked:
Identical update requests are deduplicated for 30 seconds — harmless for retries, but don’t rely on it for concurrency control.
The response is the same nested data.shipment + data.return_ticket shape as Create a Return, with the updated updated_date.