WooCommerce Admin Order Creation Has Tax Pitfalls

golf, ball, green, hole, course, sport, play, playing, hole in one, golf course, golf ball, golf green, golf hole, playing golf, golf, golf, golf, golf, golf, golf course, golf hole, golf hole, golf hole

In a recent Business Bloomer Club Slack thread, a member shared their frustrations with manually creating orders in WooCommerce from the backend — and the surprisingly different behavior compared to placing orders through the frontend checkout.

When an administrator creates an order, the tax calculations behave differently. Specifically, the tax is calculated based on the admin’s country (as defined in their profile or the backend session), rather than the buyer’s billing or shipping address.

In one case, this caused incorrect taxes to be applied and required a workaround to ensure buyer-specific rates were calculated properly.

The Tax Issue When Creating Orders Manually

By default, WooCommerce tax logic is designed for frontend checkouts where the customer’s address and tax settings are clearly defined. However, in the admin, that logic breaks — especially if the store is configured with prices that include tax.

One club member explained that their bookstore sells the same product for the same total price regardless of whether the tax rate is 6% (Belgium) or 9% (Netherlands). But when creating a manual order from the backend, WooCommerce calculated tax incorrectly, applying the rate based on the administrator’s location instead of the buyer’s.

The workaround? Add the buyer’s address, then click “Recalculate” to trigger proper tax logic — though even that only works reliably if the tax configuration is aligned with Woo’s expectations.

The Coupon Discount Mismatch

Another issue arises when applying coupons during admin order creation. Because WooCommerce calculates discounts based on prices including the store’s base tax, coupon amounts may be incorrect if the buyer is in a different tax zone.

This results in over- or under-discounting, which isn’t easily resolved without a more advanced customization. So far, no one in the thread found a reliable fix for this behavior — it appears tied to how WooCommerce calculates inclusive tax prices and applies discounts.

The Tax Filter That Changes Everything

It turns out the WooCommerce filter woocommerce_adjust_non_base_location_prices plays a key role here. This filter adjusts the product price for the customer’s location if prices are set to include tax. If the filter is active (i.e. not returning false), WooCommerce recalculates prices and taxes based on the buyer’s location.

Here’s a short code snippet that demonstrates how to disable the woocommerce_adjust_non_base_location_prices filter, which is often the root cause of backend/manual order tax inconsistencies when prices include tax.

You can add this to your theme’s functions.php or a custom plugin:

/**
 * Disable automatic tax adjustment for non-base locations
 * when prices include tax. This can help keep price/tax
 * behavior consistent between admin and frontend orders.
 */
add_filter( 'woocommerce_adjust_non_base_location_prices', '__return_false' );

When enabled, WooCommerce adjusts the product price for customers outside your store base location if you use inclusive tax pricing. This can lead to unexpected results — especially in the admin where the customer’s address may not yet be defined at the time of tax calculation.

By returning false, the filter disables this adjustment, meaning the product price remains fixed regardless of the customer’s location. This is particularly useful if:

  • Your store sells products at the same final price across regions
  • You want backend/manual orders to behave like frontend ones
  • You prefer to handle tax differences via reporting instead of dynamic calculation

Keep in mind: this may not be suitable for all stores, especially if pricing needs to reflect local tax laws dynamically. Always test thoroughly.

Woo’s experimental tax behavior for inclusive pricing can cause mismatches if not configured carefully. See the WooCommerce tax wiki for details.

Manual Orders: Admin vs. Frontend Are Not the Same

While the frontend checkout has safeguards for calculating tax and applying discounts accurately, the backend does not mirror that behavior automatically. Plugin developers and store managers often assume backend orders will “just work” — but as this conversation reveals, they may need testing and specific setup.

It’s important to review your tax settings, test manual order flows thoroughly, and check filters like woocommerce_adjust_non_base_location_prices to ensure behavior is consistent with your business needs.

Related content

Rodolfo Melogli

Business Bloomer Founder

Author, WooCommerce expert and WordCamp speaker, Rodolfo has worked as an independent WooCommerce freelancer since 2011. His goal is to help entrepreneurs and developers overcome their WooCommerce nightmares. Rodolfo loves travelling, chasing tennis & soccer balls and, of course, wood fired oven pizza. Follow @rmelogli

Reply

Your email address will not be published. Required fields are marked *