Skip to content
SystemSyncer
Menu

ERP integration · WooCommerce + QuickBooks Online

WooCommerce QuickBooks Online Integration: Orders, Payouts, and Sync Design

How to connect WooCommerce to QuickBooks Online — webhooks and REST API, per-order vs. summary posting, Stripe and WooPayments payouts, tax, inventory, and API limits.

Last reviewed:
Reading time
4 min read

Part 8 of 8: Your store with a specific ERP

Short answer

Connect WooCommerce to QuickBooks Online with WooCommerce webhooks (signed with X-WC-Webhook-Signature) plus a scheduled REST query using modified_after to catch anything missed, and run the sync outside WordPress so slow accounting calls never slow down checkout. Decide with your accountant between per-order sales receipts and daily summaries, reconcile gateway payouts (Stripe, WooPayments, PayPal) through a clearing account, post tax as calculated at checkout, and stay within QuickBooks Online's limits — 500 requests per minute and 10 per second per company and app, plus a monthly allowance of metered read calls on Intuit's free Builder tier.

QuickBooks Online integration surface at a glance (documented by the vendor; see sources)

WooCommerce API
REST API under /wp-json/wc/v3; orders can be listed with modified_after for incremental sync.
WooCommerce webhooks
Signed with X-WC-Webhook-Signature (base64 HMAC-SHA256); disabled after 5 consecutive failed deliveries.
QuickBooks limits
500 requests per minute per realm ID; 10 requests per second per realm ID and app.
Metered calls
Builder tier of the Intuit App Partner Program: 500,000 CorePlus calls per workspace per month; beyond that, HTTP 429.
Inventory
QuickBooks Online quantity-on-hand tracking is available in the Plus and Advanced plans.
Stripe payouts
Stripe's balance transactions can be listed by payout ID for automatic payouts.
Data flow Typical WooCommerce–QuickBooks Online flows
  1. WooCommerce Orders
  2. Sync service Verify
  3. QuickBooks Online Receipts
  4. Gateway payouts Stripe

WooCommerce and QuickBooks Online are one of the most common pairings for small US online stores. Because WooCommerce runs on your own WordPress hosting and QuickBooks is an accounting system rather than an ERP with fulfillment, this integration is mostly about two things: getting every sale, refund, fee, and tax amount into the books correctly, and making sure deposits match the bank. As on every page, documented marks statements from WooCommerce, Intuit, or Stripe documentation, and recommendation marks our guidance. Nothing here is accounting or tax advice.

How the two connect

Documented (WooCommerce): WooCommerce exposes a REST API under /wp-json/wc/v3 and sends webhooks for topics such as order creation and updates. Webhook payloads are signed with X-WC-Webhook-Signature, a base64-encoded HMAC-SHA256 of the payload. A webhook is disabled after five consecutive failed deliveries. Order listings accept a modified_after parameter, which supports incremental queries.

Documented (Intuit): the QuickBooks Online Accounting API is a REST API authorized per company (realm ID) with OAuth 2.0.

Recommendation: run the integration as a small external service, not inside WordPress page requests:

  1. Receive WooCommerce webhooks, verify the signature on the raw body, and queue the event.
  2. Fetch the current order from the WooCommerce API (webhook payloads can be stale by the time you process them).
  3. Post to QuickBooks according to your posting model (below), storing the WooCommerce order ID → QuickBooks transaction ID mapping.
  4. Every hour or so, list orders with modified_after your last checkpoint to catch anything the webhooks missed — including the whole period a webhook was disabled.

Decide the posting model first

Approach QuickBooks receives Fits
Per order One sales receipt per paid order; refund receipts for refunds Low volume, or when bookkeepers need order-level detail in QuickBooks
Daily summary One summary per day or per payout with lines for sales, discounts, shipping, tax, refunds Higher volume D2C stores
B2B invoices Invoices on terms for wholesale orders Stores that sell on account

Recommendation: decide this with your accountant before choosing an app or writing code. It drives the number of API calls, the size of your customer list, and how easy month-end is. The same trade-offs apply as in Shopify + QuickBooks Online.

Payouts: Stripe, WooPayments, and PayPal

Documented (Stripe): for automatic payouts, Stripe’s balance transactions can be listed by payout ID, returning only the transactions paid out in that payout. Stripe also offers a payout reconciliation report.

Recommendation: every gateway pays out net amounts that bundle charges, refunds, fees, and disputes. Use one clearing account per gateway:

  1. Record each payment (or each day’s payments) into the gateway’s clearing account.
  2. For each payout, read its contents from the gateway — Stripe balance transactions by payout, or the payout/settlement report of WooPayments or PayPal.
  3. Post a deposit: net to the bank, fees to merchant fees expense, refunds and disputes to their accounts, and clear the payments from the clearing account.
  4. Check that the clearing account returns to roughly zero after each payout.

The pattern is explained step by step in reconciling payouts in your ERP.

Sales tax

Recommendation: let WooCommerce — or the tax engine connected to it — calculate tax at checkout, and post that tax to QuickBooks as a liability by jurisdiction. Don’t let QuickBooks recalculate tax on imported sales, or amounts will differ from what customers paid. If you sell on marketplaces too, keep marketplace-collected tax out of your own liability. See sales tax in ERP integrations.

Products and inventory

Documented (Intuit): quantity-on-hand tracking is available on QuickBooks Online Plus and Advanced.

Recommendation:

  • With summary posting, map sales to a handful of income accounts or product categories; you don’t need every variation as a QuickBooks item.
  • With per-order posting and inventory in QuickBooks, match each WooCommerce product and variation to a QuickBooks item by SKU. WooCommerce allows empty SKUs, so enforce unique, non-empty SKUs before launch.
  • Keep a single stock master. For one location and simple products, QuickBooks can be it; otherwise keep stock in WooCommerce or an inventory tool and post cost of goods sold.

Refunds

Documented (WooCommerce): refunds are a sub-resource of orders in the REST API.

Recommendation: post each refund as a refund receipt (per-order model) or as a refunds line in the summary, with tax reversed in the same jurisdictions. Partial refunds and shipping-only refunds need their own test cases — the test plan template lists them. See refunds and cancellations.

QuickBooks API limits and reliability

Documented (Intuit): production limits are 500 requests per minute per realm ID and 10 requests per second per realm ID and app. Apps on the Builder tier of the Intuit App Partner Program have an included limit of 500,000 CorePlus API calls per workspace per month, after which calls are throttled with HTTP 429. Intuit’s best-practices guidance describes a requestid parameter so a repeated write returns the original response.

Recommendation:

  • Cache QuickBooks reference data (accounts, tax codes, item IDs) instead of reading it on every order — reads are the metered kind.
  • Use requestid on writes and keep your own mapping table; after a timeout, look the transaction up before retrying.
  • Store the newest refresh token every time you refresh and alert when a company’s authorization is lost.

WooCommerce-specific pitfalls

  • Webhooks silently disabled after five failed deliveries — monitor webhook status and keep the modified_after safety net.
  • Plugin side effects: subscription, gift card, or multi-currency plugins change order data; test mappings with the real plugin set.
  • Direct database integrations that break with High-Performance Order Storage — use the REST API.
  • Hosting limits: large backfills compete with shoppers for the same server; run them off-peak.
  • Payouts never reconciled, so the clearing account grows month after month.

Frequently asked questions

Should the WooCommerce–QuickBooks sync run as a WordPress plugin?

For anything beyond a small store, run it as an external service. A plugin that calls QuickBooks during checkout or admin actions makes accounting latency and outages visible to shoppers and staff. An external service receives WooCommerce webhooks, queues them, and posts to QuickBooks independently.

Why are some WooCommerce orders missing in QuickBooks?

The most common causes are a WooCommerce webhook that was disabled after repeated failed deliveries, a QuickBooks authorization that expired or was revoked, and orders with products or tax rates that have no mapping. Add a scheduled query for orders modified since your last checkpoint, alert on disabled webhooks and lost authorization, and send unmapped orders to a review queue.

How do I reconcile Stripe or WooPayments deposits in QuickBooks?

Record payments into a clearing account, then post each gateway payout as a deposit that clears the payments it contains and books fees, refunds, and disputes separately. For Stripe, balance transactions can be listed by payout ID, which gives you the contents of each payout. Other gateways provide payout or settlement reports for the same purpose.

Can QuickBooks Online be the inventory master for WooCommerce?

It can on QuickBooks Online Plus or Advanced, which include quantity-on-hand tracking, and for simple single-location stores it works. For multiple warehouses, kits, or a 3PL, keep stock in WooCommerce or a dedicated inventory tool and post cost of goods sold to QuickBooks.

Sources and further reading

Platform-specific statements on this page were checked against these sources on . Vendor APIs change; confirm details in the current documentation before you build.

  1. [1] WooCommerce REST API documentation — WooCommerce
  2. [2] High-Performance Order Storage — WooCommerce
  3. [3] API call limits and throttles — Intuit Developer
  4. [4] QuickBooks Online API best practices — Intuit Developer
  5. [5] Set up and track your inventory in QuickBooks Online — Intuit QuickBooks
  6. [6] List all balance transactions — Stripe
  7. [7] Payout reconciliation report — Stripe