Returns & Refunds
Voiding a sale, taking a return, what each puts back, and where they show up in the day's numbers.
10 min read · Updated 15 Oct 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 of the items that came back. See Taking a return |
Both are on every plan, and both work from the phone, the desktop app and the web back office.
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.
- A sale recorded from a sales order puts its quantity back on the order as still owed, and the order goes back to Confirmed. See Sales orders.
- A sales invoice for the sale is voided too, including one whose only payment is the cash copied from the sale. If you recorded a payment on it yourself (or it was settled before this change), it is left as it is, with a warning on the invoice page, for you to sort out.
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.
Taking a return
A return takes back part of a sale, or all of it, and gives the money back. One item of three, or two of the five they bought.
On the phone, open Transactions, tap the sale and tap Return Items. On the desktop app and the web back office, open the sale from Transactions and click Return items.
For each line, set how many are coming back (up to what is left on the sale), and what state they are in:
| What happens | |
|---|---|
| Resellable | It goes back on the shelf. |
| Damaged | It stays out of stock and is logged as a loss at cost: "Not restocked — logged as a loss." |
Then choose how the money goes back: Cash, GCash, Maya, Card or Store credit. Store credit needs a customer on the sale ("Store credit needs a customer on the sale."). Refund total shows what you are handing back. Type a Reason ("e.g. Wrong size, item defective") and tap Return ₱20.00; the button shows the amount.
Who can do it works as it does for a void. An owner or manager confirms and the return is done: "Return processed." A cashier needs a manager to enter their PIN on the spot, or taps Request Manager Approval: "Sent for manager approval." Nothing is refunded until a manager approves it under Oversight → Approvals.
A few things to expect:
- Returns need an internet connection. Without one the button stays off: "Returns need an internet connection."
- Cash comes out of an open shift, if your store uses shifts. With shifts on your plan and none open, you get "Open a shift to refund cash, or choose store credit or another refund method." A store without shifts (the Free plan) hands the cash back without one, the same way it took the sale.
- A cashier's cash return is paid from their drawer. If the store uses shifts and they have closed theirs before a manager approves, the approval is refused: "The cashier who requested this return has no open shift to refund cash from. Ask them to process it at the counter."
- On a sale charged to an account, the return first cancels what the customer still owes on it. The dialog says how much: "₱500.00 cancels the customer's unpaid balance first; pay out ₱250.00."
- Once anything is returned, the sale can no longer be voided, and it cannot be voided while a return waits for approval. Once every item is back, Return Items goes away.
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. A store without shifts on its plan refunds cash with no shift and no cash movement.
A sale recorded from a sales order can also put the returned quantity back on
that order as still owed (reopen_on_order, the Still owe these on sales
order tick box). It is off unless asked for: a return is money back, not goods
still to deliver.
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.
A return needs the returns capability (owners and managers have it). A cashier's return is queued for a manager's approval unless a manager's PIN is sent with it.