Overview
The Loop Exchanges Journal Entry captures the accounting activity for exchanges processed through Loop Returns. Its job is to layer on top of your Orders and Revenue Recognition journal entries so that exchanges don't create duplicate revenue, unreconciled sales tax, or unknown clearing balances — and so that the full lifecycle of an exchange nets to a zero impact on your books.
Loop exchanges are complex because they involve multiple journal entries firing across multiple days, and data flowing from both Shopify and Loop. This article walks through the full lifecycle to show how the pieces fit together.
What This Journal Entry Captures
The Loop Exchanges JE specifically records:
Exchange credits created when a customer initiates a Loop exchange
Loop exchange clearing account activity — the balance held while waiting for exchange fulfillment
Sales tax netting entries that offset Shopify's duplicate tax accrual on the exchange order
Revenue offsets at exchange fulfillment to prevent double-counting gross revenue
Exchange refunds and exchange-of-exchange activity when a customer refunds or exchanges the exchange
Activity that does not live in this JE:
The original order (lives in the Orders and Revenue Recognition JEs)
The original cash settlement (lives in the Cash Receipt JE)
Standard refunds not routed through Loop (live in the Orders JE)
The Loop Exchange Lifecycle
Phase 1: Original Order
Nothing Loop-specific yet. The original order flows through your standard journal entries:
Orders JE: records deferred revenue, discounts, sales tax payable, and gross AR expected
Revenue Recognition JE (at fulfillment): removes deferred revenue and recognizes revenue net of discounts
Cash Receipt JE (at settlement): records cash, merchant fees, and relieves the clearing account
Phase 2: Exchange Initiated
When a customer initiates a Loop exchange, two things happen in Shopify on the same day:
A return of the original product. Shopify processes this on the back end to update inventory. On the financial side, Shopify records a zero-dollar adjustment — but the raw entries look wrong: it credits refund expense (the opposite of a normal refund) and reduces sales tax payable (also backwards). This is because no cash is actually changing hands — the customer is exchanging, not getting refunded.
Blue Onion enriches this with data from Loop. We net these entries so the return shows as a zero-dollar journal entry with no impact on refund expense or sales tax payable. You'll see this as a "no data found" or zero-value entry, which is the correct result.
An exchange transaction. Loop creates a new order for the exchanged product. Blue Onion records:
Deferred revenue for the exchange product (liability to fulfill)
A sales tax offset against sales tax payable. Shopify accrues new sales tax on the exchange order, but you already remitted tax on the original order — so the offset prevents double-counting your sales tax liability.
A Loop Exchange Clearing Account entry to hold the value of the exchange until fulfillment
Phase 3: Exchange Fulfilled
When the exchange ships, two things fire:
The Revenue Recognition JE behaves normally — reducing deferred revenue and recognizing revenue for the exchange product.
The Loop Exchanges JE adds a critical offset: a debit to gross revenue and a credit to the Loop Exchange Clearing Account. Without this offset, you'd be recording revenue twice — once for the original order and once for the exchange. The offset keeps gross revenue flat and clears the Loop clearing account balance.
Net result across the full lifecycle: zero impact. You're in the same financial position as if the original order had never been exchanged, but the customer has been taken care of.
Special Cases
Exchange of an Exchange
Customers can refund an exchange and start a new exchange — sometimes repeatedly. Loop indicates this with "exchange-1-1" notation (and "exchange-1-2", etc., for further iterations).
When this happens:
The refund of the original exchange generates refund expense and refunded sales tax entries. Blue Onion nets these against the same accounts so the net impact is zero — because Loop is facilitating, not actually refunding cash to the customer.
The new exchange restarts the full lifecycle above: new deferred revenue, new sales tax offset, new Loop clearing account entry, and at fulfillment, the same revenue offset pattern.
This can chain indefinitely, and Blue Onion handles each iteration the same way.
Upsells Through Stripe
If a customer pays an upcharge during their exchange (e.g., exchanging a $50 item for a $75 item and paying the $25 difference), the upsell settles through Stripe. Blue Onion captures the additional amount and only offsets the portion of sales tax that relates to the exchanged value — so the net increase in your sales tax liability correctly reflects only the upsell portion.
Key Accounts to Configure
When setting up your Chart of Accounts mappings for the Loop Exchanges JE, you'll typically need:
Loop Exchange Clearing Account — a new clearing/holding account that carries the exchange value between initiation and fulfillment
Gross Revenue / Sales — the account credited in Revenue Recognition and debited in the exchange offset
Sales Tax Payable — offset here to prevent double-accrual from Shopify's exchange tax calculation
Refund Expense and Sales Tax Payable – Refunded — for netting exchange refunds
While we are a team of former accountants, we are not in the business of providing professional services. The information presented is for informational purposes only and is not intended to be a substitute for professional accounting, tax, or legal advice.
