boltReal-time API Connection for Returns

This page defines the retailer-facing returns API contract: a GET order endpoint plus POST lifecycle endpoints to register/update, cancel, and close returns, all linked by one stable UUID return ID ac

Real-time API Connection for Returns

Returns Portal Retailer API Contract

This document is written for retailers integrating a returns experience.

  • In step 1, you provide a GET endpoint that parcelLab fetches from.

  • In steps 2–4, you provide POST endpoints that parcelLab calls with return lifecycle updates.

1. Fetch Order Data

parcelLab requests order data from your system so return eligibility, return-window logic, and line-item selection can be evaluated. The rules for this live in parcelLab, you provide the order data.

Endpoint you provide

  • Method: GET

  • Example path: /orders/{order_reference}

chevron-rightRequired request input parcelLab sends to your GET endpointhashtag
Field
Type
Description

order_reference

string

Shopper-facing order number

chevron-rightSample GET response payloadhashtag

2. Register or Update RMA (incl. ASN)

parcelLab sends return submission or update payloads so your system can create or update the retailer return request. This does include tracking data for your warehouse ASN.

Endpoint you provide

  • Method: POST

  • Example path: /rma/register_or_update

chevron-rightRequired payload sections parcelLab sends to your POST endpointhashtag
Section
Required fields

Identity

order_reference, order_id, rma_reference, return_registration_id

Timing & method

submitted_at, refund_method

Return lines

line_item_id, return_quantity, return_reason_code, reason_note, compensation_type

Return labels

labels[] with carrier_code, tracking_number, is_free_label, label_cost_amount

Shipping fees

refund_shipping_fees, shipping_fee_deduction

Refund estimate

base_amount, tax_amount, label_cost, net_amount, final_amount, currency

Metadata

tags, additional_properties, idempotency_key (same UUID as return_registration_id)

chevron-rightSample register/update POST payloadhashtag

3. Cancel RMA

parcelLab sends cancellation updates when a return is cancelled. This is only possible for returns that are not yet closed.

Endpoint you provide

  • Method: POST

  • Example path: /rma/cancel

chevron-rightRequired payload fields parcelLab sends to your cancel POST endpointhashtag
Field
Required
Description

rma_reference

yes

Return to cancel

order_reference

yes

Shopper-facing order number

order_id

yes

Retailer order id

return_registration_id

yes

UUID lifecycle id from register/update

cancel_reason_code

yes

Structured cancellation reason

cancel_reason

yes

Human-readable reason

cancelled_at

yes

Cancellation timestamp

idempotency_key

yes

Same UUID as return_registration_id

tags

no

Optional segmentation

additional_properties

no

Optional metadata

chevron-rightSample cancel POST payloadhashtag

4. Close Return

parcelLab sends finalization updates when a return should be closed, i.e. the refund should be settled and any exchanges released.

This step is optional if your WMS can issue refunds within your system.

Endpoint you provide

  • Method: POST

  • Example path: /rma/close

chevron-rightRequired payload fields parcelLab sends to your close POST endpointhashtag
Field
Required
Description

rma_reference

yes

Return to close

order_reference

yes

Shopper-facing order number

order_id

yes

Retailer order id

return_registration_id

yes

Same UUID lifecycle id from register/update

trigger_refund

yes

Finalization refund decision

release_exchange_items

yes

Exchange release/finalization decision

refund_shipping_fees

yes

Shipping refund decision

status_reason

yes

Closing reason

idempotency_key

yes

Same UUID as return_registration_id

tags

no

Optional segmentation

additional_properties

no

Optional metadata

chevron-rightSample close POST payload and responsehashtag

Last updated

Was this helpful?