Articles on: Refunds and exchanges

Tax and Reconciliation for Shopify Sales Report

Plans: All Planstforms: Shopify Only

Overview



Managing exchanges can sometimes lead to tax reporting inconsistencies, especially with $0 or Upsell Value Exchange Orders. However, using the Full Value Exchange Order Flow (with Discount On/Off) simplifies the process and ensures that your tax filings are accurate.This article will walk you through reconciling tax reports using the Shopify "Sales Over Time" report alongside the AfterShip "Sales Adjustment" report.

Important considerations



Requirement: Enable the Shopify Returns API.

The Shopify Returns API is enabled by default.

Limitation: Tax accounting reports are not supported when using Shopify Checkout.

List of refund and exchange scenarios



1. Full refund/partial refund



When a shopper returns a line item and gets a refund on AfterShip Returns.

A. Before processing a return

I. The original order is under fulfilled status.
II. Example: The Gross sales and Net sales is $100. The Tax levied on the order is $8.52, making the Total sales $108.52.
III. Shopify will record the total sales of the item in the sales report.




B. Once the return request is created

I. Shopify will update the item status to return in progress, remove the total item quantity, and mark the item value as refund owned on the original item.
II. The item value and tax will be removed from the Shopify sales over time report to ensure that your financial reports accurately reflect only the sales revenue that was not refunded.
III. Example: Suppose a customer made a purchase of $108.52, inclusive of $8.52 tax. The customer decides to return the purchase of the value $100. In this case, since the tax amount will not be refunded ($8.52 - $8.52), the total sales will be $0.



C. Processing refunds

I. If you process a full-value refund, no value is left on your account
II. If you process a partial value refund, it means some remaining value is still left on your account.

a. Shopify will automatically create an adjustment entry to account for the remaining value on the customer’s account. This adjustment reflects the fact that the customer has not been refunded the full amount and that there is still a balance left.

b. Example: Suppose a customer made a purchase for $108.52 and you decide to issue a partial refund of $50. This means that the remaining value after the refund is $108.52 - $50 = $58.52. Shopify will generate an adjustment transaction for the remaining value of $58.52 to keep your records accurate.




2. Full/Partial refund to store credit



In case your buyers select Refund to store credit resolution method while submitting a return request .

I. The original order gets updated with a Shopify Return status. Shopify will remove the original item value and tax from the original order.
II. Shopify will generate an adjustment transaction for the remaining value in the Shopify Sales Over Time report.
III. AfterShip Returns will create a gift card equal to the refunded value on Shopify, then generate a transaction (Offset Shopify adjustment) on the AfterShip Sales adjustments report to offset the actual refund value.

Example
The total value of the return Item A is $110, which includes $10 in sales tax. Therefore, the actual price of the item before tax is $100.
A refund of $40 is issued to the customer as a gift card.
Shopify will generate an adjustment transaction for the remaining value of $70 to keep your records accurate.



3. Even exchange (Discount Off)



In case your buyers exchange the original product with another one of the same price.

I. The original order gets updated with a Shopify Return status.
II Shopify removes the value and tax of the returned item from the original order.
III. Shopify will generate an adjustment transaction for the remaining value in the Shopify Sales Over Time report.
IV. AfterShip Returns will generate a transaction (Offset Shopify adjustment) on the AfterShip Sales adjustments report to offset the Shopify adjustment.
V AfterShip Returns will create an exchange order for the exchange item valued at $110, to replace the returned Item A.

Example : Exchange item A (Total value:$110 with $10 tax included) for the same value item B.




4. Exchange with upsell product (Discount Off)



Original Order

When the return status is updated in Shopify, the original item value and associated tax will be removed from the original order.
Shopify will create an adjustment entry in the Sales Over Time report reflecting the remaining value of the order.

AfterShip Returns Adjustment

AfterShip Returns will generate a transaction labeled "Offset Shopify adjustment" in the Sales Adjustments report to balance the adjustment made by Shopify.

Exchange OrderAfterShip Returns will create a new exchange order for the replacement item.

Example

Exchange the item A (Total value: $110 with $10 tax included) to a higher value item C (Total value: $132 with $12 tax included)
The exchange bonus credit: $20
The cost of return and exchange shipping fee: $15
Upsell value: $15



5. Exchange with partial refund (Discount Off)



Original Order

When the return status is updated in Shopify, the original item value and tax are removed from the order.
Shopify generates an adjustment in the Sales Over Time report for the non-refunded amount.
AfterShip Returns creates a transaction ( Name: Offset Shopify adjustment ) in the Sales Adjustments report to offset Shopify’s adjustment.

Exchange Order

AfterShip Returns creates a new exchange order for the replacement item.

Example

Exchange the item A (Total value: $110 with $10 tax included) to a lower value item D (Total value: $77 with $7 tax included)
Refunded $33 to the customer (No remaining value left)




6. Exchange with partial refund to store credit (Discount Off)



Original Order

When the return status is updated in Shopify, the original item value and tax are removed from the order.
Shopify generates an adjustment in the Sales Over Time report for the non-refunded amount.
AfterShip Returns creates a gift card equal to the refund value and records a transaction (Offset Shopify adjustment) in the Sales Adjustments report to reflect the actual refund.

Exchange Order

AfterShip Returns creates a new exchange order for the replacement item.

Example

Exchange the item A (Total value: $110 with $10 tax included) to a lower value item D (Total value: $77 with $7 tax included)
Issued $33 gift card to the customer (No remaining value left)




7. Exchange (Discount on)



Key difference between Discount On and Off

Original Order

When the return status is updated in Shopify, the original item value and tax are removed from the order.
Shopify generates an adjustment in the Sales Over Time report for the remaining (non-refunded) value.
AfterShip Returns generates a transaction (Offset Shopify adjustment) in the Sales Adjustments report to offset Shopify’s adjustment.

Exchange Order

AfterShip Returns creates an exchange order for the replacement item and applies the return value as a discount, reducing the net sales of the exchange order. New tax values are calculated and included.
AfterShip Returns generates a transaction (AfterShip Returns Exchange Discount) in the Sales Adjustments report to offset the discount applied to the exchange order.

Example

Exchange the item A (Total value: $110 with $10 tax included) to a higher value item C (Total value: $132 with $12 tax included)
The exchange bonus credit: $20
The cost of return and exchange shipping fee: $15
Upsell value: $15




Steps to reconcile an accurate tax report



Export the Total sales over time report from Shopify.

The export report should include the following columns: Gross sales, Discount, Return, Net sales, Tax, and Total sales.




Export the Sales adjustment report from AfterShip Return.

There are 3 types of adjustments

a. Offset Shopify adjustment: For the remaining balance, Shopify generates an adjustment transaction, but if the customer chooses to exchange or store credit the remaining balance (the customer doesn’t need to pay the money and incur a wrong adjustment value), AfterShip Returns generates a transaction to offset the Shopify adjustment.

b. Stripe round-down of less than USD 0.5: This is the limitation on Stripe’s end. If the upsell value is less than USD 0.5, they will round down to $0. AfterShip Returns records a transaction for this scenario.

c. AfterShip Returns Exchange Discount (Discount on flow only): For Discount On Flow, an exchange adjustment is generated to reconcile the Shopify sales report.




Merge the two reports, you will get the correct value of Gross sales, Discount, Returns, Net sales, Tax, and Total sales.

Updated on: 13/06/2025