WooCommerce Data Integration - How It Works

Modified on Wed, 24 Jun at 12:44 PM

Taxually automatically pulls your WooCommerce 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 modified during the reporting period. This ensures we capture:

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


Tax Point Filtering


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

  • Order has payment date: We use date_paid
  • Order has no payment date (e.g., BACS, manual payment): We use date_created as a fallback


Example: An order created Dec 28, paid Dec 30, and shipped Jan 2 would be reported in December (based on payment date). An order created Dec 28 with no payment date recorded would also be reported in December (based on creation date). This prevents the same order appearing in multiple months if it's modified after payment.


How Refunds Are Identified


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

  • Refund ID: Unique refund identifier from WooCommerce
  • Parent Order ID: Links the refund to the original order
  • Refund Date: date_created 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., "Endeavor Daytrip Backpack")
  • Shipping: Shipping or delivery charge (e.g., "Flat Rate Shipping")
  • Fee: Additional fees (e.g., "Gift Wrapping Fee")
  • 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, Fee, or Summary
  • order_id – WooCommerce order or refund ID
  • parent_order_id – Original order ID (refunds only)
  • order_status – Current order status (e.g., completed)


Date Fields

  • date_created – When the order was created (fallback tax point)
  • date_modified – Last modification date (not used for tax point)
  • date_paid – When payment was received (primary tax point)
  • date_completed – When order was fulfilled (informational)


Address Fields


We capture both billing and shipping addresses:

  • Billing: billing_countrybilling_statebilling_postcodebilling_city
  • Shipping: shipping_countryshipping_stateshipping_postcodeshipping_city


Line Item Fields

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


Timezones


How Dates Are Handled

  • WooCommerce stores dates in your store's configured timezone
  • We convert dates to UTC (Coordinated Universal Time) when filtering
  • Output format: ISO 8601 format (e.g., 2025-12-30T14:30:00)


Reconciliation Tip


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

  • Your WooCommerce store timezone setting (WooCommerce → Settings → General)
  • The date_paid field in the data
  • Whether the payment was recorded close to midnight


Reconciliation Guide


Matching Orders


To match a Taxually transaction to your WooCommerce order:

  • Use the order_id field
  • In WooCommerce admin, go to WooCommerce → 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 WooCommerce admin, open the original order
  • Scroll to the Refunds section


Verifying Totals


Each order may have multiple rows (one per product + shipping + fees). 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: Payment date may be outside the period. Check the date_paid field.
  • Order in wrong month: Timezone difference may be the cause. Check your store timezone settings.
  • Total doesn't match: Shipping or fees may not be included. Ensure all line types are summed.
  • Refund missing: Refund may have been issued in a different period. Check the refund date_created.


Frequently Asked Questions


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


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


Why are some quantity fields blank?


Shipping charges and fees 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 if my order has no payment date?


For orders without a recorded payment date (e.g., bank transfers or manual payments), we use the order creation date as the fallback.


Need Help?


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

  • The order_id in question
  • Your WooCommerce store timezone setting
  • Screenshots of the order in WooCommerce 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