Product Pricing
Cost price versus selling price, margin, wholesale and custom pricing, how VAT-inclusive pricing works, and what happens when you change a price.
6 min read · Updated 10 Sep 2026
On this page
Two numbers matter on every item: what it costs you and what you charge. Kassly asks for both, because without the cost it cannot tell you a margin, a food cost or a profit.
Pricing sits in the Pricing block of the product form (Catalog → Products → Add Item, or the edit pencil on an existing item).
The price fields
| Field | Required | Notes |
|---|---|---|
| Cost Price (₱) | Yes | What one unit costs you. Pre-filled with 0. |
| Selling Price (₱) | Yes | What you charge. Left blank on purpose on a new item — it should be a deliberate number, never a safe default. |
| Wholesale Price (₱) | No | Needs the Customer Memory & Promos add-on to appear. |
| Allow Custom Pricing | No | Off by default. Lets a cashier type their own price for this item. |
Cost is pre-filled with zero because plenty of small merchants genuinely do not know it and only care about the selling price. Leaving it at zero costs you nothing at the counter — but it makes every margin, profit and food-cost figure in Kassly wrong, so it is worth going back to fill in.
Cost price is per stock unit
If the item tracks stock, the cost is the cost of one stock unit. Flour
tracked in grams at ₱45 per kilo has a cost price of 0.045, not 45.
Cost is kept to four decimal places for exactly this reason. Selling prices stay at two — you cannot charge a customer ₱0.045.
Margin
As soon as both numbers are filled in, Kassly shows the margin under the selling
price — Margin: 42.9% — worked out as the gap between selling and cost, as a
percentage of the cost.
If you type a selling price below the cost you get a red warning instead: "Selling price is below cost — you will lose money on each sale." It is a warning, not a block. Loss leaders are allowed.
Wholesale price
Needs the Customer Memory & Promos add-on (₱300 per branch each month), or any bundle that includes it. Without it the field is simply not shown.
A wholesale price is a second price on the same item, used when a line is rung up as wholesale rather than retail — B2B sales orders and consignment issues do this. It is not applied automatically to a customer just because they are marked as wholesale.
If a line asks for the wholesale price, Kassly looks in this order:
- the variant's wholesale price,
- the product's wholesale price,
- the ordinary selling price.
So leaving wholesale blank is safe: nothing sells for ₱0 by accident.
See Sales orders and invoices.
Allow Custom Pricing
Turn this on for items with no fixed price — cut-to-length cable, custom cakes, tailoring. It lets a cashier enter the amount at the counter.
It is a per-item permission. If a sale tries to set its own price on a product that does not allow it, Kassly rejects the whole sale: "Product … does not allow custom pricing."
Tax-inclusive versus tax-exclusive
Every product carries a Tax Inclusive setting, and it changes the meaning of the selling price you typed.
| Setting | Your ₱112 selling price means | VAT at 12% |
|---|---|---|
| Tax Inclusive (on) | The customer pays ₱112 | ₱12.00 is carved out of the ₱112 |
| Tax Inclusive (off) | The customer pays ₱125.44 | ₱13.44 is added on top |
The arithmetic, so you can check a receipt by hand:
- Inclusive — VAT = total − (total ÷ 1.12). The line total does not change.
- Exclusive — VAT = total × 0.12, and the line total goes up by that amount.
Philippine retail prices are almost always tax-inclusive, which is why new products default to it.
The product's own setting wins. Your store-wide Tax Inclusive Pricing switch in Settings → Store Settings → Tax Settings is the default for ad-hoc items typed at the counter, but a product or service always uses the value stored on itself. If you flip the store switch, it does not retroactively change items already in your catalog.
VAT classification
Alongside Tax Inclusive there is a VAT Classification with three options:
| Classification | What Kassly does |
|---|---|
| Vatable (12%) | Applies your tax rate, inclusive or exclusive as set. |
| VAT-Exempt | No VAT at all. The price is the price, and the Tax Inclusive setting is ignored. |
| Zero-Rated | No VAT at all. |
Two whole-store cases override anything an item says:
- If your store's Tax Type is Non-VAT (Percentage Tax) or VAT-Exempt, every line is treated as VAT-exempt with zero VAT, no matter how the product is classified. Nothing is carved out of your revenue.
- The Tax Inclusive and VAT Classification fields only appear on the product form if your store is marked BIR-accredited. If they are not shown, new products are created tax-inclusive and vatable.
Tax rates and the store-level settings are covered in Tax configuration. Senior-citizen and PWD discounting interacts with VAT and is covered in Discounts.
Changing a price
Edit the product, change the number, save. There is no approval step and no scheduling.
What happens next:
| The back office | Updated immediately. |
| The app | Picks the new price up on its next catalog sync. A terminal running offline keeps selling at the old price until it syncs. |
| Past sales | Untouched. Every receipt, report and Z-reading keeps the price that was actually charged. |
| Stock valuation | Uses cost, not selling price, so a reprice does not move your inventory value. |
Because a reprice only reaches a terminal on sync, plan price changes for a moment when your devices have signal — not five minutes before a rush. See Sync status.
What Kassly does not do
Being straight about the edges:
- No quantity-break pricing. There is no "10 pieces or more, ₱9 each" tier.
- No member price. Member pricing is not a separate price on the item; loyalty and memberships work through discounts instead. See Memberships.
- No per-branch prices. A product has one selling price across your whole store. Branch-level pricing is not supported.
- No scheduled price changes. A new price takes effect the moment you save it. For time-limited pricing use a promotion instead — see Approvals and promotions.
- No automatic markup. Kassly will not set your selling price from your cost plus a percentage, and receiving stock at a higher cost never changes what you charge. Selling prices only change when you change them.
One thing does move a cost price on its own: completing a production run at a commissary recalculates the finished item's cost as a moving average of what was already on hand and what the batch cost to make. See Commissary.