Approvals & Promotions

The single queue where requests wait for a manager's decision, and how to run discounts and coupon codes.

8 min read · Updated 24 Oct 2026

Loyalty points and promo codes · 0:33 · Watch on YouTube
On this page

Two things owners ask for constantly: a way to stop staff doing expensive things unsupervised, and a way to run a promo. This page covers both — the approvals queue, then promotions.

The approvals queue

Everything that needs a manager's decision lands in one place: Approvals in the sidebar. There is no separate inbox per feature.

The queue is not a paid add-on. It appears for anyone whose role can see it.

Who can see and act

Owner Manager Cashier / Staff
See the queue Yes Yes No
Approve or reject Yes Yes No

Access is by capability — View Approvals Queue and Act on Approvals — which owners and managers hold by default. If you use custom roles, you can grant either to another role. See Custom roles.

Which requests you see. When your business limits people to the branches they are assigned to, a manager sees (and can decide) only their own branches' requests. The Owner sees every branch. Requests that belong to no branch stay visible to everyone who can see the queue, with one exception: a stock count at a warehouse shows only to people who can view warehouses, and deciding it also needs the stock-management permission. A branch-limited manager who can view warehouses sees warehouse counts without seeing other branches' requests.

What lands in the queue

Request type Filed when
Void A cashier asks to void a sale and cannot authorise it themselves
Refund Any return or refund is processed
Purchase Order A purchase order is submitted for sign-off
PO Amendment A manager amends a submitted purchase order in a way that raises a unit cost, or the total by more than 10%. Only the Owner can approve it, and the PO changes only when it is approved. See Purchase orders.
Expense An expense is recorded by someone whose expenses need approval: anyone but the Owner on Finance → Expenses, or a cashier's Cash Out at the counter
Leave Request A staff member files leave
Stock Transfer A branch requests stock from another branch or a warehouse
Receiving Variance Goods received differ from the purchase order by more than the allowed variance
Stock Count Variance A stock count's difference exceeds the allowed variance
Production Run A commissary production run is filed
Loan A staff loan is created
Payroll Run A payroll run is submitted for approval

Variance approvals use these limits, which is what "more than the allowed variance" means:

Limit Default
Stock-count variance, units 5
Stock-count variance, percent 10%
Receiving variance, units 5
Receiving variance, percent 10%

A count or a receipt inside those limits applies straight away, with no approval. Outside them, it waits. These limits are not editable from the web back office today — ask support if you need different figures.

Acting on a request

Open Approvals, filter by Status and Type, and open a row to see the detail: what is being asked, the amount, who asked, and when.

  • Approve applies the decision to the underlying record. A voided sale becomes voided, an approved purchase order moves forward, an approved leave request is granted.
  • Reject needs a written reason — up to 500 characters — and the queue will not let you submit without one. Say something useful; the requester sees it.

Either way the requester gets a notification. See Notifications.

Rejecting a Refund does not claw the money back. Refunds are applied at the counter first and recorded in the queue afterwards, as a sign-off and an audit record. Rejecting one is a statement that it should not have happened, not an undo. Correcting the money is a separate action.

Approved and rejected requests are final. Changes requested — a middle state that sends a request back to be amended — exists in Kassly, but the web queue only offers Approve and Reject.

The two-person rule

Kassly can require a second person's PIN before a destructive action goes through — voids, refunds, and discount overrides. It is off by default.

With it on, even a manager who could normally void a sale on their own must enter their PIN against the queue entry. With it off, an authorised manager voids inline at the counter and the queue entry is written purely for the record.

The two-person rule is not exposed on the web back office. Ask support to switch it on.

Promotions

Needs the Customer Memory & Promos add-on (₱300 per branch each month), or any bundle that includes it.

A promotion in Kassly is a promo code: a percentage or a fixed amount off that the cashier enters at checkout. It only applies when someone enters its code. Kassly does not discount a sale by itself.

Promotions live at Catalog → Promotions. Owners and managers create and edit them. Cashiers apply a code at the counter but cannot change the promotion.

The two kinds

Type What you set What happens
Percentage Off A percentage, up to 100 That percentage comes off
Fixed Amount Off A peso amount That amount comes off, never more than what it applies to

Every field on a promotion

Field Required What it does
Name Yes What you and your staff call it
Coupon Code Yes What the customer says at the counter. Upper-cased as you type, matched without regard to case, and unique in your store
Type Yes Percentage Off or Fixed Amount Off
Value Yes The percentage or the peso amount
Applies to Yes The whole order, One product or One category. A product or category code takes its discount off those items only, and a category includes its sub-categories
Min Purchase (₱) No Below this subtotal the code is refused
Usage Limit No The code stops working after this many uses, in total across your whole store
Start Date / End Date No Leave both blank for always on. Dates follow the Philippine day: a code that ends on the 30th works until midnight that night
Priority No Has no effect on codes today
Active — The on/off switch

At the counter

The cashier taps + Promo Code, types the code and taps Apply Code. Kassly checks the code with the server, so it needs a connection. When a code is refused, the cashier sees why:

The till says Because
Invalid or expired coupon code. No such code, switched off, not started yet, or ended
This code has reached its usage limit. Its usage limit is used up
Spend at least ₱500.00 to use this code. The sale is below the minimum purchase
This code is for Pastries only. It is a product or category code and nothing in the cart qualifies
Update Kassly to use this code. A product or category code entered on an old version of the app

If the cart changes after the code is applied, the till checks the code again for the new cart. A sale takes one discount, so a promo code cannot be combined with points, a stamp-card reward or a senior citizen or PWD discount. The receipt names the code. See Discounts.

When a promotion stops working

A promotion is inactive the moment any one of these is true:

  • Active is switched off.
  • Today is before the start date, or after the end date.
  • The usage limit has been reached.

Kassly also runs a daily sweep just after midnight that switches off promotions whose end date has passed. To run one again, move its end date and switch Active back on.

A use is counted when a sale with the code completes, and given back if that sale is later voided, so a void does not burn a use.

A promotion saved without a code before codes were required shows Needs a code — never applies in the list. Edit it and add a code.

What promotions do not do

  • No automatic promotions. Nothing comes off unless a code is entered.
  • No Buy X Get Y. Older Buy X Get Y promotions still show in the list, but take nothing off.
  • No per-customer limits. The usage limit is one total for the whole store. There is no "one per customer".
  • No branch targeting. A promotion applies across your store, not to one branch.
  • No sending. Kassly does not text or email codes to customers. Share them yourself.
  • They are not the same as statutory discounts. Senior citizen, PWD, national athlete and solo-parent discounts are separate, legally defined, and handled by Kassly on their own. See Discounts.

Every change to a promotion is recorded: who changed what, and when. See Audit logs.