Shopify returns reporting
ReturnZap integration with Shopify returns
When a return is created in ReturnZap, ReturnZap will create a return against the original order in Shopify.
This action can occur at different points in the return process:
- When a return is created which is automatically approved, ReturnZap will immediately create a return in Shopify
- When a return is created which requires manual review and approval, ReturnZap will create the return in Shopify once the return is approved. ReturnZap will not sync the pending return request to Shopify, only the approved return.
When a return is created in Shopify, Shopify will display the order as "Return in Progress". This will display in the "Return status" column on the Orders page:
And will also display in the order page itself, along with details about the return:
How Shopify treats returns
When an order is marked as "Return in progress" in Shopify, Shopify will automatically make adjustments to the order and to sales reporting.
This is default Shopify functionality which cannot be changed by ReturnZap or by any third party app.
Order balance will be adjusted down immediately and will display "Refund owed"
When a return is created in Shopify, Shopify will immediate display a "Refund owed" balance on the return.
This total is immediately subtracted from the order balance for reporting purposes, meaning that total sales will be adjusted down on the date that a return is created and NOT when the return is actually refunded.
Note: Shopify will adjust the order balance and display a refund owed even in the case of return for store credit or for exchanges done via the draft order exchange method. This will impact the overall accuracy of Shopify sales reporting, but will not impact your actual payouts.
Shopify will create sales adjustments
When a return is created and processed in Shopify, Shopify will make several entries in its backend ledger to account for the return and the eventual refund.
These entries will impact your Gross Sales, Returns, Net Sales, and Total Sales totals.
In the case of a simple order, with no discounts or shipping fees applied, Shopify will make several ledger updates as an order is placed, returned, and refunded:
Understanding this sequence of ledger entries is important to understanding how Shopify returns will impact your overall sales reporting.
When a return is initiated (row #2 in example above)
- Shopify will subtract $60 from the order by deducting $60 from the "Returns" column. This has the impact of reducing net sales by $60. This functions as a "pending refund" within the Shopify ledger. Critically, this happens at the time the return is initated.
When a return is refunded (row #3 and row #4 in the example above)
- Shopify will make two entries:
- #1 - Shopify will reverse the pending refund transaction by adding $60 into the "Returns" column and increasing net sales by $60
- #2 - Shopify will deduct the refund actually issued to the customer, by subtracting $60 from Returns and decreasing net sales by $60
End result
The end result displays a sales total which is correct. In the example above, on an original sale of $120, $60 in product was returned for a total remaining sale amount (including taxes) of $66.15.
Implications of Shopify reporting adjustments
Impact on sales reporting
As described above, returns in Shopify will impact the timing of sales adjustments in a way which may be counter-intuitive to many merchants. This is not something that third party apps like ReturnZap can control, and is entirely dictated by internal Shopify logic.
Returns for store credit will impact net sales totals
As we have seen above, overall sales reporting will be accurate once a return is processed for a refund. However, if a return is processed in the form of store credit, the total order balance will continue to display a "refund owed" even after store credit is issued.
This is because Shopify does not yet support the concept of native store credit when resolving a return. So there will be no "return refunded" action to reverse the return adjustment and push through a refund:
As a result, net sales will be reduced by the total amount of the return, even if the return is refunded in the form of store credit.
However, this ends up leading to more accurate reporting once the store credit is spent at your store. If Net Sales were not adjusted down by the amount of the store credit, then overall sales would be inflated by the amount of the credit once it is spent.
Returns for exchange using the draft order method will impact accuracy of reports
ReturnZap supports mutliple methods of exchange:
When exchanging via draft order, Shopify sales reporting will be impacted as we have seen above. Net sales will be artificially lowered and will require adjustment to maintain accurate reporting.
Again, this is because there is no refund event to offset the "pending refund" ledger entry which Shopify creates as soon as a return is created.
However, reporting will not be impacted when conducting an exchange on the original order. This is because the expected refund will be offset by the replacement item which is added to the original order, balancing out the transaction.
Impact of returns never sent back
As noted above, Shopify will adjust the original order with an expected refund as soon as the return is initiated. Once a refund is issued, Shopify reverses the expected refund entry and repprting will tie out.
But in practice, many returns are initiated but never shipped back. In this case, the order will display a perpetual "refund owed" balance and the expected return adjustment will never be cancelled out.
In these cases, overall Net Sales figures will be underreported.
Reporting discrepancies if refunds are processed with a delay
Depending on the payment method, refunds may remain in a "processing" status for a period of time. When refunds are not processed immediately, Shopify's ledger entrirs will actually result in a temporary increase in net sales reporting.
This is because the adjustment to reverse the return is done immediately, while the final adjustment to account for the refund is delayed until the refund is actually processed.
Once all adjustments are made, the total sales figures will display accurately.
Options to mitigate reporting impact
ReturnZap has developed several features to help mitigate the impact of Shopify's returns reporting.
Delayed return sync
ReturnZap can delay the "Return initiated" event in Shopify and will not sync the return until it is processed. This reduces the gap between the "Return Initiated" and "Refund Processed" events so they happen as close together as possible.
With delayed return sync enables, shops will not see the "refund owed" balance on a pending return, with a few exceptions.
For more information and to enable delayed return sync, contact ReturnZap support.
Original order exchange
As discussed above, ReturnZap provides the option to create exchanges using the original order. When original order exchange is enabled, new line items will be added to the original order. These line items will offset the item being returned and will add to Gross sales totals.
See below:
Return line item expiration
To handle situations where returns are created but never sent back, ReturnZap can automatically expire return line items in Shopify. This will remove the item(s) from the return and eliminate the "refund owed" balance.
This feature is configurable via ReturnZap Settings > Integrations > Shopify Returns > Automatically Expire Returns.
When enabled. ReturnZap will automatically expire items which are not resolved (refunded, credited, exchanged) via ReturnZap within the defined expiration period.
Refund to Shopify account credit
Shopify has recently introduced the concept of native account credit. ReturnZap supports this as a method of resolving store credit returns.
At this time, store credit issued in the form of Shopify account credit still suffers from the same drawbacks described above. However, we expect that Shopify will introduce more flexibility over time and will natively allow returns to be resolved to store credit to reduce reporting discrepancies.