Cart Discounts
WCPOS provides several ways for a cashier to discount an order on the fly: quick percentage buttons, direct line-item price edits, and order-level discount fees. For pre-configured promotions with usage rules, see Coupons (Pro).
The way POS price changes appear on receipts and in reports changed in v1.9.0. See What changed in v1.9.0 below if you've noticed your "Discount" totals on receipts are now showing as zero.
Quick Discounts
Quick discount buttons let you apply a percentage discount to the entire order with a single tap.
To configure them, open the cart Display Settings and enter a comma-separated list of percentages in the Quick Discounts field. For example, 5,10,15,20 creates four shortcut buttons.
When you tap a quick discount button, the percentage is applied across all line items in the cart.
Line-Item Discounts
You can change the price of any individual line item directly in the cart:
- Click the Price field on the line item
- Enter the new price
- Press Enter to confirm
This is useful for price matching, staff discounts, or one-off adjustments. The line item's total updates automatically based on quantity × new price.
See Line Items for more on editing cart items.
If a customer wants different discounts on portions of the same product (e.g., 3 at full price and 2 discounted), enable the Split option in cart Display Settings to break a line item into separate lines.
Order-Level Discounts
To apply a flat discount to the entire order (rather than individual items), add a negative fee:
- Click Add Fee below the cart items
- Enter a name (e.g., "Staff discount")
- Enter the discount amount as a negative number (e.g.,
-5.00)
The fee appears as a separate line item and reduces the order total. You can edit the fee's tax status using the three-dot menu if needed.
POS Discounts vs WooCommerce Coupons
The discounts on this page are ad-hoc — cashiers apply them at the till. WooCommerce coupons are pre-configured promotions with rules and tracking. Both have their place.
| POS Discounts | WooCommerce Coupons (Pro) | |
|---|---|---|
| How applied | Quick discount, line price edit, or negative fee | Enter a coupon code in the cart |
| Where configured | On the fly by the cashier | Pre-configured in WP Admin → Marketing → Coupons |
| Tracking | Recorded as the line price (see v1.9.0 change) | Tracked as a coupon discount in WooCommerce reports |
| Restrictions | None — the cashier sets any price | Usage limits, product/category restrictions, minimum spend, expiry, email rules |
| Best for | Ad-hoc adjustments, price matching | Structured promotions, trackable discounts |
If you need to track discount usage in WooCommerce reports or enforce rules like usage limits, use Coupons. For one-off price adjustments, the discounts on this page are simpler.
How POS Price Changes Interact with Coupons
When a cashier sets a custom price on a line item (e.g., reducing $18 to $16), and a coupon is then applied, the coupon calculates against the POS-discounted price ($16), not the original ($18). This prevents customers being over-discounted by stacking a cashier discount and a coupon against the original price.
- POS-discounted items are treated as "on sale" by WooCommerce. If a coupon has Exclude sale items enabled, it will skip POS-discounted items — the same way it skips regular sale items. Developers can override this with the
woocommerce_pos_item_is_on_salefilter. - Removing a coupon leaves the line at its POS-discounted price.
For technical details on how POS price overrides are stored and the available filters, see the POS Discount Reference.
What changed in v1.9.0
If you upgraded from v1.8 and noticed that the Discount total on your receipts and reports is now showing 0, this section explains why and what your options are.
The change
Before v1.9.0, when a cashier reduced a line price (e.g., $18 → $16), the POS recorded the order with subtotal = $18 and total = $16. WooCommerce then computed discount_total = $2, and this appeared on your receipt and in reports as a discount.
This caused incorrect totals whenever a coupon was applied on top — the coupon would calculate against the original $18, leading to an over-discount and the customer being undercharged.
From v1.9.0, WCPOS aligns with how WooCommerce treats sale prices: the price you set at the till is the line subtotal. WooCommerce only counts coupon codes as "discounts" (this matches WC's behavior for products on sale, where the sale price is also baked into the subtotal with no separate discount line).
What this means for you
- Receipts no longer show a separate "Discount" line for line-item price changes. The lower price is the price.
- Reports show
discount_total = 0when only POS line-item price changes were used. Only coupon discounts are counted. - Coupons now calculate correctly when stacked on POS-discounted items.
- The discount data is still stored on every order in line-item metadata (
_woocommerce_pos_data), so historical figures can still be derived if needed.
If you want discount visibility back
If you need a "total discount given today" figure for your end-of-day reconciliation, the supported way is to use Coupons instead of line-item price edits for trackable discounts. Set up a "Manager 10%" or "Loyalty $5" coupon in Marketing → Coupons, and apply it at the cart. It'll show in your reports natively.
We're also evaluating a POS-specific "Total Saved" figure that surfaces line-item price changes separately from coupon discounts. If this matters to your workflow, let us know.
Known Limitations
- No automatic discount rules — the POS doesn't support "buy 2, get 1 free" style automatic discounts. Use WooCommerce coupons for structured promotions.
- Quick discounts are percentage-only — there's no built-in quick button for fixed-amount discounts. Use a negative fee or edit individual prices instead.