← Useful
12 October 20267 min read
News

Catch the orders that fall between systems: Practical reconciliation in WooCommerce

Category: WooCommerce operations. A practical method for reconciling orders, payments, inventory and ERP before minor integration errors become costly customer cases.

Category: WooCommerce operations

A customer may have paid even though the order is still marked as pending. Inventory may be reduced in the online store but unchanged in the ERP system. An order may also have been shipped without the tracking information reaching the customer.

In a professional WooCommerce store, it is not enough for each individual integration to work most of the time. You must be able to detect when systems disagree, determine which information is correct and resolve the discrepancy without creating duplicate orders or charging the customer again.

Ordredata må kunne sammenlignes på tvers av systemene.
Order data must be comparable across systems.

The solution is a regular reconciliation routine. It compares order data across WooCommerce, the payment solution, inventory, the ERP system and the shipping provider. The goal is not to eliminate all errors, but to make errors visible and manageable.

Start with the events that must match

Reconciliation quickly becomes unwieldy if you try to compare all data in every system. Begin with a limited set of business-critical events:

  • The order has been created in WooCommerce.
  • The payment has been authorized or completed.
  • The correct amount and currency have been recorded.
  • The items have been reserved or deducted from inventory.
  • The order has been transferred to the ERP or inventory management system.
  • The shipment has been created.
  • The order has been shipped, canceled or refunded.

For each event, you should define how quickly it normally occurs. An order waiting for payment confirmation for a few seconds is not necessarily a discrepancy. The same order may represent a serious discrepancy if the payment is still not registered after the agreed time limit.

The time limits must be adapted to the payment method, integration and order process. The point is for the team to know the difference between a normal delay and an order that has stalled.

Decide which system owns each piece of information

The most common problem in an integrated online store is not a lack of data, but that several systems contain different versions of the same data. You therefore need a clear source of truth for each field.

Stabile produktnumre gjør lageravstemming mulig.
Stable product numbers make inventory reconciliation possible.

Create a simple ownership list

  • Product number: The product or ERP system may be the source of truth.
  • Product name and sales copy: WooCommerce or a product information system may own the content.
  • Price: ERP, pricing system or WooCommerce must have explicitly defined responsibility.
  • Inventory: The inventory or ERP system should normally be the source of truth when multiple sales channels share inventory.
  • Payment status: The payment provider's recorded transaction is decisive.
  • Order status shown to the customer: WooCommerce may be the source of truth, but the status must be based on confirmed events from other systems.
  • Shipping and tracking: The inventory or shipping system usually owns this data.

If ownership is not defined, you risk integrations overwriting one another. For example, a price may be updated in WooCommerce in the morning and replaced by an older ERP price later the same day.

Use stable identifiers throughout the order chain

Reconciliation requires the same order, product and payment to be recognizable in all systems. The order number visible to the customer is not always sufficient. Integrations should also store internal identifiers and external references.

An order should be linkable to a payment reference, ERP order, inventory task, shipment and any refund. These references should be stored in a structured way on the order, not just as free text in a note.

The product structure is equally important. Each sellable variant should have a stable and unique product number. If size and color do not have their own identifiers, it becomes difficult to reconcile inventory and determine which variant was actually sold.

Bundle products require a clear decision: Should inventory be deducted for the bundle, the components or both? Unclear rules here can result in the correct order amount but incorrect inventory levels.

Tydelige avvik gjør det enklere å plassere ansvar.
Clear discrepancies make it easier to assign responsibility.

Do not make checkout dependent on slow back-end systems

Checkout should perform as little synchronous work as possible. If the customer has to wait for direct responses from ERP, inventory, accounting and shipping systems before the purchase can be completed, the transaction becomes vulnerable to each system's response time and availability.

It is often better to validate what is necessary to accept the order and then send tasks to a controlled processing queue. The customer gets a faster and more robust checkout, while the order is transferred in the background.

This requires monitoring the queue. Background processing is not robust if errors simply remain invisible. You should be able to see:

  • how many tasks are waiting
  • the age of the oldest task
  • which tasks have failed
  • how many times a task has been attempted
  • which order and integration the error concerns

Also avoid using the customer's receipt page as proof that the payment has been completed. The customer may close the window, lose connection, or be redirected back before the payment confirmation has been processed. The order status must be updated based on a confirmed message or a check against the payment system.

Make repeated messages safe

Integrations occasionally send the same message more than once. A payment notification may be delivered again, or a failed ERP transfer may be retried. The system must therefore tolerate the same event being processed more than once.

A good control is to record the event's unique reference before processing it. If the reference has already been processed, the system must not create a new order, deduct inventory again, or ship the item a second time.

This is particularly important for refunds. A new attempt after a timeout must first check whether the refund has already been completed. Otherwise, a technical error could result in the customer receiving the amount back multiple times.

Create exceptions that employees can understand and resolve

An error message that only says the integration failed provides little operational value. The exception should explain what is missing, which order it concerns, what action is safe, and who is responsible.

Useful exception types may include

  • Paid order missing from ERP.
  • Payment amount differs from the order amount.
  • The order has been shipped but still shows as being processed.
  • The order has been cancelled, but the inventory has not been restored.
  • The refund is recorded in WooCommerce but has not been confirmed by the payment provider.
  • An order line is missing a valid product number.
  • The integration queue has stopped or is growing abnormally.

Exceptions should be collected in a worklist, not just sent as individual emails. A worklist makes it possible to prioritize, assign responsibility, document actions taken, and see whether the same error is recurring.

Distinguish between automatic correction and manual handling

Some exceptions can safely be corrected automatically. An order transfer that fails due to a temporary network error can be retried. Other situations require a decision from customer service, finance, or the warehouse.

Automatic processing is appropriate when the action is unambiguous, can be safely repeated, and does not change the customer's financial obligation. Manual review is better when amounts differ, an item is out of stock, the address has been rejected, or the systems show conflicting payment statuses.

Do not give employees a general button to rerun the entire order. Instead, provide precise actions such as resend to ERP, retrieve payment status or update tracking information. This reduces the risk of repeating steps that have already been completed.

Introduce reconciliation at multiple levels

  1. Ongoing monitoring: Monitor queues, failed messages, and critical order status changes throughout the day.
  2. Daily reconciliation: Compare paid orders, recorded transactions, ERP transfers, cancellations, and refunds.
  3. Periodic review: Look for patterns, recurring product errors, status discrepancies, and integrations that are gradually taking longer.

Daily reconciliation should provide a clear answer as to whether all payments can be linked to an order, and whether all paid orders have proceeded to processing. This is more useful than a general report that only shows total sales.

Consider performance and privacy in your logs

Detailed logging is necessary for troubleshooting, but it can also slow down the online store and collect more customer data than you need. Log the event reference, timestamp, order ID, result, and relevant error code. Avoid complete payment data, passwords, and unnecessary copies of names, addresses, and contact information.

Logs should have a defined retention period and be searchable without unnecessarily burdening the active online store. Large reconciliation jobs should not run in the middle of checkout traffic if they use the same database and server resources.

A practical plan for getting started

  1. Choose one critical order flow, such as card payment to ERP and inventory.
  2. List the events that should occur and the expected time limit for each event.
  3. Define which system owns each field and status.
  4. Ensure that orders, payments, products, and shipments have consistent references.
  5. Create five to ten specific exception types with clear ownership.
  6. Determine which errors can be retried automatically.
  7. Create a daily task list for exceptions requiring manual handling.
  8. Test with an interrupted payment, delayed message, unavailable ERP, duplicate payment notification, and partial refund.
  9. Monitor recurring exceptions and fix the root cause, not just the individual order.

Ultimately, good order reconciliation is about control. You should know which orders have been paid, which can be shipped, which have stalled, and who is responsible for taking action. With this overview in place, WooCommerce is easier to operate, even when the online store is connected to multiple systems and handles a large number of events.