Getting discounts and fees right at the point of sale isn’t just about math — it’s about compliance, transparency, and matching the expectations your customers and your accountant both have. Here’s how MFS POS handles it, and why.


The Order of Operations

Every transaction in MFS POS follows a strict calculation order:

  1. Item subtotal — unit prices multiplied by quantities
  2. Discount — percentage or flat amount subtracted from the subtotal
  3. Fees — flat fees added as-is; percentage fees calculated on the post-discount subtotal
  4. Tax — calculated on discounted item amounts plus any taxable fees
  5. Total — subtotal minus discount, plus fees, plus tax

This sequence matters. Each step feeds into the next, and changing the order would produce different (and potentially incorrect) totals.

Discounts

MFS POS supports one discount per transaction, applied to the entire order. You can choose between:

  • Percentage discount — a percentage of the product subtotal (e.g., 10% off)
  • Fixed discount — a flat dollar amount (e.g., $25 off), capped so it never exceeds the subtotal

To speed up checkout, you can configure predefined discount buttons in Settings — common ones like Senior Discount (10%), Military Discount (10%), or Employee Discount (15%) — so your staff can apply them with a single tap instead of typing values manually.

Cash Discount Warnings

For businesses that offer a cash discount to offset card processing fees, MFS POS has a built-in safety net. You can flag any predefined discount with a “warn on cash” setting. When a cashier processes a cash payment and hasn’t applied that discount, a confirmation dialog appears:

“Cash Discount has not been applied to this order. Continue without it?”

This prevents your staff from forgetting to pass the savings along.

Fees

Unlike discounts, you can stack multiple fees on a single transaction. Each fee can be:

  • Flat — a fixed dollar amount (e.g., $25 Transfer Fee)
  • Percentage — a percentage of the post-discount subtotal (e.g., 3% Credit Card Fee)

Like discounts, fees can be configured as predefined buttons for quick access. Common examples include Credit Card Fee, Background Check, Shipping/Handling, Setup Fee, and Rush Fee.

Why Percentage Fees Use the Post-Discount Subtotal

This is worth calling out because it’s a deliberate design choice. If a customer buys $100 worth of merchandise and receives a 10% discount, the subtotal drops to $90. A 3% credit card fee is then calculated on $90 — not the original $100 — resulting in a $2.70 fee rather than $3.00.

This matches how every major POS system in the industry handles it — Square, Clover, Lightspeed, and Toast all calculate percentage-based fees on the discounted amount. More importantly, Visa and Mastercard merchant rules require that credit card surcharges be assessed on the final transaction amount, not the pre-discount price. Calculating it any other way would inflate the effective surcharge rate beyond what’s disclosed to the customer.

Flat fees, on the other hand, are completely independent of discounts. A $25 Transfer Fee stays $25 regardless of any discount applied.

Terminal Fee Warnings

Similar to cash discount warnings, you can flag predefined fees with a “warn on terminal” setting. If a cashier processes a card payment through your terminal without adding the Credit Card Fee, they’ll see a prompt before the transaction goes through.

Tax on Fees

Not all fees should be taxed, and MFS POS gives you control at two levels:

  1. Global setting — “Fees are not taxable” applies to all manually added fees by default
  2. Per-fee override — each predefined fee has its own taxable toggle that overrides the global setting

For example, you might want a Shipping/Handling fee to be taxable (since shipping is taxable in many states) but a Background Check fee to be tax-exempt. Both configurations work simultaneously.

When tax is calculated, MFS POS uses WooCommerce’s tax engine with your shop’s base address. The discount is applied proportionally across different tax classes before tax is computed — so if you sell items with different tax rates, the discount allocation preserves the correct tax calculation for each class.

How It All Comes Together

Here’s a concrete example showing the full calculation:

StepDescriptionAmount
Items2 items at $50 each$100.00
Discount10% off-$10.00
Post-discount subtotal$90.00
Credit Card Fee3% of $90.00+$2.70
Background CheckFlat fee+$10.00
Tax8% on $90.00 + $2.70 (taxable fee)+$7.42
Total$110.12

Note: The Background Check fee is not taxed in this example (configured as tax-exempt), while the Credit Card Fee is taxable, so tax is calculated on the discounted items plus the taxable fee amount.

Rounding

Every monetary value is rounded to two decimal places at the point of calculation — both on the frontend (before display) and on the backend (before storage). Tax is rounded per tax line before summing, matching WooCommerce’s native order calculation behavior. This prevents the penny-rounding drift that can accumulate when you round only at the end.

Summary

The design philosophy is straightforward: discounts reduce what the customer pays for products; fees cover costs the business passes through; tax applies to the final taxable amounts. Each layer builds on the one before it, following industry standards and card network rules. The result is totals that are accurate, compliant, and predictable — for your staff, your customers, and your books.