Advanced Exchanges
What are advanced exchanges?
Advanced exchanges allow customers to select a different variant or product for exchange, at any price.
When advanced exchanges are enabled, ReturnZap will automatically calculate exchange financials and allow shop admins to resolve partial refunds or to collect additional payment.
Advanced exchanges opens up the entire shop product catalog for exchange, presenting an opportunity for upsell and further revenue retention through exchange.
Advanced exchanges require the ReturnZap PLUS plan
Advanced exchange settings
Enabled advanced exchanges
Advanced exchanges can be enabled in ReturnZap settings in Settings > Policies > Exchanges > Advanced Exchanges
Partial refund logic
In the case when a customer exchanges an item for a less expensive item, a partial refund will be due. ReturnZap will calculate this amount and make it easy to issue the refund through the click of the button.
The default action for partial refunds can be done in one of two ways:
- Resolve as refund (original payment)
- Resolve as store credit
If the option to resolve as store credit is selected, ReturnZap will issue partial refunds to the default store credit method enabled for your shop in ReturnZap settings.
Note that the default action will only apply if the customer's return does not also include a return for refund or for store credit.
In the event that a customer returns multiple items and an exchange is returned alongside a return for refund or store credit, ReturnZap will apply the same policy logic to the partial refund due for exchange.
Example case 1:
- Customer returns product A in exchange for product B, and is due $10 as partial refund
- Shop has setting enabled to resolve exchanges as refunds to original payment method in the case of partial refund
- ReturnZap will complete the exchange and issue a $10 refund to the customer when the return is completed
Example case 2:
- Customer returns product A in exchange for product B, and is due $10 as partial refund
- Customer also returns product C for store credit
- Shop has setting enabled to resolve exchanges as refunds to original payment method in the case of partial reufnd
- ReturnZap will complete the exchange and issue both the $10 partial refund and the refund for product C as store credit
Advanced exchange order creation
When advanced exchanges are enabled, all exchanges will be created using the original Shopify order. Draft order exchanges are not possible when using advanced exchanges.
Learn more about completing exchanges on the original order here.
Advanced exchanges - Portal experience
Selecting an item for exchange
When advanced exchanges are enabled, your customers will see two options in the returns portal when initiating an exchange:
Exchange for Another Variant
ReturnZap will pull the names of configured variants of the same product and allow the customer to select one. Inventory balances will be considered, so customers will only be able to select an item for exchange if it is in stock or explicitly available for sale when out of stock
Exchange for Something Else
Customers will be able to search your product catalog for any item and select a replacement product. ReturnZap will display prices so customers can see if a refund or additional payment is owed.
When a partial refund is due
When the value of items selected for exchange is less than the balance being returned, ReturnZap will display an estimated total for refund.
This total will include the value of items being returned, the offsetting value of items selected in exchange, estimated tax impacts, as well as relevant restocking and shipping fees.
When additional payment is due
When additional payment is due as a result of a more expensive item being selected, the summary will reflect the total amount to be paid by the customer
When the customer submits their return, they will be prompted to initiate payment for the balance due on the confirmation page. Payment due for exchanges is always handled via Shopify checkout.
The customer can pay the amount due in one of two ways:
- Immediately pay the balance via Shopify checkout link
- Receive an invoice via email for payment at a later date
Note: If a return requires manual approval then the customer will not be prompted to pay the balance due until the return is approved. The customer will receive an invoice for payment via email once approved.
Advanced exchanges - Admin experience
Exchange balance owed
If the customer's return includes an exchange for a more expensive item and additional payment is due, the ReturnZap RMA page will reflect this.
The RMA page header will display an "Awaiting payment" badge along with a section labeled "Exchange balance".
If required, payment invoices can be re-sent to customers by hovering on the "Exchange balance" section and clicking to re-send the invoice.
Once the customer has paid their balance, the order status will update to Paid so shop admins know that the exchange can now be completed.
Exchange items and default policy
When an advanced exchange is underway, ReturnZap will display return items in two separate sections.
Items being sent back are displayed in the top section, while items selected as replacement are displayed in the bottom section.
Return items will display a default refund policy, even if they were submitted as an exchange. In the example above, the T Shirt is labeled "Store Credit" due to the Shop's default policy to issue exchange related refunds to store credit.
In many cases, no refund is actually due to the customer and ReturnZap will not automatically process one.
Completing advanced exchanges
When a partial refund is owed to the customer
When no refund is owed to the customer
When no refund is owed to the customer, because the exchange was done for an item at the same or higher price, ReturnZap will mark the returned item(s) as resolved as soon as the return is received.
The final step is to use the botton marked "Release Exchanges" to complete the exchange line item(s) and release their fulfillment holds.
Once released, the exchange is now fully resolved and the items will display as released: