Discounts

Promo codes, loyalty rewards and statutory senior citizen / PWD discounting — including how the 20% and the 12% VAT interact.

9 min read · Updated 24 Oct 2026

Senior citizen and PWD discounts in Kassly · 0:42 · Watch on YouTube
On this page

Discounts are applied at checkout, not in the cart. There are three kinds you can apply at the counter: a promo code, a loyalty reward (points or a stamp card), and a statutory senior citizen or PWD discount.

The statutory discounts are on the Free plan. Promo codes and rewards need the Customer Memory & Promos add-on.

What you can and cannot discount

Whole order Chosen items
Promo code Yes Yes, with a product or category code
Points or a stamp reward Yes A free-item stamp reward takes off one item's price
Senior citizen / PWD Yes (the default) Yes

There is no per-line discount and no free-hand discount field in the app. You cannot knock ₱50 or 10% off a sale on the spot. What you can do per line is change the price — retail, wholesale, or a typed amount on products set up to allow it. See Making a sale.

A sale can carry only one discount. Apply a promo code and the senior/PWD option disappears from the screen; apply senior/PWD and the promo option disappears. A points or stamp reward works the same way: while one is on, the others are greyed out with "Remove the reward to use another discount." To swap, remove the applied one with its ✕ first.

Promo codes

Tap + Promo Code, type the code, and tap Apply Code. A valid code shows a PROMO badge with the promotion's name and the amount taken off.

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

A code is a percentage or a fixed peso amount off, on the whole order or on one product or category. Codes are set up in the back office — see Approvals and promotions, which also lists every message the till shows when it refuses a code.

  • Promo codes need a connection. Offline you get "Promo codes need a connection to verify — connect and try again." The code has to be checked against its dates, its usage limit and your store before it can be trusted.
  • The code follows the cart. Add or remove items after applying it and the till checks the code again for the new cart.

Every code that is used counts one use when the sale completes, and if the sale is later voided, the use is given back. The receipt names the code.

Points and stamp rewards

With a customer attached, checkout shows Rewards: Use points spends their loyalty points, and Redeem claims a full stamp card. Rewards need a connection and cannot be used on an open table tab. The receipt shows "Points (N pts)" or "Stamp reward:" and the reward's name.

Senior citizen and PWD discounts

Philippine law entitles senior citizens (RA 9994) and persons with disability (RA 10754) to 20% off, plus exemption from VAT on their purchase. Kassly implements this as one action.

Applying it

Tap + Senior / PWD Discount (20%), choose Senior Citizen or PWD, then:

Field Required Notes
ID number Yes The OSCA ID for a senior, the PWD ID for a PWD
Name No The cardholder's name, if it differs from the payer

Tap Apply 20% Discount. Without an ID number you get "ID Required" — "Please enter the Senior Citizen / PWD ID number."

The ID is required by law, not by us. It goes on the receipt and into your sales book, which is what the BIR looks at when checking that a claimed discount was genuine.

If a customer's record is already marked as a senior or a PWD, attaching them to the sale applies the discount automatically, using the ID on their profile. No typing.

Choosing which items it covers

By default the discount covers everything in the cart. When there is more than one line you also get a picker:

  • On a phone: Apply discount to: with a checkbox per line, and a Select All / Deselect All toggle. The footer reads "3 of 6 items" and the discount total.
  • On a tablet: Tap items to apply Senior/PWD discount. Selected lines are tinted and show their own share of the discount.

Untick anything the entitlement does not cover. The per-line figure shown comes from the same calculation as the total, so the two can never disagree.

Deselect All really means no discount. It does not quietly fall back to "all items". If you clear every line, the discount is ₱0.

If you add another item after applying the discount, and the discount was set to cover everything, the new item is covered too. If you had picked a subset, the new item is not — check the picker before taking payment.

How the discount and VAT interact

This depends on your store, and it matters, so here is exactly what Kassly does.

If your store is VAT-registered and your prices include VAT: the 12% VAT is taken out first, the 20% comes off the VAT-exclusive price, and the discounted lines become VAT-exempt. That is the order the law requires — the discount is not 20% of the shelf price.

A ₱235.00 shelf price on a VAT-registered store:

Step Amount
Shelf price (VAT-inclusive) ₱235.00
Less 12% VAT (₱235.00 ÷ 1.12) ₱209.82
Less 20% senior discount −₱41.96
What the customer pays ₱167.86

The receipt shows the subtotal as ₱209.82 for that line, the discount as ₱41.96, and no VAT on it.

If your store is not VAT-registered, or your prices are entered without VAT: there is no VAT to take out, so the discount is a straight 20% off the price. The same ₱235.00 item becomes a ₱47.00 discount and ₱188.00 to pay.

Most Kassly stores are in the second group. Which one you are in comes from your tax setup — see Tax configuration. It follows each item's own Tax Inclusive setting, not the store-wide Tax Inclusive Pricing switch.

Update your POS apps. Older versions of the Kassly POS app (Android and desktop) took the 20% off the VAT-inclusive price on a VAT-registered store, so the ₱235.00 item above came to ₱188.00 instead of ₱167.86. Kassly still records those sales at the amount the app charged, so nothing gets stuck, but only an updated app charges the senior or PWD customer the right amount.

Items you did not tick keep their VAT. On a mixed basket, some lines end up VAT-exempt and some stay VATable, and the receipt's VAT breakdown splits them correctly.

On the receipt

A statutory sale prints the discount class and rate — "Senior Citizen Discount (20%)" — the ID label and number, the cardholder name, and a Signature: ____________________ line for the beneficiary to sign. Get it signed; that signature is part of what makes the claim defensible.

See Receipts.

What the app does not offer

Kassly's books support two more statutory discounts, but the app can only apply Senior Citizen and PWD:

Class Rate Available at the counter?
Senior Citizen 20% Yes
PWD 20% Yes
National Athlete / Coach (NAAC) 20% No
Solo Parent 10% No

If you need to give a NAAC or Solo Parent discount, it cannot be rung up on the app today. Records that carry one are handled and reported correctly, but there is no button for it.

Also missing: there is no cardholder TIN field in the app, even though the sales book has a place for it.

No approval is needed for a discount

Any cashier can apply a 20% statutory discount, a valid promo code or a customer's reward without a manager PIN. There is no discount limit, no approval threshold, and no second-person sign-off — at any amount.

That is a deliberate trade-off for the statutory discounts, which are an entitlement rather than a favour and should not need a manager standing by. But it does mean discounts are worth reviewing: every one is recorded against the cashier and the sale, appears as Discount on the X and Z readings, and can be listed in your reports. See Sales reports.

Voids do need a manager — see Returns and refunds.

Discounts, service charge and totals

The order these are applied in:

  1. Add up the lines.
  2. Take off the discount.
  3. Add the service charge, calculated on the discounted subtotal.

So a discount reduces the service charge too.

A discount is only ever applied once

If a sale is held and recalled, or a table's tab is reopened, or an order is handed from one device to another, the discount is worked out afresh from the full prices — never applied on top of an already-discounted figure.

It is worth saying out loud because it is the kind of thing that is easy to get wrong and hard to spot: a discount applied twice under-charges the customer, and the sale may not be completable at all. Kassly rebuilds every recalled line at its full price before applying anything, so it cannot happen. See Hold and recall.

Senior and PWD discounts on an open table

On a table's open tab, the Senior/PWD discount covers every item on the tab, including rounds you send later. Attaching a senior citizen or PWD customer to a tab that is already open (with the latest app) gives the tab their discount on the server, and the receipt shows it, exactly as if they had been attached before the first order. Removing that customer takes the discount off. A tab that has already taken a payment keeps its customer and its discount.

One senior in a group. Tick only the senior's own items in the Senior/PWD selection, just as on a direct sale. With the latest apps the selection goes to the server with every round you send and at checkout, so only those items are discounted and VAT-exempt on the receipt; everything else stays at the regular price with VAT. Items you add later are left out unless you tick them. On an older app or server version the whole tab is discounted, so ring the senior's items as a separate sale instead.