Skip to main content

Split Return Shipments (Returns V2)

G
Written by Guido Kaspers
Updated over a month ago

The Split Return Shipments feature lets you return items from a single order to multiple destinations. This is useful if items are shipped from different warehouses or regions.


Key Benefits

  • Multiple Return Addresses: Items can be returned to different locations depending on rules.

  • Accurate Fulfilment: Ensures returned items go to the right warehouse for processing.


Setting Up Split Shipments

1. Enable Split Shipments

  1. Go to Returns → Shipping → Settings for a carrier.

  2. Toggle Split Shipments to enabled.

  3. Add additional return addresses if needed.

Note: Always set a default return address in case a specific destination cannot be determined.

2. Configure Return Destinations

Return destinations define where items are sent back to during a return.

There are two types of destinations:

  • Custom Return Addresses

    Add any custom warehouse or partner locations manually under Returns → Shipping → Destinations. These addresses appear in the Return Addresses table and can be edited or removed at any time.

  • Shopify Fulfilment Locations (for Routing Rules)

    Shopify fulfilment locations do not appear in the Return Addresses table.

    However, they are automatically available when creating Routing Rules (see the next section).

    This allows you to route items directly back to their original fulfilment location without manually adding the address here.

Automatic routing behaviour

Items assigned to a routing rule will automatically be sent to the correct destination during returns.

Always set a default return address in case a rule cannot determine a specific destination.

3. Define Routing Rules

  • Navigate to Destinations → Define Routing Rules.

  • Assign products or product groups to destinations using:

    • Product tags

    • Fulfilment locations

4. Customer Portal Flow

  • Labels for each shipment are generated automatically.

  • Optional shipping fees can apply per shipment.

5. Managing RMAs in Dashboard

  • Each RMA splits into packages per destination.

  • View shipment details, labels, and item assignments for each package.


Instant Exchanges

Instant Exchanges fully support split shipments. When a return contains multiple shipments, each shipment is processed independently. This ensures correct payment handling and prevents issues when different shipments arrive at different times.

How it works

  • Swap monitors each shipment separately.

  • When a shipment meets the Instant Exchange conditions (for example, in transit or delivered in time), only the value of the items in that shipment is deducted from the total payment hold.

  • Other shipments remain unchanged until they meet the conditions.

  • Once all shipments have arrived, the payment hold is released fully.

Payment adjustments

  • Returned items trigger payment updates only for the items in their shipment.

  • The hold amount and payment amount always remain aligned.

  • The UI and Stripe both update instantly.

  • A log entry is added for each update, for example:

Shipment 2 is delivered. £40 removed from the total hold amount.

Charge Check Loop for Split Shipments

The charge check loop ensures Instant Exchange calculations stay accurate when shipments arrive at different times.

Monitoring shipment status

Each shipment in the RMA is continuously checked for its status (created, labelled, in transit, delivered).

Hold and payment updates

When one shipment qualifies:

  • The value of that shipment’s items is removed from the hold amount and the pending payment.

  • If the hold amount equals the full return value, both the hold and payment decrease together so they are always equal.

  • If the hold equals 1, only the payment amount changes.

  • The system does not run calculations after the hold has already been released.

Logs

Every update adds a log to the RMA indicating:

  • Which shipment changed

  • Its status

  • How much was deducted

  • The updated hold amount

Reminder emails

Reminder emails are still sent if at least one shipment has not met the conditions.

If all shipments meet the conditions, reminder emails are cancelled.

The email amounts always reflect the latest payment calculation.


Customer emails for split shipments

Swap automatically sends customer emails that include all shipments in a return.

When a return contains multiple shipments, the email displays each shipment separately, including:

  • Carrier

  • Tracking number

  • Label download

  • Items in that shipment

  • Drop-off and tracking links

Return Delivered email behaviour

The Return Delivered email is sent automatically only if all return labels are created successfully.

If one or more labels fail to generate, the email is not sent automatically from the portal.

You can still send the email manually from the RMA:

  • Regenerate the labels inside the RMA and resend the email

  • Or choose to send the email manually, even if not all labels were generated

Example email with multiple shipments


Klaviyo Events & Webhooks

Swap sends complete shipment information to Klaviyo and to all webhook endpoints when split shipments occur. Each shipment is provided separately inside an array.

What webhooks include

Each webhook includes an array of shipments. Every shipment object contains:

  • shipment_id

  • order information

  • carrier information

  • items included in that shipment

  • barcode per item

  • tracking link

  • return deep link

  • shipping address

  • RMA number

This ensures third-party systems (for example, Gorgias and RLM) receive complete data for every shipment without needing to reconstruct packages themselves.

Versioning

  • Existing webhook versions continue to work.

  • A new version (v2) supports split shipment arrays.

  • Merchants can choose the version when creating a webhook.

  • Fully backwards compatible.

  • Works whether the RMA has one or multiple shipments.

RMA API Structure for Split Shipments

The RMA API also includes shipments as an array.

Structure (simplified)

{
"rma_id": "rma_123",
"rma_number": "RMA-1001",
"status": "approved",
"shipments": [
{
"shipment_id": "shp_1",
"order": {
"...": "order fields"
},
"carrier": {
"...": "carrier fields"
},
"items": [
{
"rma_item_id": "rma_item_1",
"order_line_id": "12345",
"sku": "TSHIRT-BLACK-S",
"quantity": 1,
"barcode": "0123456789"
}
]
},
{
"shipment_id": "shp_2",
"order": {
"...": "order fields"
},
"carrier": {
"...": "carrier fields"
},
"items": [
{
"rma_item_id": "rma_item_2",
"order_line_id": "12346",
"sku": "HOODIE-GREY-M",
"quantity": 1,
"barcode": "9876543210"
}
]
}
],
"created_at": "2025-11-01T10:00:00Z",
"updated_at": "2025-11-02T12:00:00Z"
}

Field names in this example are illustrative. Always refer to the RMA API reference for the exact schema.


Best Practices

  • Always set a default return address for every carrier.

  • Verify that all destinations are within carrier coverage.

  • Configure routing rules carefully to match your workflow.

Did this answer your question?