KACHIX

Tax compliance · Kachix product

Bulk e-invoice export from the Egyptian Tax Authority portal

Web DevelopmentBackend, APIs & Integrations
Bulk e-invoice export from the Egyptian Tax Authority portal — cover image

Challenge

Egyptian businesses file through the Tax Authority's e-invoicing portal, and the portal is built for looking at one invoice at a time. An accountant closing a month needs hundreds: the metadata in a spreadsheet to reconcile against the books, and the PDFs archived where an auditor can find them.

Doing that by hand is a day of clicking, and the parts most likely to be got wrong are the ones that matter — the tax totals buried in nested response payloads, and credit notes, which look like ordinary invoices but must subtract rather than add.

Solution

Our team built a Chrome extension that works inside the accountant's own authenticated session rather than around it. It reads the authorization token from the live portal session, so there are no separate credentials to store, no password to hand over, and nothing to keep in sync when the user's own login changes.

The work runs in a Manifest V3 background service worker. That choice is what makes bulk export survive reality: the job continues while the user does something else, instead of dying the moment a window loses focus. A progress indicator is injected into the portal page itself, so the running count appears where the user is already looking.

Extraction walks the paginated endpoints and flattens deeply nested issuer, receiver, and tax-total structures into flat spreadsheet columns. PDFs are collected with JSZip and filed into folders by buyer and seller context, so the archive arrives already organized rather than as several hundred loose files. Credit notes are recognized during extraction and their arithmetic inverted, which keeps the exported totals reconcilable against the books.

Handling live tax data raised the obvious question of what must never be committed: store backups containing personal data and service-account keys are explicitly excluded from the repository.

Results

A month of invoice retrieval collapses from a day of manual downloading into one bulk export producing a reconcilable Excel sheet and a filed PDF archive. Because the extension rides the user's existing portal session, it adds no new place for tax credentials to be stored.

Licensing is validated against a small Node backend deployed on managed hosting, with an admin dashboard behind a separate token.

Bulk e-invoice export from the Egyptian Tax Authority portal — image 1 of 2
Bulk e-invoice export from the Egyptian Tax Authority portal — image 2 of 2
The licensing admin dashboard running locally against demo records — no customer data. The extension's own UI renders inside the authenticated tax portal and cannot be captured outside it.

Want results like these? Tell us what you're trying to build.

Start a project