Exchanges
Explore how retailers handle exchanges, ensuring smooth operations across Shopify, NetSuite, Loop, and HotWax Commerce.
Retailers often use different return options, such as store credit, replacement, refund, and exchange, to accommodate varying customer requests and preferences.
In the context of returns, an exchange refers to a transaction in which a customer returns a purchased item and, instead of receiving a refund or store credit, opts to swap the returned item for a different product. This lets the customer exchange the initially purchased item for another one.
Exchanges can be handled in various ways by different retailers, each employing unique processes.
Different Approaches for Handling Exchanges
Zero Amount Exchange Orders:
Retailers can process exchange orders by creating an exchange order with a zero amount, where the order item total is equal to the item total of the original order. So in this case no amount needs to be refunded to the customer.
Store Credit:
Retailers can issue a store credit to a customer for the amount that is equal to the returned order item, and use this store credit against the new exchanged item.
Integrated Platform Approach:
Many retailers use platforms where eCommerce, OMS, Return Management System (RMS), and Accounting can be managed in one single platform. In such cases, they can easily unlink the payment reference from the original order and apply it to the exchanged order.
Separate Systems:
Many retailers also use a separate Return Management System along with independent eCommerce, OMS, and Accounting Systems.
For example, customers we have worked with, use Shopify as their eCommerce platform, NetSuite as their ERP system, Loop as their RMS, and HotWax Commerce as their OMS.
In this setup here is how exchanges work:
As returns are initiated in Loop, it is also responsible for creating exchange orders in Shopify, whether they take place in-store or online. Loop treats the new order in Shopify as an entirely separate order that is only linked to the original order through references in extended fields.
When the customer completes their exchange process, Loop marks the original order as returned in both Shopify and NetSuite. Additionally, marks payment as refunded in NetSuite. Refunds in Shopify are intentionally not processed, because Loop uses the pending refund amount as a
discount
on the new order created as a replacement for the original order.If the new order total is less than the pending refund amount, then the leftover refund amount is processed as a refund on Shopify based on the customer's selected preference which could be either store credit or the original payment method. In the event that the new order total exceeds the pending refund amount, the outstanding balance will be captured from the customer.
Data Flow
Synchronize Web Exchanges to NetSuite
Exchange orders that are created in Shopify are imported into HotWax Commerce just like regular sales orders. Given that exchanges are created by Loop in Shopify, they are assigned the sales channel Loop Exchange
within Shopify. Consequently, all exchange orders imported into HotWax Commerce have a Loop Exchange
sales channel as well.
When it comes to pushing sales order data from HotWax Commerce to NetSuite, the handling of all web orders remains consistent irrespective of the sales channel they originate from. The generated order feed from HotWax commerce is also generic, similar to that of regular orders. This means that HotWax can synchronize web exchange orders to NetSuite in the same manner it synchronizes regular orders.
More specifically, for all web exchange orders, the sync for Customers, Sales Order Item Line IDs, Sales Order IDs, Order Allocation, and Fulfillment remains consistent between HotWax Commerce and NetSuite.
However, there are certain distinctions to note:
References to the original order stored in Shopify notes are saved in HotWax Commerce as a
communication event
and subsequently sent to NetSuite as amemo
on the order.Exchange orders have a discount code labeled
loop-discount
applied to them. This discount code is also present in NetSuite. Consequently, HotWax Commerce ensures that the exchange order is synchronized to NetSuite with this exact code, with the discount amount shared as theRate.
All exchange orders have a discount code applied to them. When the amount of the exchange order item is the same as that of the original order item, the value of the exchange order becomes zero due to the applied discount. In these instances, there is no need to create customer deposits in NetSuite. In the event the value of an exchange order item exceeds the value of the original order item, customer deposits should be created in NetSuite to reflect the authorized payments.
Since our current customers are not capturing additional payments for exchanges in Shopify, payment preferences are not being created in HotWax, and subsequently, customer deposits are not being generated in NetSuite.
In the event, payments are captured in Shopify and payment records are created in HotWax Commerce, customer deposits should also be created in NetSuite.
Restocking Item from the Original Order
Exchanges involve returning a purchased item for a different product. Therefore, it’s crucial to restock the inventory from the original order.
Upon physically receiving the returned inventory from the original order, NetSuite generates item receipt records and updates the inventory count accordingly. Subsequently, HotWax Commerce synchronizes these item receipt records from NetSuite and accurately updates the inventory count.
Synchronize POS Exchanges to NetSuite
Exchange orders that are created in Shopify POS are imported into HotWax Commerce just like regular POS sales. Given that POS exchanges are created by Loop in Shopify, they are assigned the sales channel Loop Exchange
within Shopify. Consequently, all POS exchanges imported into HotWax Commerce have a Loop Exchange
sales channel as well.
POS exchange sales are similar to other POS sales as both transactions are recorded within the physical store.
When POS sales are downloaded in HotWax Commerce, POS sales have a Completed
order status, the sales channel is set to POS\_Channel
, and the shipping method is set to POS\_COMPLETED
.
While, in the case of POS exchange sales, although they also have a Completed
order status, their sales channel is Loop Exchange.
Due to this distinction, HotWax Commerce is unable to assign their shipping method as POS_COMPLETED. Instead, it is designated as Two-Day Shipping
as default.
Attribute | POS Sales | POS Exchange Sales |
---|---|---|
Order Status | Completed | Completed |
Sales Channel | POS_Channel | Loop Exchange |
Shipping Method | POS_COMPLETED | Two-Day Shipping |
Because of these distinctions between POS sales and POS exchange sales, HotWax Commerce generates a separate feed to sync POS exchange orders to NetSuite.
How HotWax Commerce identifies POS exchange sales to sync to NetSuite:
The order status is
Completed
The sales channel is
Loop Exchange
The NetSuite order identification is absent. This condition also helps make sure that in-store exchange orders are segregated from web exchange orders and these orders are not sent to NetSuite twice.
As previously discussed, the synchronization of POS sales from HotWax Commerce to NetSuite involves the creation of Cash Sale records. All the eligible POS exchange sales are then synchronized to NetSuite just like any other POS sales and Cash Sales are created in NetSuite for POS exchange sales.
Restocking Item from the Original Order
When an item from the original order is returned on Shopify POS, HotWax Commerce downloads the return data, including the facility ID where the returned items are received. If the restocking flag is enabled, HotWax Commerce also restocks the inventory based on the captured facility ID.
In our integration, web exchange orders are handled similarly to regular orders, while POS exchange sales are handled similarly to POS sales. Therefore, the SFTP location, SuiteScripts, as well as the jobs within the HotWax Commerce Integration Platform and OMS, remain unchanged.
Last updated