How Taxually Uses Your Shopify Data

Modified on Wed, 18 Feb at 9:32 PM

Taxually automatically pulls your Shopify order and refund data each month. This article explains how we identify, filter, and process your transactions to help with reconciliation.


How Orders Are Identified


What We Pull

We pull all orders that were updated during the reporting period. This ensures we capture:

  • New orders placed in the period
  • Orders that changed financial status (e.g., pending → paid)
  • Orders with any updates during the period


Tax Point Filtering

To determine which month a transaction belongs to, we use the processed date (processedAt) as the primary tax point:

  • Order has processed date: We use processedAt
  • Order has no processed date: We use createdAt as a fallback


Example: An order created Dec 28, processed Dec 30, and fulfilled Jan 2 would be reported in December (based on processed date). This prevents the same order appearing in multiple months if it's modified after processing.


How Refunds Are Identified

Refunds are pulled for each order and filtered by the refund creation date (createdAt on the refund).

  • Refund ID: Unique refund identifier from Shopify
  • Parent Order ID: Links the refund to the original order
  • Refund Date: createdAt of the refund


Refund amounts appear as negative values in the data. The billing and shipping details are inherited from the original order.


Line Types


Each row in your data represents one of these line types:

  • Product: Individual product sold (e.g., "Classic T-Shirt - Medium / Blue")
  • Shipping: Shipping or delivery charge (e.g., "Standard Shipping")
  • Discount: Discount applied at order level
  • Summary: Order without itemised lines (rare) - total order value


For refunds, line types indicate what was refunded (product, or a summary if not itemised).


Data Fields Explained


Order and Transaction Fields

  • transaction_type – Sale or Refund
  • line_type – Product, Shipping, Discount, or Summary
  • order_id – Shopify order ID or refund ID
  • order_name – Human-readable order number (e.g., #1001)
  • parent_order_id – Original order ID (refunds only)
  • financial_status – Payment status (e.g., paid, partially_refunded)
  • fulfillment_status – Fulfilment status (e.g., fulfilled, unfulfilled)


Date Fields

  • created_at – When the order was created (fallback tax point)
  • processed_at – When order was processed (primary tax point)
  • updated_at – Last modification date (not used for tax point)


Address Fields

We capture billing, shipping, and ship-from addresses:

  • Billing: billing_countrybilling_provincebilling_zipbilling_city
  • Shipping: shipping_countryshipping_provinceshipping_zipshipping_city
  • Ship-From: ship_from_country – The country from which the order was fulfilled (based on fulfilment location)


Line Item Fields

  • line_item_id – Unique line item identifier
  • line_item_sku – Product SKU or variant SKU
  • line_item_name – Product name or description
  • line_item_qty – Quantity (blank for shipping and discounts)
  • line_item_total – Net amount (excl. tax)
  • line_item_tax – Tax amount


Ship-From Country (Fulfilment Location)


For accurate tax reporting, we capture the ship-from country based on your Shopify fulfilment locations:

  • This is determined from the assigned fulfilment location for the order
  • If multiple fulfilment locations exist for an order, we use the first one
  • The ship-from country is critical for determining which country's tax rules apply


Timezones


How Dates Are Handled

  • Shopify stores dates in UTC
  • We preserve UTC dates when filtering
  • Output format: ISO 8601 format (e.g., 2025-12-30T14:30:00Z)


Reconciliation Tip


If you notice a transaction appearing in a different month than expected, check:

  • Your Shopify store timezone setting (Settings → General)
  • The processed_at field in the data
  • Whether the order was processed close to midnight UTC


Reconciliation Guide


Matching Orders


To match a Taxually transaction to your Shopify order:

  • Use the order_name field (e.g., #1001) for easy lookup
  • In Shopify admin, go to Orders
  • Search for the order number


Matching Refunds


To match a refund:

  • Note the order_id (refund ID) and parent_order_id (original order)
  • In Shopify admin, open the original order
  • View the Refund history in the Timeline


Verifying Totals


Each order may have multiple rows (one per product + shipping + discounts). To calculate the order total, add together all line_item_total and line_item_tax values for rows with the same order_id.


Common Reconciliation Issues

  • Order missing: Processed date may be outside the period. Check the processed_at field.
  • Order in wrong month: Timezone difference may be the cause. Check your Shopify timezone settings.
  • Total doesn't match: Shipping or discounts may not be included. Ensure all line types are summed.
  • Refund missing: Refund may have been issued in a different period. Check the refund created_at.


Frequently Asked Questions


Why does my order appear in a different month than I expected?

We use processed_at (processed date) to determine the reporting month. If the order was processed near month-end, timezone differences may affect which month it falls into.


Why are some quantity fields blank?

Shipping charges and discounts don't have quantities—they're flat charges. Only product lines have quantities.


How do I identify a refund vs a sale?

Check the transaction_type field: "Sale" indicates an original order or transaction, while "Refund" indicates a refund transaction (amounts are negative).


What is the ship-from country used for?

The ship-from country identifies where the goods are dispatched from. This is essential for determining VAT/GST treatment, especially for cross-border sales where the origin country affects which tax rules apply.


Need Help?


If you're having trouble reconciling your Shopify data, please contact our support team with:

  • The order_name or order_id in question
  • Your Shopify store timezone setting
  • Screenshots of the order in Shopify admin

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article