Flume

Egypt · built here, not localised later

The law is in
the engine.

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.

Bracket walk · annualillustrative rates
0 – 40,000 · 0%0.00
40k – 55,000 · 10%1,500.00
55k – 70,000 · 15%2,250.00
70k – 200,000 · 20%16,120.00
200k – 400,000 · 22.5%0.00
Annual income tax19,870.00 EGP

The statutory stack

Move the salary and watch every rule bite in turn.

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

4,00022,00040,000

Years of service 6

11325
0 – 40,000 · 0%0.00
40k – 55,000 · 10%1,500.00
55k – 70,000 · 15%2,250.00
70k – 200,000 · 20%6,777.60
annual gross139,200.00
insurable wage11,600.00
insurance · month1,276.00
annual taxable103,888.00
Annual income tax10,527.60 EGPEnd of service after 6 years · 3.5 months · 40,600.00 EGP

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

Egypt moved payroll tax onto a government system. Flume speaks its language.

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.

Monthly calculation form · ETAillustrative values
Run approvedPayslips finalised
Submission builtFrom the payslips
FiledAttempt recorded
FORM_TYPEU001
PERIOD0731
PAYROLL_TYPE1
EMPLOYEES34 rows
EI010Employee codeEMP-0104
EI025National ID2•••••••••••••
DTE160Basic salary52,194.00
DTE170Overtime & incentives1,480.00
DTE275Employer insurance3,131.25

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

What being built for Egypt actually means.

01

Progressive tax brackets

A configurable bracket table with elimination rules, so a revised threshold is an edit rather than a release.

02

Social insurance schemes

Insurable wage buckets with the employer and employee split held separately and applied per scheme.

03

End-of-service gratuity

Configurable accrual applied at offboarding and reflected in the final settlement the leaver is shown.

04

Overtime models

Multipliers and rules for weekday, rest-day and holiday hours, matched to how the hours were actually worked.

05

WPS-style disbursement

A bank-agnostic export carrying every field a wage-protection submission needs, ready to match your bank’s layout.

06

eTax payroll filing

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

Statutory record completeness

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

Filing audit trail

Every submission attempt is recorded against its payroll run with the exact payload sent, including the runs where nothing was sent and why.

09

Arabic and RTL

A full right-to-left interface and Arabic payslips across both the web console and the mobile app.

10

Cairo business day

Attendance, payroll periods and every report resolve on the Africa/Cairo calendar rather than UTC.

11

Inspection readiness

Every adjusted figure keeps its author, timestamp, reason and the original record it replaced.

How it actually works

The mechanism, not the marketing.

Configuration

Rates change more often than software ships.

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.

Local leave

The leave types match the country, not a template.

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.

The 01:00 punch

Cairo is ahead of UTC, and that quietly corrupts reports.

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 filing

A mandate you cannot meet by exporting a spreadsheet.

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.

Incomplete records

The filing tells you who is missing what, before the Authority does.

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.

The inspector

The audit trail is designed around the question that gets asked.

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

Bring us your messiest month.

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.