Skip to main content

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).
Do not begin setup in DishInk until ZRA has approved your Smart Invoice application. Attempting to initialize before approval will result in an error from ZRA’s servers.

Adding a device

  1. Go to ZRA Smart Invoice in the main navigation
  2. Click Add Device (top right)
  3. Fill in the form:
  1. Click Create & Initialize
DishInk immediately contacts ZRA to complete the device handshake. ZRA returns a security key, SDC ID, and MRC number that are stored securely — the cashier never sees these.
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

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
When to use sandbox: Before going live, when training new cashiers, when testing receipt printer setup.

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.
  1. On the Devices tab, find your active device
  2. Click Register Branch
  3. 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
DishInk automatically routes each terminal’s sales through its own device. The cashier at Terminal 1 never touches Terminal 2’s registration.

Retrying a failed initialization

If initialization fails (network error, wrong serial number, ZRA server issue):
  1. Check the error message shown on the device card
  2. Fix the underlying issue (e.g. correct the serial number)
  3. Click Retry Initialization
If the device status is Active, you cannot re-initialize without suspending it first. This is a safety guard — re-initializing an active device would wipe its credentials.

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
Sales attempted on a suspended terminal will queue locally. To resume fiscalisation, you must re-activate the device (contact DishInk support for re-activation from an error state).

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
Last modified on August 17, 2026