Plans: Premium, Enterprise | Platforms: Shopify
Overview
Enabling exchanges for the first time raises a common question: what actually happens in Shopify when a customer exchanges an item? This use case follows one complete Shop now exchange paid through Shopify checkout, from the moment the customer submits the return to the moment the new item ships.
At each stage, you see what changes in three places:
Your Shopify admin
Your AfterShip Returns admin
Your customer's returns page
Use this guide to set expectations with your team, plan your fulfillment process, and choose the right settings before you go live.
The scenario
An outdoor gear brand sells on Shopify and uses AfterShip Returns with Shopify checkout. A customer bought a wrist compass and wants to exchange it for a more expensive watch.
| Order | Item | Value |
Original order | #1124 | Suunto M-9 Wrist Compass | $100.00 |
Exchange order | #1125 | Garmin Forerunner 35 Watch, Frost Blue | $300.00 |
RMA | #2RXIRXWK |
|
|
The brand has these settings in place:
Settings | Configuration |
Exchange flow | Exchange on AfterShip Returns page |
Checkout method | Shopify checkout |
Discount flow | Discount On (full return value applied as a discount) |
Exchange shipping | Free |
Fulfillment control | Shopify Flow 'hold on' new exchange orders |
Automation | Auto-release Shopify exchange items when the return is marked to a certain status. |
The customer pays the $200.00 difference at checkout.
Decide before you go live
The biggest difference with Shopify checkout is timing: Shopify creates and charges the exchange order the moment the customer submits the return, not when you approve it. Plan your setup around that.
If you need to | Set this up |
Avoid shipping the new item before the return is on its way | A Shopify Flow hold on exchange orders, plus Auto-release Shopify exchange items |
Ship faster while still waiting for proof of return | Set the auto-release condition to In-transit or Delivered |
Keep exchange orders at true sales value for a 3PL or ERP | Discount Off flow |
Keep day-to-day Shopify sales figures accurate | Discount On flow (not recommended if your prices include tax) |
Hold the exchange order until return conditions are met, with no early order creation | Switch to Stripe checkout with the Exchange on your store flow |
Run tax accounting reports | Stripe checkout (on Shopify checkout, use the AfterShip sales adjustment report) |
The exchange at a glance
Stage | Customer sees | Shopify | AfterShip Returns |
1. Return submitted | Return is being processed | Payment collected | RMA created |
2. Original order updated |
| #1124 moves to Return in progress |
|
3. Exchange order created |
| #1125 created and paid, placed On hold | Exchange order linked to RMA |
4. RMA approved, label added | Package on its way, tracking link | No change to #1125 | Return shipment tracked |
5. Hold released |
| #1125 moves to Unfulfilled |
|
6. Return received | Receipt confirmation email |
| Item graded and restocked |
7. Exchange shipped | Shipping confirmation email | #1125 moves to Fulfilled | RMA labeled Exchanged |
Walk-through the exchange
Stage 1: The customer submits the return
On your returns page, the customer:
Selects Exchange for other items or refund directly.
Chooses Shop now with $100.
Picks the Garmin watch.
Selects a return shipping method and reviews the summary.
Clicks Pay and submit and pays $200.00 through Shopify checkout.
The returns page then shows Your return request is being processed.
Stage 2: Shopify updates the original order
AfterShip Returns creates a return record on order #1124. The order moves to Return in progress, and a return named #1124-R1 appears with the returned item, return reason, and customer note.
AfterShip Returns also:
Unarchives the order, so it reappears in your active order views.
Adds the tag AfterShip Returns.
Adds a note with the RMA number, returned SKUs, Shopify Return ID, and Shopify Return Name.
Important: Do not click Process and refund on this return record. The customer already used this value as credit on the exchange order, so refunding here pays them twice.
Stage 3: Shopify creates the exchange order
At the same moment, Shopify creates order #1125 for the watch.
Shopify automatically creates an exchange order when the customer buyers a higher-priced variant and pays using the Shopify-checkout. In this scenario, the auto-create exchange order automation rules will not apply.
Line | Value |
Subtotal, 1 item | $300.00 |
Discount, AfterShip Returns exchange | -$100.00 |
Shipping, Exchange shipping | $0.00 |
Total | $200.00 |
Paid | $200.00 |
AfterShip Returns adds this note to the order:
[AfterShip Returns] RMA #2RXIRXWK Exchange for #1124 Checkout: shopify_checkout Upsell revenue: $200.00 USD
It also applies three tags:
Tag | Purpose |
#1124 | Links the exchange order to the original order |
AfterShip Returns exchange order | Identifies the order as an exchange |
AfterShip replace item | Legacy resolution tag |
Because the Flow hold is in place, the order shows On hold with Flow hold: Awaiting payment. Without a hold, the order would be Unfulfilled and ready to ship before the customer sends anything back.
Note: Your custom exchange order prefix (for example, EXC-) does not apply here. Shopify names the order after payment, so it uses your standard order numbering. Use the note and tags to find exchange orders.
Stage 4: The RMA appears in AfterShip Returns
Open the RMA under Returns. You see:
The return item and exchange item listed separately
A summary showing return value -$100.00, exchange value $300.00, and Total payment $200.00 USD, marked Paid: Shopify
Orders #1124 and #1125 linked in the right column
A timeline entry: Exchange order #1125 created by automation
Return shipments showing No prepaid label
The timeline confirms the timing.
Return request created and Exchange order #1125 created by automation share the same timestamp since both the events happen simultaneously.
Status updated to approved comes later.
Stage 5: Approve the RMA and add the return label
Open the RMA detail page.
Approve the request if it was not auto-approved (Requires configuration through the Routing rules settings).
In Return shipments, click Add return label.
After you add the label:
The customer receives an email with return instructions and the label.
The tracking number appears on the RMA list and detail pages.
The return status moves from No prepaid label to Pre-shipment, then Shipped and Delivered as the carrier scans the package.
Enable Returns tracking to receive these updates and use them as automation triggers.
Important: Adding the label does not change order #1125 in Shopify. It stays On hold until the hold is released.
Stage 6: The customer tracks the return
The returns page now shows Your package is on its way with the carrier, tracking number, a Track your return button, and return instructions. It also shows a link to exchange order #1125 and a payment summary.
Track your return opens your branded tracking page with the full return journey and carrier checkpoints.
Note: To allow customers to track their return shipments, you need to first setup your returns tracking page in the Returns Page Editor. You can know how with the help of this detailed guide.
Stage 7: The hold is released
When the return reaches the status set in Auto-release Shopify exchange items, AfterShip Returns releases the hold. You can also click Release hold in Shopify.
Order #1125 moves from On hold to Unfulfilled. The Shopify timeline logs Fulfillment was released.
Note: Releasing the hold makes the order fulfillable. It does not fulfill it. You or your fulfillment provider still need to ship the item. If you release the hold in Shopify, the Release hold option disappears from the exchange order detail page.
Stage 8: The returned item arrives
On the RMA detail page, click Receive items.
Confirm the quantity received.
Click Grade item condition and set the grade.
Under Restock at, choose the location.
Keep Send email notification to customer selected.
Click Submit.
To automate this step, use Auto-mark as received with a delay and Auto-restock items when the items are marked as received once the grading conditions are met to give your warehouse time to inspect the item.
Stage 9: The exchange order ships
When you fulfill order #1125, it moves to Fulfilled with a fulfillment record (#1125-F1) and its own tracking number. Shopify sends the shipping confirmation and archives the order.
In AfterShip Returns, the RMA shows Approved, Paid, and Exchanged. You can go ahead and mark the RMA as resolved manually or,
Use Auto-mark as resolved to close it automatically.
How Other Exchange Types Differ
Exchange value
The Shopify flow above stays the same. Only the payment outcome changes.Each example follows the same two rules:
Extra credit only reduces the price difference between the new item and the returned item. It can't reduce the cost of return.
The shopper always pays the full cost of return, and any extra credit they don't use is lost.
So the formula is: (new item price − returned item price − extra credit used) + cost of return. A positive result is what the shopper pays. A negative result is what they get back as a refund.
Example | Price difference | Extra credit used | Plus cost of return | Result |
$100 item for $200 item | $100 | $5 (all of it) | $10 | Pays $105 ($100 − $5 + $10) |
$100 item for $102 item | $2 | $2 ($3 unused and lost) | $10 | Pays $10 ($2 − $2 + $10) |
$100 item for $80 item | −$20 | $0 ($5 unused and lost) | $10 | Gets a $10 refund (−$20 + $10) |
In plain terms:
Higher-value item: The shopper owes $100 more for the new item. The $5 extra credit brings that down to $95, and the $10 cost of return brings the total to $105.
Similar-value item: The shopper owes only $2 more, so they use $2 of the $5 extra credit and the item difference becomes $0. They still pay the $10 cost of return. The leftover $3 credit is lost.
Lower-value item: The new item is $20 cheaper, so there's nothing for the extra credit to cover and all $5 is lost. After subtracting the $10 cost of return from the $20 difference, the shopper gets $10 back.
Exchange flow
| Exchange on AfterShip Returns page | Exchange on your store |
Where the customer browses | Inside the returns portal | Your Shopify storefront |
Checkout methods | Shopify or Stripe checkout only | Shopify or Stripe checkout |
Instant exchanges | Not supported | Supported with Stripe checkout |
How Stripe checkout works
With Stripe checkout, AfterShip Returns captures the shopper's payment right away but holds the exchange order until your conditions are met. This way, you don't ship new items before you receive the returned ones.
Order creation: AfterShip Returns creates the exchange order in Shopify when you select Create order in AfterShip Returns, or automatically based on your settings. New exchange orders start as Unfulfilled.
Order number: Exchange orders use your exchange order prefix (
EXCby default), followed by the original order number and a suffix.Order value: Exchange orders show the full item value by default. To apply an exchange discount based on the pre-tax value of the returned items, contact AfterShip support.
Tags: Exchange orders include exchange tags and a tag with the original order number.
Original order: AfterShip Returns marks the original order as returned, but not refunded.
Instant exchanges: Stripe checkout supports Instant exchanges, so shoppers can get their new item before they send back the original.
The suffix shows how many exchanges the shopper has made against the original order:
Exchange | Suffix |
First exchange against the original order |
|
Second exchange against the same original order |
|
Exchange of an exchange order |
|
Common Concerns
1. What if the customer never sends the item back?
With Shopify checkout, the exchange order exists before the return arrives. A Shopify Flow hold plus Auto-release Shopify exchange items keeps the item from shipping until the return reaches the status you choose.
2. Why was the exchange order created before I approved the RMA?
This is expected. Payment happens at submission, so Shopify creates the order then.
3. Does Auto-create exchange order in store affect this?
No. With Shopify checkout Shop Now exchanges, the rule has no effect whether it is on or off.
4. What if I reject the exchange?
Cancel order #1125 in Shopify as well. Rejecting the RMA does not cancel the Shopify order.
For any further questions or help, contact our chat support team or email [email protected].












