Create return shipment
ReturnShipment
Create return shipment
POST
Create return shipment
Creates a return shipment with an attached label request — the entry point for almost every Return Helper integration. The shipment groups one or more parcels with their items, contact details, and dimensions. Label generation is queued asynchronously; the immediate response gives you the shipment ID and a
labelRequestStatusCode (typically queued), with the actual label URL delivered later via webhook.
Prerequisites
Have these values ready before calling:- A
serviceTypeCode— fetch available return services from one of these endpoints. - Origin and destination country codes — fetch via Get all from countries and Get all countries. Codes are ISO3 (
usa,gbr,chn). - Parcel dimensions and weight — required and must all be
> 0. Validate units via Get all dimension UOMs and Get all weight UOMs. - An idempotency key — strongly recommended. Send a fresh UUID in
x-returnhelper-idempotency-keyso retries don’t create duplicate shipments. See Idempotency.
Important fields
totalValueandtotalValueCurrency—totalValuemust exactly equal the sum ofparcel.items[].value. The currency is ISO 4217 (e.g.USD,GBP,EUR); use Get all transaction types to confirm a code is supported.parcel.items— multi-line-item support depends on your account configuration. Single-line-item-only accounts that submit multiple items get a validation soft-error. Contact support if you want to update your configuration.- Dimensions —
dimension1is the longest side,dimension2the second-longest,dimension3the shortest. sellerReferenceNumber— your merchant-supplied identifier, accepted at three independent layers (top-level,shipment, and per-item inparcel.items[]). Stored verbatim and echoed back in webhook events for reconciliation against your own order system. See Seller Reference Number for layer semantics, fallback behaviour when omitted, and the recommended reconciliation workflow.
Label generation is asynchronous
The immediate response includeslabelRequestStatusCode: queued. The final label URL and tracking number arrive via the labelGenerated webhook event (or labelFailed if generation fails); warehouse receipt is signalled by the markShipmentArrive event and then a inventoryCreated event. Subscribe to Webhooks — they are the source of truth for shipment lifecycle, not a polling fallback.
Related
- Get shipping fees from origin location — preview the fee before committing.
- Webhooks — subscribe to
labelGenerated,labelFailed, andmarkShipmentArrivefor the full shipment lifecycle. - Seller Reference Number — how to set
sellerReferenceNumberand reconcile webhook events back to your own order records.
Authorizations
Your API key
Your API token — keep this private
Body
application/json
Return service type code
Order title / return title
Order number
Currency code for totalValue (e.g. USD)
Shipment details including origin address and parcel info
Total declared value of the return
Seller reference number
Additional remarks
Response
Success
Created return shipment details