01
Progressive tax brackets
A configurable bracket table with elimination rules, so a revised threshold is an edit rather than a release.
Egypt · built here, not localised later
Global platforms treat Egypt as a translation problem. Flume treats it as the specification — progressive brackets, insurable wage buckets, gratuity and Cairo business days are configuration, not workarounds.
The statutory stack
Tax bands, the insurable wage ceiling and end-of-service gratuity do not scale together — each has its own shape, and the ceiling in particular changes behaviour above a threshold. Drag either input and the whole statutory position recomputes.
Monthly gross 11,600.00 EGP
Years of service 6
Illustrative bands, ceiling and gratuity shape. All three are configuration in the product, versioned so historical runs keep the figures they were calculated with.
eTax · the payroll-tax mandate
eTax, the Tax Authority’s technology arm, launched a unified payroll-tax system that every employer is required to use, regardless of size. Approving a run in Flume assembles the monthly calculation form from the payslips it just produced — ETA’s own field codes, its own envelope — and records every attempt against the run. Where an employee is missing something the Authority marks mandatory, Flume names the employee and the field instead of filing a guess.
Field codes are ETA's own, from the taxpayer SDK — not an internal shape mapped on later.
Built to ETA’s published taxpayer SDK. Illustrative values; the field codes are the Authority’s. Connection details are issued to each employer when they register for ETA integration testing, so they are configuration rather than something shipped in the product.
What ships
01
A configurable bracket table with elimination rules, so a revised threshold is an edit rather than a release.
02
Insurable wage buckets with the employer and employee split held separately and applied per scheme.
03
Configurable accrual applied at offboarding and reflected in the final settlement the leaver is shown.
04
Multipliers and rules for weekday, rest-day and holiday hours, matched to how the hours were actually worked.
05
A bank-agnostic export carrying every field a wage-protection submission needs, ready to match your bank’s layout.
06
The monthly calculation form assembled from the run you just approved, in the field codes ETA’s taxpayer SDK specifies — built to the published spec, ready for the Authority’s integration test.
07
Passport, work permit, comprehensive health insurance and dependants sit on the employee record, and anyone missing one is named before a filing goes out.
08
Every submission attempt is recorded against its payroll run with the exact payload sent, including the runs where nothing was sent and why.
09
A full right-to-left interface and Arabic payslips across both the web console and the mobile app.
10
Attendance, payroll periods and every report resolve on the Africa/Cairo calendar rather than UTC.
11
Every adjusted figure keeps its author, timestamp, reason and the original record it replaced.
How it actually works
Brackets, insurance schemes, overtime multipliers and gratuity rules are stored as data with effective settings rather than compiled into the calculation. When a threshold moves, the table is edited — historical runs keep the figures they were actually calculated with.
Annual, sick, emergency, maternity and paternity, unpaid, study, bereavement — and Hajj, which almost no imported HR system models and which an Egyptian workforce will ask for. Each carries its own policy rules and balance behaviour.
Bucketing timestamps by their UTC date files a 01:00 Cairo punch under the previous day. Flume resolves every attendance day, payroll period and rollup on the company business date, and formats human-facing times as Cairo wall clock so a report never disagrees with the terminal that printed the punch.
The Authority did not publish a form to fill in — it published a taxpayer SDK, with a fixed envelope and a numbered field for every earning, deduction and exemption an employee can have. A system that stores its own shape and maps to that at the end has to guess which local concept is which code. Flume holds the codes themselves: basic pay files under the code the civil-service question decides, employer-borne insurance under its own, and a foreign employee carries a passport and work permit where an Egyptian carries a national ID. The submission is assembled from the payslips at the moment the run is approved and locked, because that is the first moment the figures are final.
Mandatory is conditional: a passport matters for a foreign hire and not an Egyptian one, a work-permit number only once the permit is valid, dependant counts only under the comprehensive health-insurance scheme. Flume evaluates those conditions per employee per submission and names anyone short of a required field — rather than filing a plausible zero and finding out at the deadline.
A labour inspection does not ask for a report — it asks why one number on one payslip is what it is. Every adjustment stores its author, time and reason, and links back through the reconciled day to the punch and the terminal, so the answer is retrieved rather than reconstructed.
Book a demo
The fastest way to judge Flume is to run it against a period you already argued about. Send a month of punches and the payroll you produced from it, and we will show you the same month reconciled — including what the anomaly detectors flag.