Skip to main content
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:
  1. A serviceTypeCode — fetch available return services from one of these endpoints.
  2. Origin and destination country codes — fetch via Get all from countries and Get all countries. Codes are ISO3 (usa, gbr, chn).
  3. Parcel dimensions and weight — required and must all be > 0. Validate units via Get all dimension UOMs and Get all weight UOMs.
  4. An idempotency key — strongly recommended. Send a fresh UUID in x-returnhelper-idempotency-key so retries don’t create duplicate shipments. See Idempotency.

Important fields

  • totalValue and totalValueCurrency — totalValue must exactly equal the sum of parcel.items[].value. totalValueCurrency must be usd (lowercase).
  • 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 — dimension1 is the longest side, dimension2 the second-longest, dimension3 the shortest.
  • sellerReferenceNumber — your merchant-supplied identifier, accepted at three independent layers (top-level, shipment, and per-item in parcel.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 includes labelRequestStatusCode: queued. The final label URL, tracking number, and cancelCutoffTime arrive in the labelGenerated webhook event, which also reports a failed generation (labelRequestStatusCode: fail). Warehouse receipt is signalled by the markShipmentArrive event and then a newInventoryCreated event. Subscribe to Webhooks — they are the source of truth for shipment lifecycle, not a polling fallback.

Correcting a shipment

To change the address, parcel, or items after the label is generated, cancel the label with Cancel return label, then call this endpoint again with the corrected details. The new call creates a new return request; the cancelled one stays at label-canceled.

Idempotency

The x-returnhelper-idempotency-key header is optional. A call without it runs normally, with no protection against duplicates. See Idempotency.

Authorizations

x-rr-apikey
string
header
required

Your API key

x-rr-apitoken
string
header
required

Your API token — keep this private

Body

application/json
serviceTypeCode
string
default:fedex_ground
required

Return service type code

orderTitle
string
default:Return Label Title
required

Order title / return title

totalValue
number
default:100
required

Total declared value of the return

totalValueCurrency
string
default:usd
required

Currency code for totalValue. Must be usd (lowercase).

shipment
object
required

Shipment details including origin address and parcel info

sellerReferenceNumber
string

Seller reference number

remarks
string

Additional remarks

Response

Success

data
object

Created return shipment details