Exchange Accounting Overview (Advanced)
OVERVIEW
This article is a more detailed continuation of Exchange Accounting Overview (Basic). Loop recommends reviewing the introductory overview before continuing with this one.
In this article, merchants will learn a) how Shopify handles returns on the back end and b) how Loop's exchange and store credit return options complicate Shopify reporting.
How Shopify handles refunds
Historically, Shopify has only supported returns for refund. This initial section goes through how Shopify handles refunds. Understanding how refunds function is a precursor to understanding how returns for exchange and store credit affect Shopify's reporting.
The parts of a refund
Here is the complete picture of a return once a refund has been processed:
Order (Row 1): contains the reporting values for the original order before the customer started the return. The remaining rows are broken down below.
Return (Row 2): The customer's returned product is "marked returned" in Shopify's system and undoes the sale.
Return order adjustment (Row 3): This is a positive adjustment made to returns and net sales in anticipation of the refund.
Transaction order adjustment (Row 4): This is the refund transaction where money is issued back to the customer for the returned product.
Return lines
Shopify creates two rows in the ledger for the first back-end interaction when an item is marked returned:
These rows include:
The return event row ("Return")
This row represents the start of the return process, letting the merchant know that an item is being returned.
Adds a negative Returns value for the value of the product.
Removes Net Sales for the value of the product.
Removes Tax for the tax value of the product.
The "Return order adjustment" row
This row shows the positive order adjustment Shopify creates for the value of the product, plus tax in the Returns and Net Sales columns. This positive adjustment is made in anticipation of a refund.
Refund transaction
Shopify creates a negative "transaction order adjustment". It is meant to cancel out the positive order adjustment (refer to the "Return order adj." row in prior images).
The transaction refunds money to the customer's original payment method. In the ledger, it:
Decreases Net Sales by the combined amount of the returned product, plus tax.
Adds a (negative) Returns value for the combined amount of the returned product, plus tax.
Combining the parts of a refund
The order, return event, and adjustments all work together on a return for refund.
When a refund is fully processed in Shopify, the return order adjustment and transaction order adjustment cancel each other out, leaving behind a clean row and correct totals for the "Order" and "Return" rows.
How Loop facilitates exchanges
This section explains how Loop works around Shopify's limitations for exchange and store credit returns. It also identifies the complications these returns bring to Shopify reporting.
Shopify's exchange limitations
Shopify doesn't support exchange and store credit returns because it doesn't give the option to:
Swap an item from a fulfilled order with another item on a new order (the exchange or store credit).
Transfer a sale (payment) from one product to another.
Refund a payment to any destination other than the original payment method.
Associate a new product with an original purchase.
These are the factors Loop had to work around when creating functionality for returns without refunds. All returns platforms have to negotiate this Shopify limitation when supporting exchanges.
Loop's solution
Loop uses Shopify's Order API or Gift Card API to create a new order or gift card when a customer initiates an exchange or store credit return.
There are two parts to these transactions:
The return: Loop marks the returned product(s) as "returned" in Shopify without refunding money to the customer.
The new order: Loop marks the new product(s) as "paid" to trigger fulfillment, allowing the new product(s) to be processed and shipped to the customer without collecting extra payment.
OR
Gift card: The new gift card is created in Shopify. Once the gift card is redeemed, the sale from the new order will show up in Shopify sales reporting. For more information, visit the gift card automation article.
Complications
Because Shopify does not support returns without refunds natively, there are back-end complications with Loop's exchange and store credit workarounds:
Without a refund on the original order, there is no negative adjustment to cancel out the positive one, which inflates returns and net sales in Shopify's reports.
The lack of transaction order adjustment (refund) causes the positive return adjustment to cancel out the return event row. Therefore, the total sales summary shows the sales for the original order and does not reflect a return or change in the customer's payment status.
Because Loop does not collect payment for the new products on these returns, the new order does not have a payment method, and the transaction still lives on the original order.
When Loop marks products as “returned” in Shopify, the tax is removed on the original order. Thus, Shopify will underreport taxes unless the tax is accounted for on the new exchange order.
A third-party processor, Stripe, captures upsell payments when the return is submitted. Shopify reports on the sale when the resulting exchange or store credit is processed.
Note: The upsell amount will show up on the exchange; however, the reporting doesn't include the upsell payment transaction because it went through a third party. Thus, merchants must reconcile what Stripe collected with Shopify's reporting via the New Revenue report.
Further reading
There will always be inflated reporting numbers because of how exchange and store credit returns work on the back end. But the reconciliation process is not as complicated as it seems!
The information above is meant to help merchants feel fully informed when setting up the exchange accounting process that best meets their needs.
To help merchants configure their ideal exchange accounting process and reconcile easily, please read the following:
The Loop Discount Merchants can enable the Loop Discount to avoid sales being inflated.
Accounting and Reconciliation Overview to follow the steps for reconciliation.
FAQ
Why does Loop mark products as "returned" in Shopify? Marking products returned preserves product accounting, creates a “paper trail” for products, and allows for restocking. In other words, it tells a merchant which products came back in the return.
Why does Shopify use the order adjustment if the transaction adjustment just cancels it out? Order adjustments are the mechanism that allows merchants to issue full refunds, partial refunds, and transactions that aren't tied to a product (such transactions occur when merchants apply a discount code that a customer forgot to enter, a one-time discount for a product that is not as expected, etc.).
Why does it complicate things to have a new item on one order and the original transaction on the old order? If a customer were to initiate a return for an exchanged item, the return interaction would need to happen on the exchange (where the exchanged item was recorded). In contrast, the transaction interaction would need to happen on the original order that the customer exchanged. The two back-end interactions of a return would have to happen on two different orders.
Why do the order adjustments combine tax with the value of the returned item(s)? The order adjustments simplify the value being adjusted to make reconciliation and balance as easy as possible.
Please reach out to support@loopreturns.com with any additional questions.