rashid-mg turns the monthly VAT cycle of an accounting firm from repeated manual work into a governed, reviewable pipeline: download the e-invoices from the tax authority (ETA), process and classify them, let the accountant review and approve, then prepare a SAP draft.
The problem
A firm serving dozens of companies repeats the same manual steps every month, and one wrong figure ends up in a government filing.
The approach
- Invoices are pulled straight from the e-invoicing system, and each invoice’s VAT is split from its own detail lines (14%, 10%, exempt or mixed). Nothing is estimated from header totals: an invoice with no detail lines stops the run with a clear message.
- Anomalies surface as warnings before approval. Nothing is uploaded until an accountant decides.
- A verified empty period is a recorded outcome, not a failure.
- Scheduled and manual runs, with a full audit trail of every decision.
Engineering decisions
Correctness over convenience
VAT is split only from each invoice’s own detail lines: every line is classified by its own tax and the result is reconciled with the invoice header within a per-line tolerance. An earlier design estimated the split from header totals when detail lines were missing. Real data showed that the estimate could be wrong, so it was removed, not tuned. Unsupported or ambiguous rates are refused and handed to a person, and a suite of 285 automated tests pins the behavior.
Failure as a design problem
A period with no documents is a verified outcome, carried end to end from the source manifest to the dashboard. It is neither an error nor a silent skip. This was found by running the real pipeline, not by unit tests.
Governed operations
Every operator decision (approve, exclude a cancelled invoice, change a client’s VAT-rate mode) is a recorded action, and nothing is sent to SAP before an accountant decides. Per-client policy is edited from the dashboard and applies from the next load.
Delivery engineering
A Docker runtime on PostgreSQL, an hourly n8n dispatcher for scheduled clients, bounded-concurrency downloads, and Windows install and upgrade scripts that work without bash. The SAP draft upload is verified by the form’s own proof, not by retries or timeouts.
An interface for operators
An Arabic, right-to-left operations console in a single file. Responsive audits at 375 px and 768 px found and fixed real horizontal-overflow bugs, and a bidirectional-text bug was fixed with proper text isolation rather than CSS direction alone.
How it fits together

The pipeline in four stages: acquire, process, govern, deliver. Nothing leaves the system before the accountant decision.
The screens





- Operations summary — Batches waiting review, warnings and SAP-ready counts.
- Client registry — Status per client, the VAT-rate mode of each client, and verified empty periods.
- Batches and approval — The approval centre with filters.
- Warning detail — A VAT mismatch flagged before the accountant's decision.
- History — The full operations log.
In numbers
- 8 clients
- 15 batches
- 6 approved and exported
- 9 under review
- 0 real uploads
- 285 automated tests
The first five figures describe the demo dataset, which is entirely fictional.
All data in the screens above is fictional demo data. rashid-mg is delivered as a licensed installation for each firm.
Interested in rashid-mg for your firm?
See what it does, how it is installed and licensed per office, and request a demo.