info.mfahhiq@gmail.com
العربية
MMFAHHIQ ERP

The whole MFAHHIQ ERP,
on one machine.

MFAHHIQ ERP is a desktop application that runs your till, your kitchen, your stock and your books — with real double-entry accounting underneath and no internet connection required, ever. Your data lives in a file on your own computer. Nobody else can reach it, and nobody can switch it off.

Works offline, permanentlyWindows · macOS · LinuxBuilt for ZATCA Phase 2One-time licence, no monthly fee
MFAHHIQ ERP — Dashboard
Sales today﷼ 18,420
Covers212
Avg ticket﷼ 86.9
Gross profit62.4%
Sales OrderDeliverySales InvoiceZATCA e-InvoiceLedgerTrial BalanceP&L / Balance Sheet
0
Screens in the sidebar
0
Self-contained app file — no server
0
Automated tests per release
0
Network calls, anywhere
The problem

Most ERP software stops working the moment the line does

A till that needs a server, a subscription that never ends, and a database you can only see through somebody else's website. When the connection drops at eight on a Thursday, none of that is your problem to fix — and that is exactly the problem.

The usual arrangement

  • The till stops when the internet does
  • A monthly fee that rises, forever, whether you trade or not
  • A cut of every transaction you put through it
  • Your sales history sits on a server you have never seen
  • Cancel, and you lose access to your own five years of books
  • Accounting bolted on afterwards, if it exists at all

MFAHHIQ ERP

  • Runs entirely on your machine. No network calls anywhere — the app works with the cable pulled out
  • One-time licence per device. No subscription, no per-transaction fee
  • Your database is a plain file you can copy, read and move
  • It survives an uninstall — a mirror in your Documents folder keeps working
  • Real double-entry accounting at the core not a report generated later
  • Nobody can switch your business off including us
One connected system

Every module shares the same books

A sale is not an island. Hover, tap, or tab to any module below to see what actually moves elsewhere in the system the instant it happens.

MFAHHIQ
ERP
One system

Hover, tap, or tab to any module to see what actually happens elsewhere in the system when it moves.

One transaction, followed through

From a table to a balanced ledger entry

Scroll to follow a single restaurant order — the table, the kitchen, the payment, the stock, and the journal entry it posts — start to finish.

1

A table becomes active

The host seats table 6. The floor plan marks it occupied the moment the first item is entered — nothing to configure.

Floor plan — Dining room
T1
T2
T3
T4
T5
T6
T7
T8
T9
2

The order is entered

Two mandi, one salad, three juices. Each line carries its price and its VAT treatment as it's typed, not calculated afterward.

Order — Table 6
Mandi (chicken)×2
Green salad×1
Fresh juice×3
3

A kitchen ticket prints

The same order becomes a KOT at the kitchen printer, grouped by station, the instant it's sent — no re-keying between the till and the kitchen.

Kitchen printer

KOT · TABLE 6

2× Mandi (chicken)

1× Green salad

Grill station

4

Payment is completed

The guest pays by card. The bill closes, VAT is extracted from the total (not added on top), and the table frees up for the next seating.

Payment — Table 6
Paid
﷼ 187.50
incl. VAT ﷼ 24.46 · Card
5

Ingredients leave inventory

Each dish's bill of materials consumes rice, spice mix, and chicken from stock at the recipe's cost — the same movement a manual stock count would show.

Inventory — after ticket
Basmati rice74 kg
Whole chicken42 kg
Spice mix27 kg
6

A balanced journal entry posts

Cash is debited, sales revenue and VAT payable are credited, and cost of goods sold is recognised against inventory — automatically, and rejected outright if it doesn't balance.

Journal — auto-posted
AccountDebitCredit
Cash187.50
Sales revenue163.04
VAT payable24.46
Cost of goods sold58.10
Inventory58.10
Balanced245.60245.60
7

The dashboard updates

Today's sales, gross profit and cash position reflect this ticket before the guest has left the table.

Dashboard — today
Sales today﷼ 18,420
Gross profit62.4%
Covers212
Cash + card﷼ 18,420
One application

Everything the business needs, in one window

Fifty-five screens grouped the way a restaurant actually thinks — the floor, the kitchen, the stockroom, the bank, the payroll and the books. The sidebar adapts to your business, so a café never sees a contracting module.

See all 55 screens, module by module

MFAHHIQ builds more than this ERP — see our other services

Dine-in

From the table to the trial balance

Open a table, take the order, send it to the kitchen. The table carries its running bill until it is settled through the till — and the moment it is, revenue, VAT, cost of sales and the stock behind every dish move together. One action, correctly posted, everywhere it belongs.

  • A live floor map — free tables, running bills and tables under settlement at a glance
  • Kitchen tickets that go out once; a reprint never re-sends the order
  • VAT extracted from the price the customer actually pays, not stacked on top of it
  • Revenue and cost of sales post as two entries the way an accountant expects to find them
  • Ingredients come off stock through the recipe at their real cost

Look at the POS in detail

Floor — main hall

12 tables
FreeRunning billUnder settlement
Offline by design

Not "works offline". Never online.

There is no cloud account, no sync service and no telemetry, because there is no network code to switch on. There is no server component at all — the database is a single JSON file on your disk, and the renderer talks to it over an internal IPC bridge that never touches a network interface.

Your books stay in your building

Customer records, staff salaries, margins, supplier prices — none of it is transmitted, because nothing transmits. The application makes no network calls at all.

It survives an uninstall

The database is mirrored to a plain, readable folder in your Documents that no uninstaller touches. Copy that folder to another machine, launch the app, and it restores.

A shell that gives nothing away

Context isolation on, Node integration off, sandbox on, a content-security policy on every response, all permission requests denied, and no filesystem surface in the interface at all.

Read the security and data page

Under the till

An accounting engine that refuses to be wrong quietly

Point-of-sale software usually treats the ledger as an export. Here it is the foundation, and it is deliberately strict: the things that used to slip through silently now stop and tell you.

  • An unbalanced journal entry is rejected, not accepted and quietly filed
  • A posting to an unknown account is rejected instead of creating an orphan that appears in no report
  • A posted entry cannot be edited in place. A correction posts a reversal, and the original stays visible for anyone who audits you
  • Stock consumption is transactional — it either completes or it never happened
  • FIFO or weighted average, chosen once in Settings and applied consistently
  • Every release runs an automated test suite that checks the FIFO/weighted-average costing math, the cost-centre and combined-statement arithmetic, and the approval and POS-session engines against worked examples — not just that the screens render

A sample of what each release must prove

 FIFO cost follows the expiry-ordered batches, not receipt date combined statement close = 7,000 net, debit-positive both sides FEFO consumption drains the earliest-expiring batch first POS session cash-over/short posts as one balanced entry gated documents post nothing until the final approval reprint does not re-send to the kitchen the same period cannot be depreciated twice

49 automated tests run before every build — persistence, the Electron-adaptation regression suite, and licensing — with the accounting, cost-centre, approval, POS-session and batch-tracking math checked against worked examples inside that suite.

Saudi e-invoicing

Built for ZATCA Phase 2 — and honest about the last mile

The e-invoicing module prepares the Phase-2 artifacts for every document you issue, and it will not pretend to have done the part that only ZATCA can authorise.

What it prepares, per invoice

  • UBL 2.1 XML generated from the posted document
  • The ICV — the incrementing invoice counter value
  • The PIH hash chain , with chain integrity re-verified on every read, so a deleted or altered invoice shows up as a break
  • The Base64 TLV QR payload, tags 1–5 — seller name, VAT number, timestamp, invoice total and VAT total

What it deliberately will not fake

Tags 6–9 carry the XML digital signature and the signing certificate. Those require a CSID issued to your business by ZATCA during device onboarding — a real credential the app stores but never fabricates.

Until that credential is loaded, documents are flagged signed: false, rather than emitting a QR code that looks compliant and is not. Onboarding is between your business and ZATCA; the app does not perform it for you.

The full ZATCA page →

Getting started

Installed and trading the same afternoon

No account to create, no card to register, no connection to configure. The licence is node-locked to your machine and activated entirely offline.

1

Install it

An NSIS installer (plus a portable .exe) for Windows, a disk image for macOS, an AppImage or .deb for Linux.

2

Read your machine code

The activation screen shows a code such as MZR-DE07-EB9C-0099-17AA-7118. Send it to us.

3

Paste the activation code

It is Ed25519-signed against your machine code and expiry, so it works on your machine and nowhere else.

4

Sign in and set up the company

First login is admin / admin123 — change it in Settings. Pick your business nature and the sidebar reshapes.

Getting started

Bring your opening figures in, don't re-type them

A fresh install already carries a working chart of accounts, a menu and a floor plan — and where you have opening balances or a batch of invoices waiting, a CSV importer adds them for you rather than making you key each line by hand.

Paste or upload, review, then post

Paste general-ledger lines or upload a CSV and the importer parses it into vouchers before anything is posted, so you can check the numbers first. Missing accounts can be created on the fly, and lines that do not balance can be routed to a suspense account instead of blocking the whole batch.

Adds to your data, never replaces it

  • Nothing existing is touched. The import only ever adds vouchers on top of what is already in the ledger
  • A separate importer handles bulk invoices , for bringing in a batch of sales or purchase documents the same way

Everything that changed recently →

Common questions

The things people ask first

Does it really work with no internet at all?

Yes — and not as a fallback mode. The application makes no network calls anywhere. There is no server component to reach in the first place: the database is a JSON file on your disk, and the interface talks to it over an internal bridge that never touches a network interface. You can unplug the cable permanently and nothing changes.

Where is my data, and what happens if the PC dies?

The live database sits in your operating system's user-data folder, written atomically with a rolling backup that the app falls back to if the primary is ever corrupt. On top of that, it is mirrored on a throttle to Documents/MFAHHIQ ERP Restaurant/ — a normal folder no uninstaller touches. If the machine dies, copy that Documents folder to a new one, install the app and it restores. You can also export a backup to any location from the File menu.

Is this a subscription?

No. It is a one-time licence, node-locked to a machine, with a year of updates and support included. The activation code is valid for a year; when it lapses, the app returns to the activation screen and a fresh code — issued on request against the same machine code — restores it. Your data is never deleted or withheld by an expiry, and the annual renewal for updates and support is 25% of the licence.

Does installing this make me ZATCA compliant?

It prepares the Phase-2 artifacts for you: UBL 2.1 XML, the ICV counter, the PIH hash chain and the TLV QR payload for tags 1–5. Tags 6–9 need a CSID issued to your business by ZATCA during device onboarding, which is a process between you and the authority. We will not describe the product as certified or compliant, because that is not ours to claim.

Can I bring my existing data over?

Yes, for opening balances and bulk invoices. A CSV/paste importer parses lines into vouchers and shows you a preview — balanced and unbalanced counts, accounts that do not yet exist — before anything posts, and it adds to your data rather than replacing it.

Which machines does it run on?

Windows 10 and 11 (x64) with an installer and a portable build, macOS on both Intel and Apple silicon, and Linux as an AppImage or .deb package. The same database file works across all of them.

Read the full FAQ

Put it on one machine and see

Tell us your platform and how many tills you run. We will send the installer and a licence, and walk you through your first shift if you want the company.