Prepare a sales-tax return from your own order data
Turn order exports into a tax-jurisdiction workpaper you can review before filing, without rebuilding the same pivot every quarter.
How it works today.
You export orders from Shopify or Stripe, paste them into the same spreadsheet you used last quarter, and rebuild the pivot table that groups sales by state or province. Then you cross-check the tax-collected column against what the platform actually remitted, discover three orders where the address parser guessed wrong, and manually allocate them to the correct jurisdiction. If you sell in districts with different rates—like Colorado home-rule cities—you open a second tab and split the state subtotal by ZIP, which means another export and another hour of vlookups.
When you are done you have a workpaper that shows gross sales, taxable sales, tax collected, and tax due by jurisdiction. You email it to your accountant or paste the numbers into the state portal. If an auditor ever asks how you arrived at a figure, you hope the spreadsheet is still named correctly and that you remember which version was final. Next quarter you will do it again, because the pivot template breaks whenever the platform adds a column.
Before you start.
All of it has to be true, or step one fails in a way that is annoying to debug.
- You can export order or transaction data from your commerce platform (Shopify, WooCommerce, Stripe, Square) as CSV, including date, amount, tax collected, and customer address.
- You have a list of the jurisdictions where you have nexus and must file returns.
- You have access to a builder tool (Zapier Tables, Airtable, Retool) or a generalist agent (Claude, ChatGPT) that can read and transform tabular data.
- You know which of your products are taxable and which are exempt in each jurisdiction, or you have documentation you can reference.
The steps.
Export raw order data covering the filing period
In your commerce platform, export all orders (or transactions) for the quarter or month you are filing. Include columns for order date, order total, tax collected, customer shipping address (or billing if you use that for tax), and line-item detail if your platform provides it. Save the CSV with a name that includes the period, like 2025-Q1-orders.csv. If your platform splits tax collected across multiple columns (state, county, district), export those too.
Upload the CSV to a builder or agent and ask it to parse jurisdiction from address
Load the CSV into a tool that can run transformations—Zapier Tables, Airtable with scripting, or a generalist agent file upload. Ask it to add a column that extracts state or province from the shipping address, and if you file at district level, ask it to parse city or ZIP as well. Spot-check a handful of rows to confirm the parser handled abbreviated states, Canadian provinces, or ZIP+4 formats correctly.
Paste thisAdd a column called filing_jurisdiction that extracts the two-letter state or province code from the shipping address. If the address contains a ZIP code, add a second column called district with the five-digit ZIP. Show me the first ten rows so I can verify the parsing.
Mark exempt or out-of-jurisdiction orders
If you have orders shipped to states where you do not have nexus, or line items that are exempt (like food in some states, or resale certificates), add a column that flags them. You can do this with a formula if your builder supports it, or ask the agent to apply rules you provide. Do not rely on the agent to know exemption rules; you must supply them. Review the flagged rows to confirm nothing was misclassified.
Generate a summary table grouped by jurisdiction
Ask the tool to create a pivot or summary table that groups orders by filing_jurisdiction and sums gross sales, taxable sales, and tax collected. If you file at district level, group by both state and district. The output should show one row per jurisdiction with totals you can compare to your nexus list. Export this summary as a new CSV or keep it in a separate tab.
Paste thisCreate a summary table grouped by filing_jurisdiction. For each jurisdiction, calculate total_gross_sales, total_taxable_sales, and total_tax_collected. Exclude any orders flagged as exempt or out-of-jurisdiction. Show the results sorted by jurisdiction name.
Cross-check tax collected against platform remittance records
Pull your platform's tax-remittance report for the same period (Shopify Tax, Stripe Tax, or your payment processor's tax summary). Compare the tax-collected total in your summary table to what the platform says it collected. If they do not match, filter your order export for orders where tax collected is zero or unusually high, and investigate whether the platform applied the wrong rate or you marked an exempt order incorrectly.
Verify jurisdiction allocation for high-risk states
If you file in states with district or local taxes (Colorado, Louisiana, Alabama), open the detail rows for those states and confirm the district column matches the rate the platform applied. Look for orders where the ZIP is near a boundary or the city name is ambiguous. If you find misallocated orders, note them in a separate column so you can manually adjust the summary table.
Ask the agent to draft a workpaper with jurisdiction, rate, and amount due
Give the agent your summary table and a list of the current tax rates for each jurisdiction where you have nexus. Ask it to calculate the tax due based on taxable sales and the rate you provide, then compare that to tax collected. The output is a workpaper showing jurisdiction, taxable sales, rate, tax due, tax collected, and any over- or under-collection. Do not ask the agent to look up rates; you must supply them or reference your nexus documentation.
Paste thisUsing the summary table, create a workpaper with columns for jurisdiction, taxable_sales, tax_rate, tax_due, tax_collected, and variance. I will provide the tax rate for each jurisdiction. For [State A], use [rate]%. For [State B], use [rate]%. Calculate tax_due as taxable_sales × tax_rate, then calculate variance as tax_collected minus tax_due.
Export the workpaper and review every jurisdiction before filing
Download the workpaper as a spreadsheet or PDF. Open it alongside your nexus list and the filing portal for each state. Check that every jurisdiction where you have nexus appears in the workpaper, and that no unexpected jurisdictions are present. Verify that the rates match the current published rates (states change them). If you see a variance, decide whether it is due to rounding, a platform error, or a misconfigured exemption, and document your decision in a notes column.
What you keep.
Automating the typing does not move the accountability. These stay with a person.
- Determining which jurisdictions you have nexus in and must file returns for.
- Supplying the current tax rate for each jurisdiction and confirming the agent used the correct rate.
- Reviewing the final workpaper, reconciling variances, and approving the figures before you enter them in a filing portal or send them to your accountant.
- Retaining the workpaper and the source order export as documentation in case of an audit.
Once it works.
The first run is the demo. These are where the time actually comes back.
Run the export and jurisdiction-parsing steps on the first business day after the quarter closes, so the workpaper is ready when your accountant asks for it or the filing deadline approaches.
Set a monthly trigger to compare tax collected to tax due by jurisdiction, so you catch rate changes or platform misconfigurations before the quarter ends and you have to amend.
If you file in more than ten jurisdictions, loop the workpaper-generation prompt across each state separately and concatenate the results, so you can review one state at a time instead of a single 50-row table.
Once the workpaper is reviewed, hand off the jurisdiction totals and variance notes to your accountant or bookkeeper as a structured CSV they can import directly into their filing workflow.
Run this next.
One workflow is a tip. Chained, they are how a week actually changes shape.
The work this replaces.
These are the O*NET work activities this workflow covers, and the categories of tool that address them.