Before you start
You need three things from ZRA before you can set up Smart Invoice in DishInk:1
TPIN
Your 10-digit Taxpayer Identification Number. This is your business’s unique identifier with ZRA. You receive it when you register for tax with ZRA.
2
Device serial number
After applying for Smart Invoice on the ZRA Taxpayer Portal, ZRA approves your application and issues a device serial number. This is a unique identifier for your physical POS terminal.
3
Branch code (bhfId)
A 3-digit branch identifier. For a single-location business this is
000. For multi-branch businesses, ZRA assigns a different code per branch (e.g. 001, 002).Adding a device
- Go to ZRA Smart Invoice in the main navigation
- Click Add Device (top right)
- Fill in the form:
- Click Create & Initialize
The initialization is a one-time process. Once a device shows Active status, it signs every subsequent sale automatically using the stored credentials.
Device statuses
Sandbox vs Production
- Sandbox
- Production
Use sandbox for testing and staff training.
- Submits to ZRA’s UAT (User Acceptance Testing) servers
- Receipts are generated but have no legal weight
- Safe to use for practice sales, receipt printing tests, and training new staff
- Clearly labelled on every receipt: receipts show local/test status
Registering your branch with ZRA
After a device is initialized, you must register your branch details with ZRA. This is a separate step from device initialization.- On the Devices tab, find your active device
- Click Register Branch
- DishInk sends your branch name, address, and contact details to ZRA
Branch registration is required before ZRA will accept sales submissions. A device can be initialized (Active status) but sales will be rejected until the branch is also registered.
Multi-terminal setup
For restaurants with multiple POS terminals:- Each physical terminal needs its own device registration
- Each device has the same TPIN (it is your business TPIN, not per-terminal)
- Each device has the same branch code (unless you have multiple branches)
- Each device has a different serial number from ZRA
Retrying a failed initialization
If initialization fails (network error, wrong serial number, ZRA server issue):- Check the error message shown on the device card
- Fix the underlying issue (e.g. correct the serial number)
- Click Retry Initialization
Suspending a device
Suspending stops a device from fiscalising new sales. Use this when:- A terminal is taken out of service
- You need to re-initialize with corrected credentials
- A device is lost or stolen
Security
- The security key returned by ZRA during initialization is never sent to the browser
- Only DishInk’s server-side functions can read the key
- The key is used to sign every ZRA submission automatically
- You cannot see or export the key — this is by design and required by ZRA

