ETA & VAT Automation

rashid-mg

A VAT operations platform for Egyptian accounting firms: from the tax authority's e-invoices to an accountant-approved SAP draft, with every decision recorded.

rashid-mg

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

Architecture diagram of rashid-mg in four stages: acquire e-invoices, process and classify, govern with a scheduler and database, and deliver after an accountant decision

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.

Let's talk

Have a question or a request? Send a message and you will get a reply as soon as possible.

Contact me