Questions worth a straight answer
Setup, offline operation, backups, activation, the accounting rules and bringing your existing figures in. Where the honest answer is "no" or "not yet", it says so — including on ZATCA, where there are parts only ZATCA can issue.
Getting started
What lands on your machine, what it needs from that machine, and how long the first evening takes.
What exactly do I get?
One desktop application, version 1.4.1 — a single Electron renderer file with the whole interface built in, no separate server and no relational database: everything lives in one JSON document. That single install is the whole product: 47 screens in the sidebar (Restaurant setup) across sales, purchases, money, payroll, inventory, fixed assets, point of sale, POS sessions, cost centres, approvals, accounting and setup.
There is no separate server to install, no database engine to license and no browser tab to keep open. You also get an activation code issued against your machine, and the installers for whichever platform you run.
What are the system requirements?
Windows 10 or 11 on x64, macOS on either Intel x64 or Apple silicon arm64, or Linux. On Windows you can take the NSIS installer or the portable executable; on macOS a .dmg or a .zip; on Linux an AppImage or a .deb.
Because everything runs locally the machine does the work, so an ordinary modern office PC or till machine is enough. There is no minimum bandwidth requirement for the simple reason that there is no bandwidth requirement.
How long does setup take?
Installing and reaching the first screen is a matter of minutes — it is a normal desktop installer, followed by the activation screen. The part that takes real time is the part that always does: entering your company details, choosing your costing method, adjusting the chart of accounts to how your accountant works and getting your menu and floor plan right.
Most single-site restaurants get through that in an afternoon, because the database is seeded with a working chart of accounts, menu and floor plan to edit rather than a blank screen. The Restaurant and Multi-branch tiers include a remote setup session for exactly this.
What is the first login?
Sign in with admin and admin123, then change it immediately in Settings ▸ My account. Please treat that as the first task of the installation rather than something to come back to.
Every person works under their own named account, checked by password when switching. Passwords are stored as entered, not hashed, and there are three role labels — Admin, Accountant, Viewer — since this is a single-user desktop app with no server to enforce a role independently of the interface.
Can you set it up for me?
Yes. A remote setup session is included with the Restaurant and Multi-branch tiers — we walk your company details, chart of accounts, menu, warehouses and floor plan with you and leave you with a system that is ready for service.
On-site installation is available as an add-on and is quoted per city: an engineer at your premises to install, configure and train the team. Data migration from another system is included with Multi-branch and quoted otherwise.
Is my data seeded with a demo?
The database is seeded with a chart of accounts, a menu, a floor plan and the admin user, so the application is usable the moment you sign in and you can see how a real ticket flows through to the ledger before committing your own data.
All of it is ordinary editable data, not a locked sample: rename accounts, delete menu items you do not sell, redraw the floor. If you would rather start from your own figures entirely, that is what the migration or import route is for.
Can I try it before I buy?
Yes — free for five days, in your browser, starting right now. Enter your name and an email address on the demo page and the whole application opens: no installer, no card, no locked modules, no watermark, no cap on what you enter. One demo per email address. Because it opens with a chart of accounts, a menu, a floor plan and an admin user already in place, the first sale can be rung in minutes rather than after an afternoon of setup.
Would you rather test it on your own hardware? Ask by email — through the contact page or straight to finance@northbeam.sa — and the installer comes back with a short-dated trial code, so you can judge it against your real printer and till drawer, offline. It is the same application either way.
Offline, data and backups
Where your database actually lives, what survives a disaster, and the one thing local-first genuinely costs you.
Does it need the internet?
No — none, at any point. There are no network calls anywhere in the application. There is no server component at all — the database is one JSON file on your disk, and even activation is done offline by exchanging codes.
The practical consequence is the one that matters at 9pm on a Thursday: a dead line to your building cannot stop you taking orders, printing tickets or closing the till. The application works with the internet unplugged, permanently.
Where is my data stored?
The live database sits in the operating system's user-data folder — %APPDATA%\Meezan ERP POS\ on Windows, ~/Library/Application Support/… on macOS and ~/.config/… on Linux.
It is also mirrored on a throttle to Documents/Meezan ERP Restaurant/ as plain, human-readable files you can copy. Writes are atomic and fsync'd with a rolling .bak, and if the primary file is ever found corrupt the application falls back to the backup automatically.
What happens if my PC dies?
You lose the machine, not the business. Restore the Documents/Meezan ERP Restaurant/ folder — from your own backup, a network drive or the old disk if it is readable — install the application on the replacement machine, and import.
Because the licence is node-locked, the new machine will show a new machine code on the activation screen; send it to us and we re-issue against the remaining term. The honest advice is the same as for any local-first system: copy that Documents folder somewhere else on a schedule you can actually keep.
Does uninstalling delete my data?
No. The mirror in Documents/Meezan ERP Restaurant/ is deliberately outside the application's own folders, so it survives an uninstall. Removing the program removes the program.
That is also why an upgrade or a reinstall is uneventful — the data and the activation are both waiting where the new install looks for them.
Can I move it to another computer?
Yes. Install on the new machine, copy the Documents/Meezan ERP Restaurant/ folder across, and use Import data backup from the File menu. Nothing is locked to a particular disk or user profile except the licence.
For the licence, read the new machine code on the activation screen and send it to us for a re-issue against your remaining term. See the licensing section below for how that works and why a code cannot simply be copied.
Can I open the backup file myself?
Yes. The mirrored files are plain and human-readable — you can open them in a text editor, keep them in your own backup rotation, or hand them to an accountant or a developer. There is no proprietary container and no key you have to ask us for.
The File menu also has an explicit Export data backup so you can take a snapshot on demand, before a menu overhaul or a year-end, without going hunting through folders.
Is there multi-device sync?
No, and we would rather say so plainly than dress it up. The database is local to each machine by design — that is the same decision that gives you an application with no network calls, no cloud dependency and no monthly fee, and you cannot have both.
A licence covers several devices so that a till, a back office and a manager's machine can each run the application, but each keeps its own database. If your operation genuinely needs one live ledger across several tills at once, tell us on the contact form before you buy so we can be straight with you about fit.
Licensing and activation
How a machine code becomes a working licence, and why that licence cannot be copied or back-dated.
How does activation work, end to end?
Install the application and it opens on the activation screen, which shows a machine code in the form MZR-DE07-EB9C-0099-17AA-7118. Send that code to us. We return an activation code, you paste it in, and the application unlocks for the licensed term — one year by default.
That is the entire process. Three steps, no account to create, no portal to log into and no agent running in the background afterwards.
Do I need the internet to activate?
No. Activation is offline by design — the machine code and the activation code are just text, and they can travel by email, by message or written down on paper if that is what your site allows.
The application does not verify the licence against any server, then or later, so there is no periodic check-in that can fail and no grace period to worry about.
What happens when the licence expires?
The expiry date is fixed inside the signed activation code — the default term is one year from activation. When that period lapses, the application returns to the activation screen, and a fresh activation code — issued on request against the same machine code, by the same three steps as the first time — restores it.
Your data is never touched: the database is yours, on your disk, in a readable format, whatever the licence state. The annual renewal, at 25% of the licence price, covers the next year of updates and support.
What happens when a trial or demo ends?
The application blocks and asks for an activation code — and nothing you entered is lost. In the browser demo, your books stay in that browser on that device, and entering a paid code brings the application back with the week's work intact. Bear in mind the flipside: clearing your browser's site data deletes those books, and we cannot recover them because we never had a copy.
An installer trial is an ordinary licence with a near date, so it behaves the same way: it runs until 23:59:59 on its date, then returns to the activation screen. The books stay in %APPDATA%\Meezan ERP POS\ and in the Documents/Meezan ERP Restaurant/ mirror, and a paid code issued against the same machine code turns it back on. Nothing renews or converts on its own — the trial ends, and buying is a separate decision you make afterwards.
Can someone copy my activation to another machine?
No. Activation codes are Ed25519 signatures and the signature covers machineCode|expiry together. Move the code to a different machine and the machine code no longer matches, so verification fails.
Editing the expiry has the same result, because it is inside the signed payload. Only the public key ships inside the application — the private key never leaves us — so a valid code for a machine we have not issued for cannot be manufactured.
Does a reinstall lose my activation?
No. The machine code is derived from a stable machine identifier, so it comes out the same after a reinstall, and the activation itself is mirrored to the backup folder alongside your data. Reinstall on the same machine and it starts up activated.
What if I replace my hard drive?
If the machine identifier the code derives from is unchanged, activation carries over once your data folder is restored. If the replacement changes it, the activation screen will show a new machine code — send it to us and we re-issue against the remaining term at no charge.
The safe sequence is: restore Documents/Meezan ERP Restaurant/ first, start the application, and see which screen you land on. If it is the till you are done; if it is the activation screen, send us the code on it.
Accounting, VAT and ZATCA
The rules the ledger enforces, how VAT comes out of a POS ticket, and precisely where our ZATCA module stops.
Is it real double-entry?
Yes, throughout — every posting has both sides, and the trial balance and balance sheet are asserted to balance at the end of the automated test suites before any release ships. Revenue and COGS post as two entries rather than one, and COGS is booked once, by the delivery, in the order flow.
Stock transfers deliberately post no journal entry, because moving your own goods between your own warehouses is not an accounting event. Fixed assets depreciate straight-line, and the same period cannot be depreciated twice.
FIFO or weighted average?
Both are supported and you choose in Settings, as part of your company costing method. FIFO suits kitchens working through dated stock in the order it arrived; weighted average suits commodity ingredients bought repeatedly at drifting prices.
Whichever you pick, stock consumption is transactional — a consumption that fails leaves nothing half-mutated behind it, so you never end up with stock moved and cost unbooked.
Can I edit a posted journal entry?
No. A posted entry cannot be edited in place; to correct it you post a reversal, and the original stays visible.
Treat that as a feature rather than an obstacle. An audit trail that can be quietly rewritten is not an audit trail, and when an auditor, a partner or your future self asks what happened on a given night, the answer is the whole sequence — what was posted, what reversed it and what replaced it.
What happens to an unbalanced entry?
It is rejected. So is a posting to an account that does not exist in your chart of accounts. Version 1 accepted both silently, which is precisely how a ledger drifts away from reality without anyone noticing.
The wider rule is that every posting is checked before it is written, so a bad number is refused at the door rather than becoming a NaN somewhere downstream in your accounts.
Is POS VAT inclusive?
Yes. POS pricing is VAT-inclusive: the price on the menu is the price the guest pays, and VAT is extracted from that ticket rather than added on top. A 46.00 gross ticket at 15% books a net of 40.00.
This is how counter and dine-in pricing works in practice in the Kingdom, and it means your posted revenue and your VAT line are consistent with the number on the customer's receipt without anyone doing arithmetic by hand.
How does the end-of-shift drawer count work?
Every POS sale requires an open session, opened with a counted float on a specific register. At close the cashier counts each tender against the expected figure — float plus cash sales minus payouts — and the difference shows as over or short before anything is submitted.
Submitting posts nothing. The variance reaches the ledger only when a supervisor approves the close, as a single balanced Cash Over/Short journal entry — and a cashier cannot approve the drawer they counted. Every open, payout, close and decision lands on an append-only audit trail.
Can I require approval before a journal entry or expense posts?
Yes. You design the chain yourself: any number of levels, each a named action assigned to users and/or roles, with amount bands per document type so a small expense takes a short path and a large one takes the long one. Levels run in sequence, with optional parallel stages where everyone must sign but in any order.
A gated document is held as a draft — the ledger holds nothing until the final level approves, at which point the draft posts and the posted id is recorded on the approval. Rejecting or returning requires a written reason, only the preparer can resubmit, and the whole trail is append-only.
Can I see profit per branch or department?
Yes — tag postings with cost centres, which nest in a hierarchy (branch above kitchen and counter) and ride the journal line without ever changing what an entry posts. A sale order’s cost centre carries through to its invoice, and manual journals can be tagged line by line.
Three reports come with them: movement per centre, P&L by centre with branches side by side, and budget vs actual with a signed variance. Every report keeps an explicit Unallocated column, so postings nobody tagged are visible rather than quietly missing.
A supplier of mine is also my customer — can I get one statement?
Yes. Link the customer record to the vendor record that is the same business — explicitly, in Customers & Vendors; names and VAT numbers are never matched by guesswork — and the statement screen gains a Receivable / Payable / Both selector.
“Both” interleaves invoices, receipts, bills and payments in date order on one running balance, and the closing figure is a net memo: what they owe you minus what you owe them. The AR and AP control accounts stay untouched — nothing is offset in the ledger.
What does the ZATCA module do, and what does it deliberately not do?
It prepares Phase-2 e-invoice artifacts: UBL 2.1 XML generation, the ICV invoice counter value, the PIH hash chain with chain integrity verified on every read, and the Base64 TLV QR payload for tags 1 to 5 — seller name, VAT number, timestamp, invoice total and VAT total.
What it does not do is fabricate tags 6 to 9, which carry the XML digital signature and the signing certificate. Those depend on a CSID issued by ZATCA during device onboarding — a real credential the application stores but will never invent. Until yours is in place, documents are flagged signed: false rather than emitting a QR code that looks compliant and is not.
Am I compliant if I install this?
No software can make that claim on your behalf, and we will not. Meezan ERP POS is built for ZATCA Phase 2 and prepares the artifacts, but onboarding your device with ZATCA and obtaining your CSID is yours to complete — it involves your credentials and your organisation, not ours.
What we can promise is that the application refuses to fake the parts only ZATCA can issue. Anyone telling you their product makes you compliant the moment you install it is describing something that is not in their gift.
Bringing in your existing figures
A CSV/paste importer adds your opening balances or a batch of invoices on top of what is already in the ledger — it previews before it posts, and it never replaces what is there.
How do I bring in my opening balances?
Paste general-ledger lines directly into the importer, or upload a CSV. It parses the file into vouchers and shows you a preview — balanced and unbalanced counts, accounts that do not yet exist — before anything posts.
A separate importer handles a batch of invoices the same way. If you would rather not do it yourself, migration help from another system is included on the Multi-branch tier and quoted as an add-on on the others.
Does it replace what is already in my ledger?
No. Every import is additional postings on top of whatever is already there. Preview the parsed vouchers before you confirm, so you know exactly what is about to be added.
What if a line does not balance?
You can route unbalanced lines to a suspense account rather than have them block the whole batch — post the rest now, tidy the suspense entries up afterwards once you have tracked down the difference.
What if a journal line names an account that is not in my chart of accounts?
Missing accounts can be created on the fly, optionally, rather than the import stopping until your chart of accounts is complete first.
It is the right trade: silently discarding a line would leave your ledger out of balance with nothing to investigate, whereas an account created and left for you to reclassify is a five-minute tidy-up with the underlying figure intact.
Still stuck?
If your question is about how to do something in the application, the documentation goes step by step through installation, the first evening of service, the accounting rules and the ZATCA workflow. If it is about your particular restaurant, your figures or your licence, write to us — support hours are Sunday to Thursday, 9:00–18:00 AST, and the response target is one business day.
Try it before you ask anyone
Run the whole application free for five days in your browser — the ledger, the floor plan and the ZATCA module, with nothing locked. If you would rather see it offline on your own hardware, request the installer instead, and ask for a walkthrough if you want one.