We wanted to know whether Chegatta's payroll engine could reproduce a realistic Portuguese payroll from approved shift data — not on paper, but end to end through the same engine that produces the UI, the database calculation, and the PDF.
So we ran it. Here's what happened.
What we tested
We created a completely fictional test scenario grounded in a real Portuguese payslip structure:
- Company: Chegatta Teste, Lda. — a fake employer in Porto, PT.
- Employee: Carlos Silva (TEST-001), Preparador de Encomendas, part-time, hired 2024-01-01.
- Payroll period: July 2026 (JULHO/2026).
The employee's setup was realistic for a Portuguese part-time worker:
- Hourly rate EUR 10.00.
- Full-time employment plan type "permanent", Social Security 11%.
- IRS using the PT-2026 withholding table.
- Meal allowance EUR 10.20/day.
- Holiday and Christmas subsidies (1/23.25 of monthly base each).
- Salary regularization EUR 160.12.
- Insurance EUR 20.00/month.
- Employer TSU 23.75%.
The month contained 10 approved shifts:
- 7 regular shifts, 92 hours total → EUR 920.00.
- 2 overtime shifts (4h + 10h), treated by the engine as 14h overtime at the configured rate.
- 1 holiday shift (4h) → EUR 40.00.
- Plus 2 overtime shifts we deliberately marked as rejected — to confirm the engine excluded them.
- 1 approved absence, 6 meal-allowance days.
What the engine produced
The engine generated a full Portuguese RECIBO DE REMUNERAÇÃO with all the standard sections you'd expect on a real recibo:
- RECIBO DE VENCIMENTO header.
- Entidade empregadora — employer information.
- Trabalhador — worker information.
- RENDIMENTOS — earnings.
- DESCONTOS — deductions.
- ENCARGOS DO EMPREGADOR — employer contributions, TSU at 23.75%.
- INFORMAÇÃO DE PAGAMENTO — payment section.
- RESUMO DO TEMPO DE TRABALHO — work summary.
The PDF was generated by the same template that powers the real slip, consuming the same source of truth as the calculation and the UI.
The numbers (fictional, but real from the engine)
Here are the figures the engine calculated for this fictional employee:
| Component | Engine result |
|---|---|
| Base salary | EUR 920.00 (92h × EUR 10.00) |
| Overtime (engine) | EUR 210.00 (14h at configured rate) |
| Holiday subsidy | EUR 21.01 |
| Christmas subsidy | EUR 21.01 |
| Meal allowance | EUR 61.20 |
| Salary regularization | EUR 160.12 |
| Gross | EUR 1,393.34 |
| Social Security | EUR 149.31 (base EUR 1,357.34 @ 11%) |
| IRS | EUR 162.38 (bracket 1310–1550, effective 21.5%) |
| Insurance | EUR 20.00 |
| Total deductions | EUR 331.69 |
| Net | EUR 1,061.65 |
For the IRS line on the PDF, the printed bracket label says "x 22%" but the amount uses the effective 21.5% rate — that's a cosmetic label/amount mismatch we've noted but not hidden.
The one honest difference we found
We compared the engine output to a reference Portuguese payslip structure. Most components matched exactly: base salary, holiday subsidy, Christmas subsidy, meal allowance, salary regularization, IRS bracket math.
There was one structural difference:
Overtime treatment. The reference payslip split overtime into several tiers — some hours at 25%, some at 50%, some at 150%. In our test, the engine charged a single configured multiplier on the whole overtime bucket, which produced a different overtime line and a different gross.
That difference flowed into Social Security too, because the engine taxed the full IRS base for Social Security, while the reference taxed a smaller base.
Net: the engine calculated EUR 1,061.65. The reference structure implied EUR 379.24. That's a EUR 682.41 difference, and it's explained by the overtime and Social Security base differences — not by a bug we tried to hide.
We documented it. We didn't rewrite the engine just to make this one test match the reference. That's the point of publishing this.
What this means in plain terms
Chegatta's engine:
- Can produce a complete Portuguese payslip from approved shift data.
- Generates the recibo sections a real PT payroll needs.
- Computes Social Security and IRS from configurable rules.
- Produces the same numbers in the UI, the database, and the PDF.
What it doesn't yet do in this test scenario: split overtime into multiple premium tiers the way a specific reference payslip did. That's a real limitation worth knowing before you buy — and it's exactly the kind of thing a local accountant should confirm for your sector.
This was fiction, not a real person
Every piece of data here is fictional: Carlos Silva, TEST-001, Chegatta Teste Lda., NIPC 999999990, the Porto address, the IBAN, the NISS, the NIF. No real personal information was used or stored in the test.
If you want to see the full test report with the line-by-line comparison, it's in our internal docs. The public version here is the buyer-friendly summary.