|
Key Takeaways:
|
A customer orders three items. Two ship today. One is backordered for next week. Your sync tool doesn't wait, it posts the full order to QuickBooks as a completed sale. Right now.
Revenue is overstated. Inventory is off. And your books show a transaction that operationally isn't done yet.
This is a data timing problem, and it's one of the most common ways to prevent incomplete orders from being recorded as sales correctly.
In this blog, we cover why it happens, what it costs your books, and a step-by-step fix, including how to make it automatic so it never hits your close again.
A backorder is an order placed by a customer for an item that isn't currently in stock, or that can't be fully fulfilled right away. The customer has paid. The order exists. But the product hasn't shipped.
This creates a critical accounting distinction that most ecommerce systems ignore:
Order placed ≠ Order fulfilled ≠ Revenue earned.
For example, if a customer pays $300 for a three-item order and only $200 worth of product ships this week, posting the full $300 as completed revenue today can misstate your books.
Revenue should be recorded when goods are delivered, not when the order is created or payment is received.
This breaks most commonly on Shopify, Amazon FBA, WooCommerce, and BigCommerce, platforms where payment and order creation happen in the same instant, making it easy for sync tools to treat every new order as a completed transaction.
Suggested Read: Gross vs. Net Revenue: Why Your $100K/Month Might Actually Be a Loss
There isn't one cause, there are five, and they stack.
Most ecommerce platforms emit an "order created" or "payment received" event to connected tools. They don't wait for a "shipped" confirmation. So your sync tool receives a signal that says "order exists + payment collected" and posts it to QuickBooks as a sale.
Basic sync tools are built for the clean case: order comes in, post it. They don't have logic to hold an order in a pending state because one SKU is on backorder. Every order looks the same to them.
Teams entering orders by hand under time pressure will mark statuses incorrectly. A "processing" order becomes a "completed" sale in QuickBooks because someone was moving fast.
When an order ships in two parts, most connectors can't split the recognition. They either post the full value on the first shipment or wait for the second, and whichever choice they make, it's usually wrong for at least one scenario.
A common edge case is when the item is eventually restocked and fulfilled automatically, but the original accounting entry stays untouched. That leaves a “ghost sale” in the books that was posted at the wrong time.
When incomplete orders are recorded as completed sales, the problems ripple across your financials:
Suggested Read: How to Prevent QuickBooks Reconciliation Discrepancies: A 2026 Guide
If you want to prevent incomplete orders from being recorded as sales, start with the workflow that sends ecommerce data into QuickBooks
Open your sync tool settings and find what event causes an order to post to QuickBooks. Is it "order created"? "Payment received"? Or "order fulfilled/shipped"? If it's anything other than fulfillment, you have a timing problem.
For example, if your Shopify order is paid on Monday but ships on Thursday, posting on Monday creates a timing mismatch.
Configure your sync to only post orders to QuickBooks when the status is Fulfilled or Shipped. For backorders, the order should sit in a pending/clearing state until fulfillment is confirmed. Map your statuses explicitly: Pending → Unfulfilled → Partially Fulfilled → Fulfilled.
If two of three items ship today, only two-thirds of the order value should be recognized today. Don't let a partial shipment trigger a full-order posting. Split shipment = split recognition.
For example: a $300 order with items at $100, $80, and $120. Item 3 ($120) is backordered. Only $180 should be posted today. The remaining $120 posts when it ships.
Before closing the books, pull a list of all open backorders.
Review:
This gives you a simple backorder clearing process and helps confirm that deferred or pending amounts are not leaking into completed sales.
Create exception rules for situations like:
These alerts help catch problems early, before they create month-end cleanup work.
Manual triage may work for a while. But once you're handling hundreds of orders across Shopify, Amazon, or WooCommerce, you need a system that fixes the issue at the source. Webgility syncs based on fulfillment, not just order creation, so shipments, backorders, and partial orders flow into QuickBooks accurately.
What that looks like in practice:
Suggested Read: How to Configure Default Shipping Settings
The Wine Cellarage, a New York wine retailer with 15,000+ cases in warehouse, was manually tracking inventory between their online store and QuickBooks Enterprise, creating persistent mismatches between what had shipped and what was recorded.
After switching to Webgility, orders are tracked from purchase through fulfillment before posting to QuickBooks, with real-time inventory sync and automatic mismatch alerts.
The result: 10+ hours saved per week, $400+ saved monthly, and full ROI within a few months.
Backorders are real orders, but not always real sales. When orders post before items ship, revenue, inventory, and tax reporting can all go off track.
The issue isn’t QuickBooks, it’s when the data gets posted. Aligning posting with fulfillment fixes this at the source.
With Webgility, you go beyond sync, so your team can stop guessing and close with confidence.
Because the order may be accepted and paid before the product is actually shipped. If the sale is posted too early, revenue can be overstated.
Use posting rules tied to fulfillment status, not just order creation or payment received.
QuickBooks can record the transactions it receives, but the bigger issue is when and how those transactions are sent from your ecommerce platform or connector.