X and Z Readings

The interim X reading, the Z reading that seals a shift, the separate business-day Z that seals a whole day, and the counters behind them.

14 min read · Updated 10 Sep 2026

On this page

A reading is Kassly's summary of what a till has sold. There are three of them, and the reason people get lost is that two are called Z.

This page is the fiscal side of a reading — what each one is for, what prints on it, and what a sealed reading locks. The practical business of counting the drawer and closing up is in Closing a shift, and how to chase a variance is in Cash over and short.

Needs the Cash Drawer & Expenses add-on (₱300 per branch each month), or any bundle that includes it. See Plans and add-ons.

Three readings, two of them called Z

Reading Covers Produced Numbered from
X reading One shift, up to now On demand, as often as you like Not numbered
Z reading One shift, at its close Once, when the shift is closed The terminal's Z counter
Daily Z reading One terminal's whole business day, across every shift on it Automatically, once the business day has ended The terminal's daily-Z counter, a separate sequence

The per-shift Z and the daily Z are separate documents with separate counters. Three cashiers handing over one terminal produce three Z readings — say numbers 41, 42 and 43 — and one daily Z, numbered 12. Neither number tells you anything about the other, and the daily Z has no shift and no cashier on it. When somebody asks for "the Z reading for yesterday", the daily one is almost always what they mean.

The per-shift Z exists for cashier accountability: it names a person, a drawer and a count. The daily Z exists as the day of record for a machine: it is the roll-up the BIR describes, and it is the one that seals the day against later changes.

Where to find them

Reading Where
X reading Back office: Sales → Shifts, open a shift, then X-Reading. On the phone it is the summary shown in the End Shift review step
Z reading Back office: Sales → Shifts, open a closed shift, then Z-Reading. For a whole period at once, Reports → Z-Reading / End-of-Day
Daily Z reading Nowhere on screen. It is sealed and kept, but there is no page for it — ask support for a copy

Both shift readings have a Download PDF button. The PDF is laid out for an 80mm thermal roll, so it prints on a receipt printer as well as on paper, and comes down as x-reading-<shift>.pdf or z-reading-<shift>.pdf.

Who can open it
X reading Owner, manager with access to that branch, or the shift's own cashier
Z reading Owner and manager only — never the cashier

The X reading

An X reading is a look, not an act. It changes nothing, it is not numbered, and taking ten of them during a shift leaves no trace. Use it to check the day against the till at lunchtime, or to hand a supervisor a mid-shift figure.

The printed X carries:

Block Contents
Header X-READING REPORT and (INTERIM), then branch, cashier, when the shift opened and when the reading was taken
Sales Summary Transaction Count, Void Count, Voided Sales, Return Count, then Gross Sales, Discounts, Returns, Service Charge (only when there was one), and NET SALES
Serial Range Beginning and ending receipt number for the shift so far
Accumulated Grand Total Beginning and ending lifetime accumulator
Payment Breakdown One line per tender actually used
VAT Summary VATable Sales, VAT Amount (12%), VAT-Exempt Sales, Zero-Rated Sales
Expenses Only when you have turned that setting on — see Closing a shift
Footer *** INTERNAL X-READING — NOT A BIR DOCUMENT *** and For shift reconciliation only

Two things about it surprise people:

  • The X reading says nothing about the drawer. No Expected in Drawer, no cash reconciliation, no over or short. Those lines only exist once a drawer has been counted, which happens at close. To see the expected figure mid-shift open the shift record itself in the back office.
  • The reading on screen is shorter than the PDF. The panel in Sales → Shifts shows sales, payments, VAT and expenses. The serial range and the accumulated grand total are on the printout only.

The Z reading for a shift

Closing a shift seals its Z reading. Sealing means the shift gets a Z number from the terminal's counter and the reading is stored, once, under that shift. It is not reissued, and there is never a second Z reading for the same shift.

The printed Z carries the same sales, payment and VAT figures the X does, plus:

Block Contents
Letterhead Your registered business name and address. For an accredited store, also TIN and MIN
Title Z-READING REPORT for an accredited store, INTERNAL Z-READING otherwise, then Z-Counter No:
Shift identity Branch, cashier, shift opened, shift closed
Transaction Receipt Range Beginning and ending TRN number
Cash Accountability Beginning Balance, Cash Sales, then AR Collected, Cash In and Cash Out when there were any, then Expected in Drawer, Ending Balance and Over or Short
Footer END OF Z-READING, the Z counter, the reset counter, when it was generated, and *** THIS DOCUMENT IS SYSTEM GENERATED ***. A store that is not accredited also gets Internal tracking document — not a BIR report.

The Accumulated Grand Total block prints only for an accredited store. So does the TIN and the MIN. Everything else prints either way. See BIR compliance for what accreditation changes and what it does not.

A shift can be sealed without anybody counting the drawer — that is what happens when a shift is left open and Kassly closes it overnight. The count is then genuinely unknown rather than zero, and the reading prints NOT COUNTED against Over / Short. Nothing is posted to your books for a drawer nobody looked at.

The daily Z reading

The daily Z belongs to a terminal and a business day, not to a person. It rolls up every shift that ran on that terminal for the day, and it is sealed automatically once the day is over. Nobody presses a button.

One per Terminal, per business day
Numbered from That terminal's daily-Z counter, which is nothing to do with the per-shift Z counter
Sealed Once. A day already sealed is left exactly as it was, however many times the job runs again
Skipped For a terminal that had no completed sales and no voids that day. A till nobody used does not get a reading

What prints:

Block Contents
Letterhead Registered name and address. For an accredited store, also TIN, MIN and PTU No.
Title Z-READING (DAILY), the business day, the Z counter for that day, and the terminal name
Identity lines Reset Counter, number of Transactions, and the Serial Range for the day
Sales Gross Sales, Discounts, Service Charge (when there was one), NET SALES, then Voided Sales and Returns / Refunds with their counts
Payments One line per tender
VAT VATable, VAT-Exempt, Zero-Rated and the VAT amount — accredited stores only
Accumulated Grand Total Beginning and ending — accredited stores only
Footer *** THIS DOCUMENT IS SYSTEM GENERATED ***, plus This is not a BIR Z-reading. for a store that is not accredited

Three differences from a shift's Z reading are worth knowing:

  • There is no Cash Accountability section. A business day crosses drawers and cashiers, so there is no single count to reconcile against. Drawer accountability lives on the per-shift Z, and only there.
  • Voids are counted by when the void happened. A sale rung on Monday and voided on Tuesday counts on Tuesday's daily Z. The per-shift Z works the other way round: it counts voids of the sales rung during that shift, whenever the void was actually done.
  • It only covers sales attached to that terminal. A sale recorded with no terminal against it is in your sales figures and in your books, but it is in no daily Z. See Terminals.

The nearest thing to the daily Z that you can actually open is Reports → Daily Sales Breakdown, which gives one row per business day over any range and exports to CSV. It is worked out live from your transactions rather than read from the sealed reading, so it covers history from before sealing existed — but it is a report, not the reading.

When a business day starts and ends

A business day is a day in your store's own timezone, beginning at the time set in Settings → Store Settings → Business Day Start. It defaults to 12:00 AM, which makes a business day exactly the calendar day.

Push it later if you trade past midnight. With it set to 4:00 AM, a sale rung at 2:00 AM still belongs to the day that started the previous morning — which is what anyone working that shift would tell you, and what the daily Z will now agree with.

Kassly checks every hour and seals the previous business day, so today's daily Z appears some time after your cutover has passed. Checking hourly rather than once a night is deliberate: a missed run, or a store on an unusual cutover, is picked up on the next pass instead of being lost.

The counters

Counter Lives on What advances it
Z counter The terminal Every shift Z sealed on that terminal
Daily-Z counter The same terminal, separately Every business day sealed on that terminal
Reset counter The same terminal Only when the lifetime sales accumulator fills up and starts a fresh cycle. It reads 0 on effectively every terminal, forever

The Z counter is a four-digit field, matching what is declared to the BIR. On reaching 9999 Kassly refuses to seal any further Z readings rather than rolling quietly back to 1. That is the correct behaviour and not a fault: a counter that silently restarts destroys the one thing the number is for. The terminal has to be replaced, or re-permitted, before it can seal again. At a shift a day, 9999 is about 27 years, so this is a milestone you are unlikely to meet.

Two smaller notes on numbering:

  • If a counter ever ends up behind the readings already recorded against a terminal — usually after imported or seeded data — Kassly pulls it forward to the highest number already used before issuing the next one. Numbers are never reused.
  • A shift closed on no terminal at all cannot draw from a terminal counter. It falls back to counting the branch's own sealed shifts. It is a working number, not a machine counter, and it is another reason to attach a terminal to every till.

Once a business day is sealed

Sealing a business day is the point of the daily Z. Once a day is sealed, nothing later is allowed to reach back into it.

This lock is written by the daily Z and by nothing else. Closing a shift does not seal its day. So the ordinary rhythm is: you close up, you correct whatever needs correcting, and then some hours later — after the cutover — the day is sealed and the window shuts.

What the lock does:

Attempt What happens
Reopening a shift whose business day is sealed Refused, with a message saying the day has been sealed by a Z reading. There is no override
A sale that syncs in late for a sealed day, in an accredited store It is not lost and the sealed reading is not touched. The sale is carried into the current open business day and flagged as a late posting, keeping a record of the business date it was actually rung on
A correction to your books dated into a sealed day The sales side is refused. A void always lands in the period it was voided in, not the period of the sale — see Books of accounts

A reopened shift is still possible, and still useful, for a day that has not yet been sealed. The 24-hour limit and who may do it are in Closing a shift.

Taking a reading with no internet

Readings are worked out on the server, so an X reading normally means asking the server for one. Offline, Kassly falls back to a reading computed from the device's own records and labels it, in the corner of the summary, Offline estimate.

An offline estimate is honest about being one:

Included Left out
Sales rung on this device during the shift, including ones still waiting to sync Anything recorded on another device or in the back office
Gross, discounts, service charge, net, transaction count Returns and refunds — always shown as zero. Returns are settled on the server and are not tracked on the device, so Kassly reports nothing rather than guessing
The payment mix and the full VAT split The BIR fields: Z number, receipt-number range, accumulated grand total
Cash In and Cash Out queued on this device
AR collections recorded on this device, with only the cash part counted toward Expected

Closing offline queues the close rather than performing it. The screen says so:

Closed offline — totals below are this device's records. The official Z-reading is generated when the close syncs.

Until it syncs there is no Z number and no thermal print of the Z — the print button is not offered, because there is nothing official to print yet. When the close does sync, the server issues the real Z reading using the time you actually closed the drawer, not the time the queue drained, so sales rung after you went home are not swallowed into your shift.

More on how any of this queues and drains is in How offline works and Sync status.

Three things that look like mistakes and are not

The accountability lines can add up to slightly more than Expected in Drawer. Expected takes cash refunds out of the drawer, but the printed lines only carry Cash Out — there is no refund line, and no note explaining the gap. If a Z will not reconcile by a few hundred pesos, check whether a return was refunded in cash on that shift; the difference is usually exactly that. The figures are right, the printout is just missing a line.

The footer counter can differ from the one in the header. Z-Counter No: at the top is this reading's own number and never changes. Z-Counter in the footer reports where the terminal's counter stands now, so on a reading you print weeks later it shows a higher number. The header is the one that belongs to the document.

A single shift's Z is worked out again each time you open or download it. So the Accumulated Grand Total on a Z printed today reflects the terminal's total today, not the total on the night of that close. When you need the figures exactly as they were sealed, use Reports → Z-Reading / End-of-Day, which reads the stored reading and never recalculates.

Limits to be honest about

Limit What it means
No X reading on the phone outside End Shift The cashier's X reading appears in the End Shift review step. A mid-shift X reading is a back-office job
No screen for the daily Z It is sealed and kept, and it is what locks the day, but there is no page listing daily Z readings. Ask support if you need one
No reading covers a whole branch A shift's Z covers one cashier's drawer; a daily Z covers one terminal. There is no combined reading across the tills in a branch — use Reports → Daily Sales Breakdown for that
The X reading is never a BIR document It says so on its own footer, in both modes. Only the Z readings are ever presented as fiscal documents, and only for an accredited store
Accumulated Grand Total reads zero until you are accredited The lifetime accumulator deliberately does not accumulate before then. The block still prints on the X, showing zeroes
Nothing here registers anything A Z reading is a document Kassly produces. Registering machines, permits and books is between you and your RDO — see BIR compliance

If a reading and your own arithmetic disagree, work through Cash over and short before assuming either is wrong. Nine times in ten the answer is a movement nobody logged.