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.

In this article:


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:

The image shows a Shopify report for a specific order. The report includes rows for the original order, the return, the positive return order adjustment, and the negative transaction adjustment. Each row includes values for adjustments, the sale kind, gross sales, discounts, returns, net sales, taxes, and total sales.

  • 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:

This image condenses the previous image to show only the return event and return order adjustment rows.
The return event and return order adjustment rows from the image above.

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).

This image shows just the negative transaction order adjustment row, or the refund, in the order's Shopify report.
The transaction order adjustment row from this order's Shopify report.

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.

This image contains the four rows in Shopify reporting that are relevant to the customer's refund: the original order, the return event, the positive return order adjustment, and the negative transaction order adjustment.

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.

This image shows the same order and return event rows as the previous image, except with a zeroed out, blank row at the bottom, indicating that the positive and negative order adjustments cancelled each other out.
The Total Sales column totals the values for just the original order and the return event. The bottom adjustment row cancels out to zero.

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.

    This image contains the order, return event, and positive return order adjustment rows. Without a negative transaction order adjustment row (refund), the total sales column does not reflect a returned item or change in payment status.
    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.

    This image shows the order and return event rows, highlighting the amount decreased from the Tax column for the return. This tax amount is for the value of the returned product's tax.

  • 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, Loop offers the following tools:

Tip: Please read the articles linked above to determine which settings work best for the merchant. If the merchant has already configured these settings, review the Accounting and Reconciliation Overview to follow the accounting reconciliation process.


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.

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.