Initial assessment without passwords Quote before intervention One accountable specialist from start to finish

Orders Stock Fulfilment

WooCommerce Creates an Order but Does Not Reduce Stock

Diagnose WooCommerce orders that do not reduce stock by checking payment status, product settings, hooks, reservations and order notes.

WooCommerce reduces stock at a defined point in the order lifecycle, not simply because an order row exists. A Pending payment order may reserve stock temporarily, while Processing or Completed normally indicates payment or fulfilment progress. Custom gateways and status automation can skip the expected stock operation.

Do not subtract inventory manually until you know whether WooCommerce already recorded a reduction. Repeating the operation can create the opposite problem.

Read the order timeline

Open the order and inspect private notes for “stock reduced,” payment completion and status changes. Record product, variation, quantity, current order status and payment method.

Compare the order time with gateway and WooCommerce logs. Confirm whether the order was paid, authorised or still awaiting payment.

Use one affected order as evidence; avoid changing its status repeatedly during diagnosis.

Confirm stock management at product level

Check WooCommerce inventory settings and whether stock management is enabled globally. Then inspect the purchased product or variation.

For variable products, stock may be managed on the variation, the parent or both through custom code. Compare the exact variation ID stored in the order, not merely the product title.

Record:
order line product/variation ID
ordered quantity
stock before and after
manage_stock setting
backorder policy

Screenshots should not include customer details.

Distinguish reservation from reduction

WooCommerce may reserve stock for unpaid checkout orders, depending on the checkout implementation and hold settings. Reserved stock affects availability calculations without immediately changing the stored stock quantity.

Check whether the product appears unavailable despite an unchanged number. Review pending orders and reservation expiry before assuming inventory is free.

Do not delete pending orders or reservations indiscriminately; a customer may still be completing payment.

Inspect status and gateway behaviour

Offline methods may leave orders On hold, while paid methods typically call WooCommerce payment completion. A custom gateway that only assigns a status may never trigger the normal stock path.

Use WooCommerce APIs rather than writing stock metadata directly:

$order = wc_get_order( $order_id );
if ( $order && ! wc_string_to_bool( $order->get_meta( '_order_stock_reduced' ) ) ) {
    // Investigate why the supported stock-reduction flow did not run.
}

The internal marker is diagnostic context, not permission to edit it manually.

Review custom hooks and integrations

Search site-owned code for stock functions and callbacks attached to payment or status changes. ERP and warehouse systems may be configured as the inventory authority and intentionally update WooCommerce later.

Match external sync logs with the order. A failed export can leave the store quantity stale even though local WooCommerce processing was correct.

Avoid running both WooCommerce and an integration as competing stock writers without a documented ownership rule.

Check database and scheduled actions

PHP or database errors during order processing can stop execution before stock changes. Correlate the order timestamp with logs and failed WooCommerce Scheduled Actions.

If High-Performance Order Storage is active, verify custom extensions declare and demonstrate compatibility. Old direct post-meta queries can read or write the wrong representation.

Repair the failing code or task before replaying one controlled operation.

Correct affected inventory

Reconcile physical/warehouse stock, WooCommerce quantity, reservations and all orders for the product during the incident window. Determine which paid orders should have reduced stock.

Apply a supported, auditable stock adjustment once and add a private order or product note where the business process allows. Do not rewrite historical payment status to trigger inventory side effects.

Verify the next lifecycle

Place a controlled order, confirm the expected reservation, complete payment and verify stock reduces exactly once. Test cancellation and refund according to store policy.

Recurring care should alert on paid orders lacking a stock-reduction note and on inventory-sync failures. Reliable stock depends on an explicit lifecycle and one authoritative adjustment per event.

BEFORE YOU SEND THE REQUEST

Frequently asked questions.

Do you ask for passwords in the form?+

No. The public form never requests access. Secure credentials are requested only after the scope and quote are approved.

Who reviews the incident?+

The request goes to Jordi Ensenyat, founder of Code Barcelona and a WordPress specialist with more than 15 years of experience.

Is anything changed before the quote?+

No. Visible symptoms and scope are reviewed first. Intervention begins after approval and with a rollback path prepared.

Do you work internationally?+

Yes. WP Repair handles WordPress and WooCommerce incidents in English and Spanish through a remote service.

Assess my incident