What compliance means for your restaurant
ZRA fiscal compliance is not a one-time setup — it is an ongoing obligation. Every sale must be fiscalised, every receipt must carry a verified ZRA signature, and all records must be retained for a minimum of six years. DishInk handles the technical side of this automatically. This page explains exactly what DishInk does, what you are responsible for, and how to handle a ZRA audit.What DishInk does automatically
Real-time fiscalisation
Every completed sale is submitted to ZRA within seconds. No manual uploads, no end-of-day batches, no action required from staff.
Verified QR code
Every tax invoice includes a ZRA-verified QR code that inspectors can scan to confirm the receipt is genuine.
Digital signature
Each receipt carries a unique fiscal signature from ZRA’s VSDC. The signature cannot be reproduced without ZRA’s involvement — it proves the receipt was not fabricated.
Consecutive invoice numbers
CIS Invoice Numbers are generated server-side in strict sequence with no gaps. Cashiers cannot influence, skip, or duplicate them — this is a ZRA requirement.
Immutable receipt ledger
Fiscal receipt records in DishInk cannot be deleted — not by staff, not by managers, not by DishInk administrators. This is enforced at the database level.
Six-year retention
All transaction records, fiscal signatures, and ZRA responses are retained for a minimum of six years in line with ZRA’s record-keeping requirement.
Full audit trail
Every action on a transaction is logged — who processed it, when, what changed. Voids and refunds require manager PIN and capture the authorising manager’s identity.
Offline resilience
If ZRA is temporarily unreachable, sales are queued and submitted automatically when connectivity returns. No fiscal data is lost.
The audit trail
DishInk maintains a complete, tamper-evident record of every transaction event.What is logged on every sale
What is logged on voids
Voids require a manager PIN. The void record captures:- The manager who authorised it (name, role, staff ID)
- The reason provided (free text, mandatory)
- The timestamp
- The original transaction details
What is logged on refunds
Refunds create a new transaction record linked to the original. The record captures:- The original transaction ID and ZRA invoice number
- The refund amount
- The credit note reason code (ZRA-defined codes e.g. goods returned, price correction)
- The staff member who processed it
- A ZRA credit note submission with the original receipt number referenced
What is logged on split bills
Each portion of a split bill generates its own transaction record. The shared ZRA submission (made on the first portion) is referenced across all portion receipts so the entire table total can be reconstructed from the records.Record retention
ZRA requires fiscal records to be retained for a minimum of 6 years from the date of the transaction. DishInk enforces this at the database level.
How DishInk enforces retention
At the database level: A database rule blocks allDELETE operations on the smart_invoice_receipts table. This rule cannot be bypassed by any user, including DishInk administrators. The only way to remove a fiscal receipt record would be to drop the rule at the database infrastructure level — something DishInk monitors and would not permit.
What is retained:
- The full transaction record (amounts, items, payment method, staff, terminal)
- The ZRA submission payload (what was sent to ZRA)
- The ZRA response (what ZRA returned including receipt number and signature)
- The fiscal signature
- All void and refund records linked to the original transaction
Compliance by transaction type
Standard VAT sale
Refund / credit note
Split bill
Preparing for a ZRA inspection
ZRA inspectors may visit your restaurant and ask to verify receipts. Here is what to expect and how DishInk helps you respond.If an inspector scans a QR code
The inspector uses ZRA’s mobile verification app to scan the QR code on a receipt. The app contacts ZRA’s servers and confirms:- The receipt number exists in ZRA’s records
- The business TPIN matches
- The amounts were not altered after submission
- Find the transaction in DishInk’s history
- Check the Fiscalisation Queue for the job status
- If the job is
SUCCESS, the receipt is genuine — the inspector’s app may have a connectivity issue, ask them to retry - If the job is
FailedorDead, the receipt was not fiscalised — see Fiscalisation Queue for how to resolve
If an inspector asks for transaction records
DishInk can export transaction records in formats suitable for ZRA review. Contact DishInk support to request an export for a specific date range or transaction reference.If an inspector asks about a voided transaction
Every void is logged with:- The manager who authorised it
- The reason
- The timestamp
- The original transaction
VOID status. The original receipt data is preserved — the void does not delete it.
If an inspector questions a gap in invoice numbers
CIS Invoice Numbers are consecutive and server-generated. There should be no gaps. If an inspector identifies a gap:- The gap may have been caused by a failed transaction where the CIS number was reserved but the transaction did not complete
- Contact DishInk support with the CIS number range in question — full logs are retained
VAT categories and correct classification
Using the correct VAT category on each menu item is your responsibility as the taxpayer. DishInk enforces that a category is selected — it cannot validate whether you chose the correct one. Standard categories for restaurants:What you are responsible for
DishInk handles the technical fiscalisation. You as the business owner remain responsible for:1
Correct VAT category assignment
Ensure each menu item is mapped to the correct VAT category. DishInk cannot make this legal determination for you.
2
Keeping device credentials current
If ZRA suspends or updates your device registration, update it in DishInk promptly. Sales cannot fiscalise with invalid credentials.
3
Acknowledging supplier purchases
ZRA-registered supplier invoices must be acknowledged (approved or rejected) through the Purchases tab. Unacknowledged purchases may affect your input VAT claims.
4
Registering your branch with ZRA
After initializing a device, register your branch details with ZRA using the Register Branch button on the Devices tab. ZRA requires branch registration before accepting sales.
5
Acting on Dead jobs
Jobs that reach Dead status will not retry automatically. Review the error, resolve the underlying issue, and manually retry. A Dead job means a sale that has not been fiscalised with ZRA.
6
Providing valid receipts to customers
Receipts marked Pending ZRA Sync are not yet legally complete. For customers who require a valid VAT invoice, reprint once the fiscal job succeeds.
Common compliance mistakes
Data export for audits
DishInk can provide the following exports for ZRA audit purposes:All exports include the ZRA receipt number, fiscal signature, and timestamp for every transaction. These are sufficient for ZRA audit verification purposes.
Related pages
Overview
Smart Invoice overview and setup guide.
ZRA Integration
Device setup, TPIN configuration, branch registration.
Fiscalisation Queue
Monitoring submissions and resolving failures.
Receipt Format
Every field on a ZRA-compliant tax invoice explained.
Purchase Management
Acknowledging supplier invoices and input VAT.
FAQ
Common questions and troubleshooting.

