How Zamp reads your store
At connection: Zamp imports your order history in bulk.
After that: Shopify notifies Zamp whenever an order changes. Zamp re-reads the full order about 5 minutes after the last change (new orders, refunds, cancellations, and edits).
What Zamp reads: order totals, line items (product, variant, quantity, price, taxable flag, category, tax code), refunds/returns/restocking fees, shipping and billing addresses, fulfillment location, sales channel, and tax-exempt status.
What Zamp does not do: Zamp never changes anything in your Shopify store. It does not calculate tax at checkout (unless you use the separate Zamp Tax app). For filing, Zamp reports the tax you actually collected and flags large gaps between collected and owed.
Quick-start checklist
Do these once and most edge cases take care of themselves.
Assign a product category to every product using Shopify's standard taxonomy.
Leave "Charge tax on this product" checked unless an item is truly never taxable anywhere. Zamp handles state-by-state exemptions from the category.
Give every fulfillment and POS location a complete address (street, city, state, ZIP).
Mark wholesale/exempt customers as tax exempt and keep their exemption certificate on file.
Turn on Shopify Tax (or another checkout tax engine) so tax is collected at checkout.
Refund by selecting items (and shipping), never by typing a custom amount.
Cancel orders you won't fulfill instead of leaving them open.
Don't edit orders after fulfillment. Refund or create a new order instead.
Make all order changes in one sitting.
Connect marketplaces (TikTok, Amazon, Walmart, eBay, Etsy, Target Plus, Meta) through Shopify's official apps or Marketplace Connect.
Product tax codes
You don't enter Zamp tax codes in Shopify. Zamp determines them from fields you already fill in, in this order:
Product category — mapped from Shopify's taxonomy. If your exact category isn't mapped, Zamp uses the closest parent category.
Legacy product type — converted to the current taxonomy, then mapped.
Variant tax code — used if the category is missing or unmapped (accepts Avalara-style codes, e.g. PC040100 for clothing).
Nothing set — treated as general taxable merchandise.
The taxable checkbox always wins. If "Charge tax" is unchecked, the item is non-taxable regardless of category.
Tip: Pick the most specific category possible, and review your top-selling products first since they drive most of your tax.
Handled automatically:
Shopify item | How Zamp treats it |
Gift card products ("Gift Cards" category) | Not taxed at purchase |
Tips at checkout | Optional gratuity, kept separate from product sales |
Additional fees (e.g., retail delivery fee) | Separate non-taxable line |
Duties on international orders | Counted with tax |
Shipping | Reported as shipping (can be reclassified as handling on request) |
Refunds and returns
In Shopify: Open the order → Refund → set the quantity on each returned item → enter any shipping being refunded → confirm.
What Zamp does:
Each refund becomes its own credit, dated on the refund date (a January order refunded in March reduces March sales).
Tax on returned items is credited back. Partial refunds scale the tax credit proportionally.
Refunded shipping (and its tax) is credited.
Multiple refunds on the same item are tracked separately.
Exchanges: Even exchanges (zero-dollar refunds) are still recorded. Loop Returns exchanges are supported.
Situation | What happens | What to do |
Custom-amount refund, no items/shipping selected | Skipped | Select items, refund shipping, or issue store credit |
Refund on an already-filed period | Reported in the current period | Contact Zamp if the original order needs correcting |
Marketplace order refund | Credited against the marketplace channel | Nothing |
Tax-exempt order refund | Credit is also exempt | Nothing |
Order edits
Only edit orders before fulfillment. After fulfillment, Shopify's edits leave the totals and line items out of sync, and Zamp has to guess which is right.
You want to… | Do this |
Remove an item | Refund that item |
Lower the price | Partial refund on that item |
Add an item | Create a new order |
Change the shipping address | Nothing if already shipped |
Change quantity | Refund extra units, or create a new order for more |
Timing: Each re-read replaces the last, so make all changes together, then leave the order alone.
Filed periods: Edits to orders in already-filed periods aren't applied automatically. Contact Zamp support if a correction is needed.
Cancelled and voided orders
Always use Shopify's Cancel button.
Never charged (authorized only): Order becomes Voided. Zamp records the order and an exact reversal, netting to zero.
Charged, then cancelled: Order becomes Refunded. Zamp records the sale and a credit on the cancellation date. Same month = they cancel out; different months = sale in the first, credit in the second.
Expired authorizations: Treated the same as Voided.
Avoid:
Leaving unpaid orders open — they still count as sales until cancelled.
Archiving instead of cancelling — Zamp still sees an archived order as a live sale.
Deleting orders — Zamp keeps what it already imported. Cancel first.
Test orders in a connected store — orders from test/Bogus Gateway are real to Zamp. Cancel and void them, or use a development store not connected to Zamp.
Restocking fees
In Shopify: Open the order → Return items (not Refund) → select items → enter the restocking fee (percentage or fixed) → complete the return, then process the refund.
Zamp detects fees entered this way and keeps them out of your taxable sales.
Don't | Why |
Refund a partial amount and call the rest a fee | Zamp sees a partial refund; the kept amount stays in taxable sales |
Add a "Restocking fee" product | It becomes a taxable line item |
Use a separate app that bypasses Shopify Returns | Zamp can't see it and totals won't reconcile |
Restocking fee taxability varies by state. If your state taxes them and you charge them often, let your Zamp contact know.
Shipping, discounts, and addresses
Shipping: Reported as shipping. If you charge combined shipping-and-handling or handling only, ask Zamp to set this on your connection.
Discounts: Reduce the taxable subtotal. Shipping-only discounts are kept out of the product subtotal.
Tax-inclusive pricing: Zamp backs out the tax automatically. Don't toggle this setting between orders.
Addresses (action needed): Zamp determines the ship-to address in this order: shipping address → billing address → fulfillment location → POS location. Ship-from is the fulfillment or POS location. Every location in Settings > Locations needs a full street address, or its orders can't be used for tax.
ZIP codes: Malformed US ZIPs are dropped (Zamp falls back to city/state). Use real 5-digit or ZIP+4 codes.
Non-US orders: Imported, with tax resolved by province/region. Duties count as tax.
Currency: Zamp uses your store currency. If your store isn't in USD but the customer paid in USD, Zamp uses the USD amounts.
Point of sale: POS location address is used as both ship-from and ship-to, so it must be complete.
Gift cards (action needed): Keep gift card products in the "Gift Cards" category. Paying with a gift card is a normal taxable sale.
Tax settings
Collect tax at checkout. Turn on Shopify Tax for every state where you're registered. If you under-collect, Zamp still files the correct amount owed, and you pay the difference. Zamp flags orders where collected tax is far from expected.
Tax-exempt customers (action needed): Set the customer to Collect tax: Exempt (or set it on the order before payment), and keep a copy of their exemption certificate for audits. An exempt flag on either the order or customer marks the whole order exempt.
Marketplace orders are reported, but no tax is owed by you. Zamp recognizes these automatically when connected through official apps:
Channel | Connected via |
TikTok Shop | TikTok app, AfterShip Feed, or CedCommerce |
Amazon | Amazon by Codisto, Amazon sales channel, or Marketplace Connect |
Walmart | Walmart Marketplace app or Marketplace Connect |
eBay, Etsy, Target Plus | Marketplace Connect (Etsy also via Shuttle) |
Meta (Facebook & Instagram) | Facebook & Instagram app |
Shop app | Shop by Shopify |
Mirakl, StockX, Flip | Their respective apps |
TikTok: If Shopify reports the merchant as liable on a US TikTok order, Zamp reports it as your sale and flags it for review.
New marketplaces: Orders from a marketplace Zamp hasn't seen before will fail to import until it's added. Tell your Zamp contact when you add one.
Wholesale platforms: Faire orders are treated as resale (exempt). Canal orders are treated as marketplace sales through Flip, or as resale for other storefronts.
Reporting collected tax. By default, Zamp reports what Shopify collected rather than recomputing it. If collected tax is wildly off, Zamp recomputes without product categories. Your Zamp contact can switch you to full recalculation if you want Zamp's number to win.
Known gaps and workarounds
Situation | Result | Workaround |
Custom-amount refund, no items/shipping | Refund skipped | Refund by item or issue store credit |
Incomplete draft orders | Not imported | None needed |
Changes after a period is filed | Not applied; refund reported in current period | Contact Zamp for corrections |
Unmapped marketplace channel | Orders fail to import | Tell Zamp the channel name |
Location with no street address | Can't be placed in a jurisdiction | Complete it in Settings > Locations |
Order with no address at all | Can't be placed in a jurisdiction | Require an address at checkout, even for digital goods |
Separate handling fee | Reported as shipping | Ask Zamp for a shipping-and-handling override |
Restocking fee outside Shopify Returns | Not recognized | Use Shopify Returns |
No category and no tax code | Taxed as general merchandise | Set a product category |
Historical import over ~7 million records | Rejected as too large | Zamp splits it into smaller date ranges |
Connection health: If Zamp loses access (e.g., the app was uninstalled or the staff member who authorized it left), orders stop flowing and your connection shows as disconnected. Reinstall the Zamp app from your Zamp dashboard. Historical orders can be re-imported afterward.
FAQ
I refunded an order but Zamp still shows the full sale. It was likely a custom-amount refund with no items selected. Cancel it if possible and redo it by item. If the order is in a filed period, the credit appears in the current period.
An order shows up twice. It's usually the original sale plus its reversal or refund credit. They net against each other.
Tax collected doesn't match tax owed. Usually one of: checkout tax isn't on for a state, a product has the wrong category or "Charge tax" unchecked, or a location address is incomplete. Fix the setting; Zamp picks up the corrected order on its next sync (unless the period is filed).
I changed a product's category. Do old orders update? No. Categories apply to new orders. Ask Zamp to re-import a date range if needed.
How long until a new order appears in Zamp? About 5 minutes after the last change. Large historical imports take longer and show progress on your Zamp dashboard.
Can I connect more than one Shopify store? Yes. Each store is its own connection. Repeat the checklist for each.
Does Zamp change anything in my Shopify store? No. Zamp only reads orders, products, locations, and customers.
What does the Zamp Tax app in the Shopify App Store do? It shows a Zamp tax calculation for any order and compares it to what Shopify charged, so you can spot configuration problems. Installing it also creates the connection Zamp uses to import your orders.