client.returns manages the complete lifecycle of returns and exchanges for delivered orders. You begin by requesting a return against a specific order, specifying the reason. The return then progresses through a series of lifecycle transitions — approval (where you choose the resolution), receipt, and resolution — each of which you trigger explicitly via dedicated methods.
Methods
requestReturn
Open a return request against a delivered order. Specify the reason for the return and optionally include a customer note and the specific line items being returned. Emits a return.requested webhook.
The response wraps the return object under the key
return, which is a reserved word in JavaScript. Alias it on destructuring: const { return: ret } = ....string
required
The ID of the delivered order for which you are requesting a return.
ReturnReason
required
The reason for the return. See the Return Reasons table for all valid values.
string
An optional note from the customer describing the issue. Optional.
ReturnItemInput[]
The specific line items being returned (partial returns supported). Each item accepts
name, quantity, sku, order_item_id, unit_price, and condition. Optional — omit to return the whole order.listReturns
Retrieve all return records associated with your account.
getReturn
Retrieve the current state of a return by its ID, including its status, reason, resolution, and associated items.
approveReturn
Approve a return that is in the requested state and choose the resolution. Approval creates a reverse pickup shipment (customer → merchant). Emits a return.approved webhook.
ReturnResolution
required
The resolution to apply. See the Return Resolutions table for all valid values.
string
An optional internal note explaining the approval decision. Optional.
{ return_id, status, reverse_shipment_id }.
rejectReturn
Reject a return request. Use this when the return does not meet your policy criteria. The return moves to rejected status and no further lifecycle transitions are available.
receiveReturn
Mark a return as received — confirming that the item has arrived back at your warehouse or fulfilment centre. The return moves to received status and is ready for resolution. Emits a return.received webhook.
resolveReturn
Settle a received return by applying the resolution chosen at approval. For refund, the customer is refunded and the liable party’s settled cut is clawed back via the payout ledger. For exchange, a replacement shipment is dispatched. Emits return.refunded or return.exchanged. This is the final lifecycle step.
boolean
Set to
true to flag the returned items to be restocked into inventory. Optional.{ return_id, status, resolution, refund_amount, replacement_shipment_id }.
Return Reasons
Use one of the following lowercase string values for thereason field when calling requestReturn.
Return Resolutions
Use one of the following lowercase string values for theresolution field when calling approveReturn.