Skip to main content
Apps/HRMQ
Betav0.2NL · EN

HRMQ

Open-source HR and payroll administration on Nextcloud. An open-source Dutch payroll calculation engine, wage-tax and pension filing, and the everyday HR workflows — timesheets, leave, verzuim, self-service — that run around it.

HRMQ is an open-source HR and payroll app for Dutch and EU employers, built on the OpenRegister data layer. At its centre is a Dutch payroll calculation engine — rekenvoorschriften-based gross-to-net verlonen for the 2026 tax year, not certified, every output stamped with an engine version — that feeds a loonaangifte wage-tax filing lifecycle, UPA pension filing for the APG-administered funds, and GL posting and SEPA net-pay batches into shillinq. Around that sits the everyday HR stack: timesheets and expense claims with an approval workflow, leave and verzuim (Poortwachter) case management, employee and manager self-service, Arbeidstijdenwet time-attendance, onboarding and offboarding wizards, a lightweight ATS, performance reviews, an org chart, HR documents through DocuDesk, and an asset register. A machine-checkable rule corpus — EU labour directives, ILO conventions, GDPR for employee data, and Dutch labour and wage-tax law — audits all of it on demand. Released under EUPL-1.2 and maintained by Conduction.
What it does

The first open-source Dutch payroll engine, plus the filings it feeds.

HRMQ calculates gross-to-net payroll and carries the result straight into wage-tax filing, pension filing, and the books — instead of stopping at a payslip.

A Dutch payroll calculation engine — open source.

Rekenvoorschriften-based gross-to-net verlonen for the 2026 tax year. No open-source Dutch payroll engine existed before this one — the nearest comparable, Odoo's, is Enterprise-only. Every output carries an engineVersion and an explicit not-certified disclaimer, and occ hrmq:payroll:verify runs the same rule corpus as its own self-check.

Loonaangifte, from draft to sent.

A create → review → confirm → send lifecycle for the wage-tax filing, with tijdvakcodes per Belastingdienst LH 210 and the statutory deadline (period end plus one calendar month, no weekend extension) tracked and alerted as versioned rules. Digipoort transport itself stays out of scope — this is the administration around it.

UPA pension filing for the APG funds.

A pension filing per period and fund for ABP, SPW, bpfBOUW, Schoonmaak, PFAB, and PWRI, with a review step that's gated on the referenced payroll run actually being approved, posted, and paid — plus reference-integrity, monthly-completeness, and deadline-alert rules in the corpus.

GL posting and SEPA net-pay, into shillinq.

Every approved payroll run produces a balanced four-line journal entry (bruto loonkosten, werkgeverslasten, loonheffing-schuld, netto-loonschuld) and a draft payment run with employee IBANs and net amounts, delivered into the shillinq bookkeeping app. HRMQ contributes the payroll-shaped input; shillinq owns the approval, the SEPA export, and the bank reconciliation.

Partners

Partners shipping hrmq

Implementation, hosting, and integration partners that deliver hrmq to their customers. Pick the partner you already work with, or one whose stack matches yours.

Everyday HR

Timesheets, leave, verzuim, and self-service.

The workflows employees and managers touch every week, each with its own approval trail on the OpenRegister-backed record.

Timesheets with an approval workflow.

Employees log hours per period and project. Managers review submitted timesheets and approve, reject, or reopen them — the full state history stays on the record.

Expense claims with an approval workflow.

Employees submit expense claims with amount, category, and receipt. Once approved, the claim moves to reimbursed — a separate workflow from timesheets, with its own approval trail.

Leave and verzuim, with Poortwachter milestones.

Leave requests carry a statutory-minimum leave balance (4× contractual weekly hours per BW 7:634, lapsing 1 July the following year) checked by three machine-checkable rules. Sickness cases track the Wet-verbetering-poortwachter milestones — probleemanalyse in week 6, plan van aanpak in week 8, the 42-weken ziekmelding at UWV, the eerstejaarsevaluatie in week 52 — as derived, rule-audited dates, never medical data. Approved absence syncs to a plain Nextcloud calendar showing only "Afwezig" or "Verlof", never a reason or diagnosis.

Employee and manager self-service.

A Mijn HR surface shows each employee only their own records — leave, timesheets, expenses, payslips. Managers get team-scoped approval queues and dashboard KPIs filtered to their own team, kept honest by a rule that checks the team stamp against the org chart.

Time & attendance under the Arbeidstijdenwet.

Per-employee clock records with stored worked hours, checked against three ATW rules: at least 11 hours of daily rest between working days (art. 5:3), at most 12 hours per shift (art. 5:7), and the statutory break tiers (art. 5:4). A MijnAanwezigheid self-service page shows the employee's own clock history.

People operations

From first day to last, plus the documents and assets in between.

Case-managed HR processes with rule-audited checklists, an org chart other features resolve against, and documents that render themselves from the same registers.

Onboarding and offboarding wizards.

Onboarding tracks the WID identity check, BW 7:652 proeftijd limits, and the loonheffingenverklaring before the first payroll run. Offboarding tracks the transitievergoeding calculation, leave-balance payout, and the getuigschrift obligation. Each is a declarative case with rule-audited checklist fields, not a free-text to-do list.

Recruiting: vacancies and applications.

Publish vacancies and run applications through a stage pipeline where rejection is reachable from every active stage. Candidate PII lives in one object with one retention clock — the Autoriteit Persoonsgegevens sollicitatie-bewaartermijn (delete within 4 weeks of rejection, up to 1 year with explicit opt-in) is a stored, rule-checked fact.

Performance reviews and cycles.

A review per employee per cycle carries rating, sterktes, ontwikkelpunten, and agreements inside one dossier — no separate goal entity to keep in sync. Separation of duties is enforced on vaststellen, and a rule checks that a finalised review with a rating and agreements actually forms an ontslagdossier under BW 7:669.

An org chart that other features resolve against.

A self-referencing unit hierarchy and effective-dated placements linking employees to units, integrity-checked for a cycle-free structure. The same org chart grounds manager self-service scoping and asset-custody checks.

HR documents, generated through DocuDesk.

Arbeidsovereenkomst, aanbiedingsbrief, werkgeversverklaring, getuigschrift, loonstrook, and jaaropgaaf all render from DocuDesk templates and land back on the record as documents or payslip PDFs — HRMQ assembles the data, DocuDesk renders it, and the feature degrades gracefully when DocuDesk isn't installed.

An asset register with custody tracking.

Laptops, phones, vehicles, tools, and access passes as records with effective-dated uitgiftes linking assets to employees, integrity-checked so nothing stays checked out past someone's offboarding date.

Contract-expiry signals.

The rule corpus flags a fixed-term contract ending within 60 days with no successor lined up, and enforces the aanzegplicht — written notice one month before a six-month-plus fixed term ends, per BW 7:668.