Instant Exchanges let customers get their replacement item straight away, without waiting for their return to arrive. A temporary hold on their card covers you in case the original item never comes back. This article explains how the hold works, when it is released or charged, how to configure it, and where Instant Exchanges are not available.
⚠️ Instant Exchanges require a Stripe connection. See How to connect your Stripe account.
How it works
When Instant Exchanges are enabled, eligible customers can choose to receive their replacement item immediately by entering card details. Swap places a temporary authorisation hold via Stripe and creates the exchange order in Shopify straight away, marked as unfulfilled, so your warehouse can dispatch it.
The hold is then released or charged according to the trigger you have chosen:
Shipping status: the hold is released when the return shows as in transit or delivered within your time limit. If it isn't, the payment is captured.
Quality control: the payment is released or charged based on the quality check outcome, with failed items charged automatically.
Manual: you release or capture the hold yourself from the RMA.
Customer flow in the returns portal
Exchange selected. The customer chooses an exchange item during their return.
Instant Exchange offered. If eligible, they can choose Instant Exchange or continue with a normal exchange.
Price difference settled. If the replacement costs more or less than the original, Swap charges the difference or issues the refund or gift card at the point of submission.
Card hold placed. Swap places a temporary authorisation hold on the customer's card, for either the full return value or the equivalent of $1 USD, depending on your settings.
Immediate fulfilment. The replacement item can be dispatched right away.
Return monitored. Swap tracks whether the original item comes back in time.
Hold released or charged. Returned in time, and the hold is released. Not returned, and the card is charged.
How the card hold works
Swap creates two things in Stripe:
A payment intent, authorised for either the full return value or the equivalent of $1 USD, and captured only if the return does not arrive in time.
A hold on the customer's card.
Stripe authorisations expire after 7 days. Because return windows are usually longer than that, Swap can place a fresh hold for the remaining time when the original expires — controlled by the Renew expired holds setting.
⚠️ Renew expired holds is off unless you turn it on. If your charge window is longer than 7 days and this is off, the authorisation lapses before the window closes and there is no guarantee the customer's card can be charged after that point. If you charge later than 7 days after the return request, turn it on.
Charge triggers
Choose how held funds are handled with the Release/charge payment authorisation setting.
Shipping status
The hold is released automatically when return tracking shows the item as in transit or delivered. You set which status counts and how long the customer has — for example, charge if the return is not In-transit within 14 days of the return request. If the return is not in the right state by the deadline, the payment is captured.
Quality control
Swap waits for quality check results on the returned items before acting, and adjusts the amount as results arrive:
Partial approval: the payment required is reduced proportionally. Approved items come off the chargeable amount.
Full approval: the payment is released immediately.
Failed items: Swap charges for the failed items immediately. Items that passed are excluded from the charge.
All quality control methods are supported — API, Mintsoft, and CSV.
💡 If your hold is set to the $1 equivalent, the hold amount itself is not reduced as items are approved — only the payment authorisation is adjusted. The hold stays at $1 until it is released.
Manual
Release or capture the hold yourself from the RMA, without waiting for an automated trigger. Available while the RMA is Open or Needs review.
Setting it up
Go to Returns → Settings → Exchanges. Connect Stripe first, then use the Instant exchanges panel:
Turn on Enable instant exchanges.
Choose a Hold amount — Full value of return item(s), which blocks cards without sufficient funds, or Equivalent of $1 USD, a lighter hold used only to validate the card.
Turn on Renew expired holds if your charge window is longer than 7 days. This is off by default.
Choose your Release/charge payment authorisation trigger, and for Shipping status, set which status counts and how many days the customer has.
Optionally add Instant exchange explanatory text, which is shown in the portal to explain your instant exchange policy to customers.
You can also tick Limit exchange in the portal to instant exchange only if you want every exchange to go through Instant Exchange.
💡 The Equivalent of $1 USD option is only available if you have connected your own Stripe account. Stores using Swap's Stripe account see it disabled, with a tooltip explaining why.
Managing an Instant Exchange RMA
Swap opens an RMA for every Instant Exchange, and it moves through three states.
Open: created when the Instant Exchange is submitted. A card hold is in place and the return items are waiting to be scanned.
Needs review: triggered automatically when something goes wrong — an additional payment failure, a hold capture failure, a label error, or an invalid address. You need to act before the flow can continue.
Closed: once the return is tracked and the hold has been released or captured, you can close the RMA manually.
Payment handling inside the RMA
Returned on time (shipping status): the hold is released automatically once tracking shows the item in transit or delivered.
Returned late (shipping status): the payment is captured automatically when the deadline passes.
Quality control: the payment is charged or released based on the outcome, with approved items excluded from any charge.
Manual: while the RMA is Open or Needs review, you can release or capture the hold yourself.
Split shipments
Where a return is split across multiple shipments, Swap monitors each one and deducts from the hold per shipment, releasing it once all shipments have arrived. See Understanding split return shipments.
Email reminders
When using the Shipping status trigger, Swap automatically sends customers two reminders if their return has not been received:
7 days before the charge
1 day before the charge
Reminders are not sent when using the Quality control or Manual triggers.
Example
Subject: Reminder: Return your items to avoid a charge {{Order number}}
Hi {{Customer Name}},
We noticed that you submitted a return request on {{return-date}}, but we haven't received confirmation that your package is on its way to our warehouse.
To avoid being charged, please drop off your return with the specified carrier by {{days left to charge}}
{{Download label}}
{{download QR}}
If you've already sent the return or need assistance, please reach out to us at {{store's support email}}.
Thank you,
{{Store Name}} Customer Support
How it appears in Shopify
If you use Swap's integration with Shopify's Returns and Exchange API, Swap adds the replacement item to the original order and sets its fulfilment status to Unfulfilled. Shopify then creates a new fulfilment order for that item, ready to ship when you process the exchange.
If you don't, Swap creates a separate exchange order, marked as unfulfilled.
What you cannot do on an Instant Exchange RMA
Restock is not supported.
Put the RMA on hold.
Convert a refund to a gift card or store credit.
Edit the variant of the exchange item.
Where Instant Exchanges are not available
Faulty item returns, because the returned item's condition cannot be validated before the replacement ships. Customers are prompted to use a normal exchange instead. If you have limited the portal to instant exchange only, the customer will not be able to proceed at all.
Own label and return to store
These depend on your charge trigger.
With the Shipping status trigger, neither is available. Swap releases or charges the hold based on return tracking, and it cannot track a return sent on your own label or handed over in store.
With the Quality control or Manual trigger, both are available. The hold is released on the quality check result or by you directly, so there is no dependency on tracking.
Other things to know
Label failures. The exchange can still be submitted, but regenerate and send a valid label promptly — the return window timer starts as soon as the request is submitted.
Zero-value orders with a refund due. Instant Exchange is allowed, but any refund for the price difference has to be issued manually in Shopify.
Charge window grace period. To allow for time zone differences, charges may occur up to 12 hours after the return window expires. The charge decision also runs on a daily job, so a charge can land the day after the deadline passes.



