POST /v5/return/ creates a Return — a Return Ticket (the return request’s data) plus a Return Shipment (the parcel traveling back to you). Full field specs: API reference.
The Returns APIs are available to accounts using the Perform.AI Returns Experience. Contact your account team to enable it.
When to use this API
Use it when the return request happens outside the branded returns widget — in your own returns portal, customer-service tooling, or marketplace flow. The widget creates returns itself and copies order, address, and line-item data from the outbound Shipment; via the API, you provide that data.Returning with a preprinted label that shipped inside the outbound box? Use the preprinted-label variant — same endpoint, different request shape.
The request
Two required objects:return_ticket — all fields optional: return_id (your RMA reference — unique in the account, immutable after creation), refund_method (original_payment / store_credit / exchange), return_method (drop_off / pick_up / send_by_consumer / return_to_store), comment, return_proofs (consumer proof images: url + file_name), requested_date, cost_of_return, additional_cost, reject_reason, approver_email, internal_notes.
shipment — takes the same fields as Create Shipment, with return-specific rules:
shipment_idis required, and the Return needs at least one line item — the item being returned (return_reasonon the line item is worth filling).- Don’t send
tracking_numberorcarrier_reference— the Return Booking Service assigns them when the return label is generated. order_idis highly recommended: it links the Return to the outbound order.
The response
data, returns nest shipment and return_ticket. New Returns start in return_status: "pending"; the full status lifecycle is visible via Retrieve Shipment Details v5.2.
Next steps
- Update the Return — approve, reject, or amend it.
- Track return progress with Retrieve Shipment Details v5.2, which includes the
returnsobject.