Returns & Refunds

Voiding a sale, what it puts back, how money goes back on an account sale, and where returns show up in the day's numbers.

7 min read · Updated 10 Sep 2026

On this page

Something went wrong with a sale. What you do about it depends on which of two things happened.

Situation Use
The sale itself was a mistake — wrong item, wrong customer, rang twice Void the whole sale
The sale was right, and now the customer is bringing something back A return — see the honest limitation below

Voiding is the only reversal you can do from the app. There is no returns screen in the Kassly app, on the desktop app, or in the web back office. The system records returns and partial refunds — the data model, the credit memo numbering, the stock and accounting effects are all there and correct — but there is no button to create one. Today, a partial return has to be handled by voiding and re-ringing, or through the API.

That is a real gap and worth planning around, especially if you take frequent part-returns.

Voiding a sale

Open Transactions, tap the sale, and tap Request Void on the receipt.

The dialog is titled Void Transaction and warns you first:

This reverses the sale. Stock and cash will be restored. The voided record stays in your history for audit. A manager must approve.

A Reason is required — at least 5 characters, up to 500 — with the prompt "e.g. Customer changed order, wrong item rang up". Then tap Void with manager approval.

Only completed sales can be voided. Sales that have not yet synced cannot be voided from the app; get the device online first.

Who can void

Who What happens
An owner or manager A confirmation, then the void goes through immediately
A cashier, with a manager present The manager enters their PIN on the spot
A cashier, alone Request Manager Approval — the void is queued

A queued void notifies the owner and the branch managers, and the sale is not reversed until one of them acts on it. Until then the app says "Submitted for owner approval.", the sale carries a Void Pending badge, and the receipt shows a Void Pending Approval pill so nobody submits it twice.

Approvers act on it under Oversight → Approvals, filtered to Voids. See Approvals and promotions.

If your store has the two-person rule switched on, even a manager's void needs a second person's approval. See Users and roles.

What a void puts back

Voiding a completed sale reverses everything the sale did:

  • Stock goes back on the shelf — the products, anything deducted for a modifier, and any recipe ingredients consumed.
  • Commissions and tips on the sale are reversed.
  • A promo code redemption is given back to the promotion's count.
  • A dine-in table is freed, and its kitchen ticket is pulled off the Kitchen Display.
  • A membership issued by the sale is cancelled.
  • A charge on the customer's account is cancelled — see the next section.

Voiding an unpaid order — one that was never completed — just cancels it. There is nothing to put back, because nothing was ever deducted.

What a void does not do

  • The sale is not deleted. It stays in your history marked Voided, keeps its receipt number, and shows on the X and Z readings as a void. Sales records are kept for ten years and are never removed.
  • The receipt number is not reused. A gap in the numbering is what tampering looks like, so Kassly never renumbers.
  • A voided sale's receipt can still be printed, and it prints without any "VOID" marking on it. Be careful handing one over — there is nothing on the paper to say the sale was reversed.

Voiding a sale that was charged to an account

This is the case that needs a decision from you, and Kassly asks for it.

When the sale you are voiding was charged to a customer's account, the void dialog adds a section headed Charged to account:

If the customer already paid, choose how to return it. Unpaid credit is simply cancelled.

Two options, and Refund cash is selected by default:

Choice What happens
Refund cash The part the customer already paid comes back out of the drawer as cash. Their balance drops only by what they still owed.
Store credit Nothing leaves the drawer. Their balance drops by the whole charge, so the amount they had already paid becomes credit in their favour that the next sale uses up.

The distinction matters because a charge sale can be part-paid. Voiding always cancels the part still owed. The part already collected is money you now owe back, and that is what this choice is about.

A cash refund needs an open shift. Cash cannot leave a drawer that is not open. If there is money to hand back and no shift is open you get "Open a shift to refund cash on a void, or choose store credit instead." Open a shift, or pick Store credit.

A queued void always settles as store credit, whichever option was chosen. A cash refund needs someone standing at the drawer, and an approver acting remotely is not. The requested choice is recorded for the approver to see, but the money goes back as store credit. If the customer needs cash in hand, a manager has to do the void at the till.

Nothing is chosen or asked for on a sale that was not charged to an account — the section does not appear.

What each one does to the day's numbers

This trips people up, so here it is plainly.

A void removes the sale from your totals. It drops out of the transaction count, out of gross and net sales, and out of the payment breakdown. It appears instead as its own line — the number of voids and their peso value — on the X and Z readings. Because a voided cash sale is no longer counted as a cash sale, the drawer's expected cash drops by that amount, which is correct: you handed the money back.

A return does not reduce net sales on the reading. The refund shows on its own Returns line, and the day's sales figure stays as it was rung. A cash refund does reduce expected drawer cash, so the drawer still reconciles.

In the profit reports, returns are netted off revenue — the refund less its VAT share — and the cost of the goods is reversed for anything put back into stock. So your margin figures do account for returns even though the sales figure on the reading does not.

The short version: if a sale should never have happened, void it — that keeps the numbers clean. Returns are a separate, later event, and they are reported as one.

See Closing a shift, X and Z readings and Profit reports.

How returns work, for when you use the API

If you are integrating, or your store is handled by someone who is, this is the behaviour to expect.

A return is recorded against a completed sale, item by item. For each item you say how much is coming back and whether to restock it — restocking is on by default, and you turn it off for goods that come back damaged. You cannot return more of an item than is left un-returned on that sale.

Money goes back by one of five methods: cash, card, GCash, Maya, or store credit. Store credit reduces what the customer owes you, and can take their balance below zero — that negative balance is credit in their favour.

A cash refund is recorded as a cash movement out of the open shift, so the drawer reconciles at close instead of showing a shortage.

Returning everything on a sale is recorded as a full return; anything less is partial. Once your store is BIR-accredited, each return is also given a sequential credit memo number in the form CM-00000001, and its slip prints as a CREDIT MEMO rather than a plain return record.

A refund is applied the moment it is recorded. An approval row is created for the audit trail, but rejecting it afterwards does not reverse the refund. Treat the approval as a record of what happened, not as a gate in front of it.

Returns are restricted to owners and managers. Cashiers cannot record one.