Give percent or flat discounts per line, discount all items or the entire sale, and control who can do it with per-employee and per-item limits, price edit ranges, and the Edit Sale Price and Give Discount permissions.
A markdown at the register should be quick for the clerk and visible to the owner. PHP Point Of Sale gives you both: fast discount controls on the Sales screen, and guardrails that decide who can use them and how far they can go. The same controls apply in Sale, Return and Estimate modes.
Discount a single line
- On the Sales screen, click the value in the Discount column of the cart line.
- In the editor that opens, choose the discount type with the % and $ buttons — % takes a percentage off the line, $ takes a flat amount off.
- Type the value and confirm with the checkmark. The line's Total recalculates immediately: two units at 75 with a 10% discount drop the 150 total by 15.
Line discounts require the Give Discount permission on the Sales module. Two limits can stop a discount from saving:
- If the employee or the item has a maximum discount configured, exceeding it shows "You can not discount this item above the max discount of ...".
- A flat line discount can never exceed the line's price — "Flat discount value can't be greater than cost price."
If your store never uses per-line percentage discounts, disable them with Store Config → Sales → Disable Discounts Percentage Per Line Item.
Discount the whole sale
The price section (between the cart and the payment buttons) holds the sale-wide controls. Both appear only for employees with the Give Discount permission:
- Discount all Items by Percent — click Set Discount and enter a percentage; it is applied to every line at once. A 10% discount on a 20.00 sale makes it 18.00.
- Discount Entire Sale — click Set Discount and enter an amount; a fixed amount comes off the sale total. A 5.00 discount on a 30.00 sale makes it 25.00. The field also accepts a percent (the editor is labeled Set Discount (% or fixed)).
- Discount Reason — once a discount is applied, this free-text field appears under the discounts. Click it and type why the markdown happened; the reason is stored with the sale and shows in reporting.
Two settings tune sale-wide discounts:
- Store Config → Sales → Disable Entire Fixed Discounts On Sales Interface — removes the flat Discount Entire Sale control. Default: off.
- Store Config → Sales → Disable Entire Discounts By Percentage on Sales Interface — removes the percent control. Default: off.
- Store Config → Taxes → Flat Discount also discounts tax — makes a flat discount reduce the tax proportionally, for the times you want to land on a true out-the-door total. Default: off.
Price edits are not discounts
You can also simply click a line's Price (or its Total, which back-calculates the unit price) and type a new number. The distinction matters in reporting: an edited price becomes the selling price, while a discount is tracked as a discount with its reason attached. Use a price edit to correct a price that is simply wrong; use a discount when you are deliberately giving something away — that way your reports show exactly how much margin you gave up, and why.
Price edits are gated separately from discounts:
- Edit Sale Price — the Sales-module permission that allows changing line prices and the overall subtotal.
- Allow price override regardless of permissions — a per-item checkbox on the item form that lets any employee edit that one item's price (used for open-priced items like "Misc.").
- Store Config → Sales → Do Not Allow Edit Of Overall Subtotal — removes the editable subtotal even for permitted employees.
- Store Config → Sales → Edit item price if 0 after adding to sale — automatically opens the price editor when an item with no price lands in the cart.
- Store Config → Sales → Do NOT allow items to be sold below cost price — blocks below-cost edits entirely; without it the register only warns "You are selling item below cost price".
Employees with Edit Sale Tier can also switch the sale's Item Tiers selector in the price section, repricing every line to a tier — that is customer-level pricing rather than a markdown; see price tiers and customer pricing.
Set the guardrails
The limits are enforced only when the master switch is on: Store Config → Items → Limit Manual Price Adjustments And Discounts (default: off). With it enabled:
- Max Discount % (store-wide) — set directly under the master switch in Store Config → Items; the default cap when nothing more specific applies.
- Max discount percent (per employee) — on each employee's form (Employees → edit employee). Caps what that person can give; for flat discounts the equivalent percentage is calculated and checked against the same cap.
-
Per item — on the item form's pricing section, three fields appear when the master switch is on:
- Minimum Manual Edit Price — a price edit below it is rejected: "Could Not Set Item Price Below Minimum Edit Price of ...".
- Maximum Manual Edit Price — a price edit above it is rejected: "Could Not Set Item Price Above Maximum Edit Price of ...".
- Max Discount — the largest discount percent allowed on that item, so clearance-friendly items can allow more room than new arrivals.
With the guardrails in place, a new hire can still help a customer without being able to give the store away — and anything they do give is recorded with a reason you can review.
Where discounts show up afterwards
- Reports → Discounts lists every discount given, by employee, with the recorded reasons (gated by the Discounts report permission). See sales and closeout reports.
- On the receipt, Show Total Discount On Receipt prints the total saved, and Show original price on receipt if marked down prints the pre-discount price next to the discounted one — both in Store Config → Receipt. See customizing receipts.
- Line discounts appear in the sale record and exports, so an edited price and a discounted price never look the same in your data.
Recurring promotions belong in price rules
Manual discounts are for judgment calls at the counter: a scuffed box, a price match, a regular you want to keep happy. If the same markdown happens every week — a sale category, a buy-one-get-one, a spend threshold — set it up once as a price rule and let it apply itself automatically, with its own name on the receipt. See price rules and promotions. Coupons entered at the register also apply through price rules.
Common questions
Why can't my cashier give any discount at all? The Give Discount permission is missing on their Sales module. Grant it per employee or through a template — see permissions and templates.
Why does the register say the discount is above the max? Limit Manual Price Adjustments And Discounts is on and the discount exceeds the store-wide max, the employee's Max discount percent, or the item's Max Discount — whichever applies. Raise the relevant limit or have a manager with a higher limit apply the discount.
How do I discount everything in the cart 15% at once? In the price section click Set Discount next to Discount all Items by Percent, enter 15 and confirm. Every line receives a 15% discount.
Can I make a flat discount reduce the tax too? Yes — enable Flat Discount also discounts tax in Store Config → Taxes. Without it, tax is calculated on the pre-flat-discount amount.
What's the difference between changing the price and discounting to the same number? The final total is identical, but the paper trail is not: a price edit records a new selling price with no reason, a discount records the original price, the discount amount and the Discount Reason, and lands in Reports → Discounts.
Can I require a reason for every discount? The Discount Reason field appears automatically whenever a sale-wide discount is set, but it is free text and not mandatory. Make it store policy, and audit it with the Discounts report.
Do discounts affect loyalty points or commissions? Yes — both are calculated from the sale as it was actually rung, so a discounted line contributes its discounted value. How each is computed is covered in loyalty programs and commissions.
Comments
0 comments
Please sign in to leave a comment.