Skip to main content
Version: 1.x

Coupons

Pro Feature

The Coupons screen and the ability to apply coupons at the register require WCPOS Pro. Free users see a blurred preview of the Coupons screen but cannot view coupon details or apply codes in the cart.

The Coupons screen lets you browse and look up your WooCommerce coupons from inside the POS, and the Add Coupon button in the cart applies them to the current order. Coupons themselves are still created and managed in WooCommerce — the POS syncs them down and validates them locally for instant feedback at the till.

Interface Overview

Header Actions

At the top of the screen:

  • Search bar — Find a coupon by code
  • Display settings () — Configure visible columns

Coupons Table

The main area displays your synced coupons with:

  • Code — The coupon code customers enter
  • Description — Internal description (also used as the receipt label when set)
  • Discount Type — Percentage, fixed cart, or fixed product
  • Amount — The discount value
  • Used / Limit — Times used and overall usage limit
  • Expires — Expiry date, or blank if none
  • Actions — Three-dot menu
  • Coupon count with sync button (). Long press for Clear and Refresh options.

Coupon Types

WCPOS supports the three standard WooCommerce coupon types:

TypeWhat it doesExample
Percentage discountReduces the cart subtotal by a percentage10% off the order
Fixed cart discountReduces the cart total by a fixed amount$5 off the order
Fixed product discountReduces matching product lines by a fixed per-unit amount$2 off each T-shirt

All three types respect the same validation rules (expiry, usage limits, product/category restrictions, etc.).

Creating Coupons

Coupons are created in WooCommerce, not in the POS. Go to WP Admin → Marketing → Coupons → Add coupon:

  1. Coupon code — what cashiers type at the register. Codes are case-insensitive.
  2. Description — internal note. WCPOS uses this as the discount label on receipts when set, so prefer a customer-friendly phrase like "Manager Discount 10%" over an internal code.
  3. Discount type — percentage, fixed cart, or fixed product.
  4. Coupon amount — the value of the discount.
  5. Expiry date — optional. After this date the coupon will be rejected.

Usage restriction

  • Minimum / maximum spend — coupon only applies above/below a subtotal threshold.
  • Individual use only — prevents this coupon from being combined with any other coupon.
  • Exclude sale items — skips items already on sale (and any line where a cashier has lowered the price at the till — see POS price overrides).
  • Products / Exclude products — restrict the coupon to (or away from) specific products.
  • Product categories / Exclude categories — restrict by category. Misc/custom products created at the POS respect categories assigned through the POS as well.
  • Allowed emails — limit the coupon to specific customer email addresses (supports * wildcards).

Usage limits

  • Usage limit per coupon — total times this code can be used across all customers.
  • Usage limit per user — times one customer can use it.
  • Limit usage to X items — for fixed-product coupons, cap the number of qualifying items discounted per use.

Tips for POS use

  • Create a "Manager 10%" coupon (10% off, no minimum spend, no expiry, single-use restriction off) and give the code to managers — staff can apply it at the till for ad-hoc adjustments and you keep a tracked discount in reports.
  • Create a "Loyalty $5" coupon for repeat-customer rewards.
  • For one-off promotions, set a short expiry date so the code can't be reused later by mistake.
  • Setting Description to the phrase you'd like printed on receipts is the fastest way to brand your discounts.

Applying a Coupon at the Register

In the cart panel:

  1. Click Add Coupon
  2. Enter the coupon code
  3. Press Enter

The POS validates the coupon against your synced data instantly — no round-trip to the server — and applies the discount to the cart. If you change cart contents afterwards, the discount recalculates automatically.

To remove an applied coupon, click the × next to it in the cart.

How Validation Works

When a code is entered, the POS checks all the same rules WooCommerce would check on the server:

  • Coupon exists and is not expired
  • Usage limits aren't exceeded (overall and per-user)
  • Minimum/maximum spend is met
  • "Individual use" coupons don't conflict with already-applied coupons
  • Product/category restrictions match the cart contents
  • Email restrictions match the selected customer (or are skipped on Guest orders)
  • Sale items are excluded if Exclude sale items is enabled

If any check fails, the cashier sees a specific error message (e.g., "This coupon has expired" or "Minimum spend not reached"). The same checks run again on the server when the order is submitted — the local validation is for speed, not for trust.

Sync Behaviour

Coupons sync from WooCommerce to the device via the standard WCPOS replication pipeline:

  • New coupons created in WP Admin appear in the POS on the next sync.
  • Updates to existing coupons (usage count, expiry changes, etc.) sync down automatically.
  • Coupons are stored locally in IndexedDB so they remain available offline.

If you just created a coupon in WP Admin and don't see it yet, the sync may not have run. From the Coupons screen footer, tap the sync icon () to refresh — long-press for Clear and refresh if you need a fresh fetch.

Connectivity

  • Applying coupons works offline because validation is client-side from synced data.
  • Completing checkout still requires a server connection — the server re-validates and is the authoritative source for the final order total.
  • Creating or editing coupons happens in WP Admin and requires a connection to your WordPress site.

How Coupons Interact with POS Discounts

When a cashier lowers a line price at the till and a coupon is then applied, the coupon calculates against the lowered price, not the original. POS-lowered lines are treated as "on sale" — coupons with Exclude sale items enabled will skip them. See Discounts for more.