Consistent Fixed Coupon Amount After Tax, Regardless of Customer Location
-
Hello WooCommerce Support Team,
I’m following up on the longstanding thread “Problem with coupon value if product prices add without VAT” (originally posted in 2022). Unfortunately, the issue persists in 2025: fixed-value coupons are still being recalculated based on the customer’s delivery address and corresponding tax rate, rather than applying a true fixed discount.
Importantly, this problem only occurs in shops where product prices are stored exclusive of tax, which is the standard setup for any professional EU store. In Europe, maintaining net prices in the catalog is essential for legal compliance and accurate bookkeeping—but it shouldn’t break basic coupon functionality. The Issue
- Expected behavior: A €10 coupon always subtracts €10 from the order total after taxes, no matter which tax rate applies.
- Current behavior: When the customer’s delivery country has a reduced or zero tax rate, the discount is proportionally reduced (e.g. €10 + whatever tax rate), causing confusion and accounting headaches.
Why This Matters
- EU Compliance: Most EU shops manage prices net of VAT. A reliable “€10 off” must remain consistent, regardless of destination VAT rules.
- Consistency: Merchants and customers expect a fixed discount to remain the same, independent of tax.
- Reporting & Accounting: Variable coupon values complicate sales reports, revenue recognition, and tax filings.
- Developer Overhead: Numerous threads since 2012—and still in 2025—show that developers resort to custom snippets for a problem that should be solved in core.
Proposed Solution
Add an option on the coupon edit screen:
☐ Apply fixed coupon amount after tax
When enabled, the coupon value is deducted from the cart’s gross total and remains the same across all tax rates and countries—ideal for shops using net-based pricing.Example Implementation Sketch
// Apply fixed coupon amount after tax add_filter( 'woocommerce_coupon_get_discount_amount', function( $discount, $discounting_amount, $cart_item, $single, $coupon ) { if ( $coupon->get_meta( 'apply_after_tax', true ) ) { // Use line total including tax $line_total_incl_tax = wc_get_price_including_tax( $cart_item['data'], [ 'qty' => $cart_item['quantity'] ] ); $discount = min( $coupon->get_amount(), $line_total_incl_tax ); } return $discount; }, 10, 5 );- Meta field
apply_after_taxreflects the checkbox state. - The filter
woocommerce_coupon_get_discount_amountruns after tax calculations, ensuring the full coupon value applies.
I’d greatly appreciate it if you could consider integrating this as a stable, configurable feature in WooCommerce core. It would save countless hours of custom development and ensure that professional EU shops—where net pricing is a necessity—can rely on precise, consistent coupon behavior.
Thank you for your time and for your continued work on WooCommerce!
Best regards,
Saskia Teichmann
You must be logged in to reply to this topic.