Flume

Payroll & money · the number you can defend

Every figure shows its work.

Payroll software normally hands you a total and asks you to trust it. Below is a real payslip from a September run — select any line and Flume shows you the component that produced it, the formula it used, the inputs it read and the record those inputs came from. That trace is the product.

Payslip · September 2026select a line
Net pay8,949.55 EGP

Earning · variable

Overtime

Hours come from approved overtime sessions linked to the attendance records they extend. Payroll reads the reconciled hours directly — there is no re-keyed summary in between.

ot_hours × hourly_rate × multiplier
ot_hours12 h
hourly_rate44.00 EGP
multiplier1.5× weekday

Attendance · 3 approved sessions · 04, 11 & 19 Sep

Before anyone is paid

Change something. Watch the whole run move.

A preview is only useful if you can push on it. Drag either input and the payslip recalculates the way the engine does — gross, then the insurable wage against its ceiling, then tax walked band by band, then recovery. Nothing here is a lookup table: it is the same calculation the trace above is showing.

01632
01122
Gross11,604.00
Insurance1,276.44
Income tax878.01
Loan500.00
Net pay8,949.55same as the committed run

Illustrative rates. In the product, bands, ceilings and multipliers are configuration.

Nobody pays 214 people by accident

A run cannot finalise until the people accountable for it have signed.

Approval steps are configured per policy, and the run carries its own progress. A run sitting at finance approval is visible as exactly that — not as a spreadsheet in someone’s inbox with an unanswered question about a variance.

Stage 01DraftPeriod opened · 214 employees in scope
Stage 02PreviewCalculated, nothing committed · variances listed
Stage 03HR approvalSigned 02 Oct · Yasmin F.
Stage 04Finance approvalAwaiting · budget variance +1.8%
Stage 05FinalisedLocks the run · payslips issued
Stage 06DisbursedWPS-style file · bank confirmation

The back-dated raise

A change effective in June, agreed in September.

Retroactive changes are the single most common source of a payroll dispute, because they are usually worked out by hand. Flume recalculates each affected period against what was actually paid, shows the delta per period, and posts the total as arrears on the current run — with the working still attached.

June 2026+ 612.00
July 2026+ 748.00
August 2026+ 680.00
Arrears due this run2,040.00 EGP

What ships

Fifteen capabilities between the timesheet and the bank file.

01

Formula-driven components

Earnings, deductions and employer costs defined as components with your own formulas — not a fixed template.

02

Eligibility rules

Target a component by grade, department, contract type or shift, evaluated per employee on every run.

03

Compensation history

Every salary change kept as a record, so you can answer what someone earned in any past period.

04

Preview & simulate

Run a period without committing it, and inspect the payslips it would produce line by line.

05

What-if modelling

Model a raise, a new allowance or a policy change against real employees before anyone is paid.

06

Approval workflow

Multi-step sign-off with a visible progress trail before a run can be finalised.

07

Payslip PDFs

Generated and cached per employee, in Arabic or English, reproducible for any historical period.

08

Corrections

Post-run adjustments recorded as append-only corrections against the payslip they amend.

09

Arrears & retro pay

Back-dated changes recalculated across affected periods, with a preview of what each employee is owed.

10

Departmental budgets

Set a monthly budget per department and watch actual spend against it, with variance on the dashboard.

11

Benefit plans

Plans with tiers and employee enrollment, feeding the calculation as components.

12

Earned wage access

Let staff draw against pay already earned, tracked and recovered on the next run.

13

Employee loans

Scheduled instalment recovery that counts down and stops itself when settled.

14

Bank disbursement

A WPS-style export carrying every field a disbursement file needs, bank-agnostic by design.

15

Multi-currency runs

A run carries its currency, so entities paying in more than one are not forced into a single ledger.

How it actually works

The mechanism, not the marketing.

Reads facts

Payroll reads reconciled attendance, not a summary someone typed.

Hours, overtime, absence and leave arrive from the same records the attendance module reconciled. There is no export-and-import step between the two, which is where a re-keyed figure normally goes wrong and where a dispute normally becomes unanswerable.

3 approved overtime sessions → 12 h on the attendance record12 h × 44.00 hourly × 1.5 weekday multiplier= 792.00 EGP on the payslip, traceable to three dated sessions
The ceiling

Statutory deductions are not percentages of gross.

Social insurance is taken on the insurable wage, which stops rising at a ceiling. Treating it as a flat percentage of gross overcharges every employee above that line — quietly, every month, in a figure nobody re-checks.

gross 11,604.00 · ceiling 12,600.00 → insurable = 11,604.0011,604.00 × 11%= 1,276.44 EGP · above the ceiling this figure would stop growing
Band by band

Tax is walked, not looked up.

Taxable pay is sliced across the bands and each slice charged at its own rate, after insurance and the personal exemption. A single effective-rate multiplier is easier to build and wrong at every boundary.

11,604.00 1,276.44 insurance 1,666.67 exemption = 8,660.89 taxable3,333.33 @ 0% · 1,250.00 @ 10% · 1,250.00 @ 15% · 2,827.56 @ 20%= 878.01 EGP · four slices, one per band crossed
Append-only

A corrected payslip keeps the original.

Corrections are posted against a payslip rather than editing it in place, so the sequence of what was paid, what was found and what was put right stays intact. That is the shape an auditor expects and the shape an employee can be shown.

Decimal

Money is held in a decimal type, never a float.

Amounts are calculated and rounded through a shared money utility rather than in binary floating point, so a component landing on half a piastre resolves the same way on every run and a run total reconciles exactly against the sum of its lines.

Bank-agnostic

The disbursement export is deliberately generic.

Egypt’s Wage Protection System has no single national file layout — the format is set by the disbursing bank. Flume produces a clearly-labelled file carrying every field a WPS submission needs, to be verified against your bank’s current specification rather than pretending one universal format exists.

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.