Skip to main content
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.
Returns { 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.
Resolve only after the item is received — resolving issues the financial outcome (e.g. a refund). Order the steps correctly: approve → receive → resolve.
boolean
Set to true to flag the returned items to be restocked into inventory. Optional.
Returns { return_id, status, resolution, refund_amount, replacement_shipment_id }.

Return Reasons

Use one of the following lowercase string values for the reason field when calling requestReturn.

Return Resolutions

Use one of the following lowercase string values for the resolution field when calling approveReturn.