Per Diem Calculation & Payslip Reconciliation
A deterministic aviation Per Diem engine: exact-integer allowances, DST-correct duty splitting, meal deductions and multi-currency FX — with a full calculation trace, payslip reconciliation and a professional claim builder.
The number, and the reason for the number.
Per Diem is where crew lose money, and they lose it quietly — a duty period split the wrong way across midnight, a meal deducted that was never served, an FX rate applied on the wrong date, an allowance simply omitted. The engine exists to make each of those visible rather than arguable.
Exact integers, versioned rules, reproducible results.
Money is held as exact integers from input to output — there is no floating point anywhere in the financial path, which is the usual source of amounts that are almost right. Rules are versioned, so a trip flown last year recomputes against the rules that were live when it was flown, and the engine version is bumped by any change that could alter a produced amount.
- Trip split into duty periods and calendar days exactly as the contract defines them
- Time zones and DST resolved at the boundary, not applied to the total
- Meal and benefit deductions attributed to the rule that grants them
- Multi-currency, with FX taken at the contractual date
- A stored trace for every calculation, kept so it can be reproduced

What the engine handles.
| Allowance types | Per Diem, layover, night-stop, meal, transport, standby, training, deadhead and contract-specific allowances. |
|---|---|
| Time triggers | Report time, block off/on, chocks, duty start and end, hotel check-in and check-out — whichever the contract actually keys on. |
| Trip segmentation | A trip is split into the duty periods and calendar days the rules require, across midnight and across sectors. |
| Time zones & DST | Every boundary is resolved in the correct local zone, with DST handled at the split rather than at the total. |
| Deductions | Meals and benefits provided by the airline are deducted per the rule that grants them, not by a flat guess. |
| Currency | Multi-currency rates with the FX applied at the contractual date, held as exact integers end to end. |
| Simulator | Model a roster or a rule change before you fly it, and see what it would pay. |
| Rule library | Airline and contract rule sets, versioned, so a historical trip recomputes against the rules that were live at the time. |
Was I actually paid that?
The comparison nobody does by hand.
Payslips are imported and lined up against what the roster earned, allowance by allowance. What comes out is a list of discrepancies — missing, incorrect, duplicated or underpaid — each one attached to the trip and the rule it came from. From there the claim builder assembles the calculation, the supporting evidence and the policy reference into a document that can be sent as it stands.
- Missing allowances the roster earned and the payslip does not show
- Amounts that differ from the engine’s figure, with both shown
- Duplicates, and partial or underpaid allowances
- A professional claim, exported as PDF, with the working attached

AI explains the amount. It never sets it.
The assistant will read a roster PDF, tell you what changed since the last version, translate a document, answer a question about your duty, or narrate in plain language why a figure came out the way it did. What it is structurally prevented from doing is producing a number. Every amount comes from the engine, and any change that could alter one bumps the engine version — so an explanation can never quietly become a different answer.
The engine computes an airline’s own contract and published rates. It does not interpret tax or employment law, and it does not tell you what you are legally entitled to — it tells you what the rules you gave it produce, and shows every step so you can check it.