The Multi-Country Problem

Multi-country payroll is not payroll multiplied by the number of countries. It is a fundamentally different problem that introduces structural challenges absent in single-country payroll:

  • Each country has its own statutory framework. Germany’s income tax (PAP algorithm) has no structural similarity to the UK’s PAYE or Spain’s IRPF. Social security systems differ in structure, not just rates.
  • Regulatory calendars differ. Germany updates tax parameters on January 1. The UK changes NIC thresholds in April. Spain revises IRPF annually but adjusts social security bases via BOE orders.
  • Reporting requirements are country-specific. Germany requires LStAnmeldung and BeitragsNachweis. France requires DSN. The UK requires RTI submissions. These are different formats with different schemas and different deadlines.
  • Cross-country questions exist. “What is our total employer cost across DACH?” “How do social security contributions compare between Benelux countries?” These questions require aggregation across different statutory structures.

Most organizations solve this with multiple vendors: one payroll provider per country, one consolidation layer (often Excel) on top. PayrollEx solves it with one engine and country-specific regulation packages.

Architecture: One Engine, Isolated Regulations

The Payroll Engine is a single calculation framework that runs all country regulations. It handles the universal concerns: tenant management, period logic, case value history, retro corrections, result storage, and the scripting runtime. It does not contain any statutory logic.

Each country regulation is a separate package deployed onto the engine. The packages are completely independent:

Country Regulation Key statutory components
Germany DE.Entgeltabrechnung PAP (LSt), SolZ, KiSt, KV/PV/RV/AV, UV, Umlagen
Austria AT.Lohnabrechnung Lohnsteuer, SV, DB/DZ, Kommunalsteuer
Switzerland CH.Lohnabrechnung Quellensteuer, AHV/IV/EO/ALV, BVG, KTG/UVG
Belgium BE.Bedrijfsvoorheffing Bedrijfsvoorheffing, RSZ, Bijzondere Bijdrage
Netherlands NL.Loonheffing Loonbelasting, ZVW, WW/WIA/WAO, ABP/PfV
Luxembourg LU.Retenue Retenue d’impôt, CNS/CCSS cotisations
France FR.Salaire PAS (prélèvement à la source), cotisations sociales
Spain ES.Nomina IRPF, Seguridad Social, Convenios
Portugal PT.Vencimento IRS, Segurança Social (TSU)
United Kingdom UK.Payroll PAYE, National Insurance, Pension, Student Loan
United States US.Payroll Federal/State Income Tax, FICA, SUI/SDI

An update to the German PAP algorithm does not touch the UK PAYE regulation. A new data satellite for Spanish IRPF does not affect the Dutch loonbelasting. The regulations are isolated by design — they share the engine, but not each other’s logic.

This is described in detail in the article on the composable regulation model.

Unified Data Model, Country-Specific Content

While the statutory logic differs per country, the structure of the data model is consistent. Every country regulation uses the same building blocks:

  • Cases and CaseFields — the employee and company data model (salary, tax identifiers, social security status)
  • Wage types — the calculations (from gross pay through deductions to net pay and employer costs)
  • Collectors — aggregation points that accumulate values from multiple wage types
  • Lookups and data satellites — statutory values (tax tables, contribution rates, thresholds) versioned by year
  • Integration tests — verified payrun scenarios with documented expected results

A German wage type and a Spanish wage type are structurally identical objects. They have a number, a name, a calculation (No-Code or scripted), and collector memberships. The content is entirely different — the German wage type calculates Solidaritätszuschlag, the Spanish one calculates IRPF — but the structure is the same. This means the same API, the same tooling, and the same development patterns work across all countries.

For providers operating in multiple countries, this eliminates the “learn a new system per country” problem. The REST API is the same. The MCP Server tools are the same. The reporting infrastructure is the same. Only the regulatory content changes.

Consolidation: One Query Across Countries

The most common cross-country question is simple: “What is our total employer cost?” Answering it across multiple countries with different statutory structures and different currencies requires a structured consolidation interface.

PayrollEx solves this with a dedicated consolidation layer. Every country regulation exposes a set of consolidation wage types (WT 7000–7030) that map country-specific results to a uniform interface:

WT Consolidation field What it maps
7000 Gross pay Bruttolohn (DE), Salario Bruto (ES), Gross Pay (UK), …
7010 Tax withholding LSt+SolZ+KiSt (DE), IRPF (ES), PAYE (UK), …
7020 Social security (employee) KV/PV/RV/AV-AN (DE), Seguridad Social AN (ES), NI EE (UK), …
7025 Social security (employer) KV/PV/RV/AV-AG (DE), Seguridad Social AG (ES), NI ER (UK), …
7030 Total employer cost Gross + employer SS + employer contributions per country

This means a single API query can return employer costs across all countries. A report can aggregate DACH (Germany, Austria, Switzerland) with multi-currency handling (EUR + CHF). A dashboard can compare social security burdens across Benelux countries. The consolidation interface is the same regardless of the underlying statutory complexity.

Regional consolidation

Three regional consolidation packages extend this to multi-tenant cross-country queries:

  • DACH Consolidation — Germany, Austria, Switzerland (EUR + CHF)
  • Benelux Consolidation — Belgium, Netherlands, Luxembourg (EUR)
  • Iberia Consolidation — Spain, Portugal (EUR)

Each regional consolidation runs as a separate tenant that aggregates data across the individual country tenants. This is not a reporting overlay — it is a structured regulation layer with its own wage types, scripts, and result storage.

Annual Compliance Cycles

One of the operational challenges of multi-country payroll is managing the annual regulatory update cycle. Each country publishes new statutory parameters at different times, with different effective dates, through different channels.

PayrollEx handles this through data regulation satellites. Each country’s annual parameters — tax tables, contribution rates, ceilings, thresholds — are stored in versioned JSON files with validFrom dates. When Germany publishes its 2027 PAP parameters, a new Data.LSt.2027 satellite is created. When the UK announces April 2027 NIC rates, a Data.NI.2027 satellite is created.

The engine automatically resolves the correct satellite for each payroll period. A January 2027 payrun in Germany uses the 2027 parameters. A March 2027 payrun in the UK still uses the 2026/27 tax year parameters until the April changeover.

For the operator, the annual update is a package deployment, not a development project. The provider operations article describes this cycle in detail.

How Alternatives Handle Multi-Country

Different categories of payroll solutions approach the multi-country problem differently:

Approach Examples How it works Tradeoff
Partner network Deel, Remote, Papaya Global In-country payroll partners handle each country. Platform aggregates results. Broad coverage (100+ countries) but variable depth and no unified engine
Single-country API Check, Gusto, Salsa, Zeal Deep coverage of one country (US). No multi-country option. Excellent for US, not applicable for cross-border
Traditional multi-country vendor ADP GlobalView, SAP HCM Enterprise software with country modules. Large implementation projects. Comprehensive but high cost, long implementation, limited flexibility
Unified engine PayrollEx One open-source engine, country-specific regulation packages, consolidation layer. 11 countries with full statutory depth, but fewer countries than partner networks

No approach is universally superior. A company expanding to Thailand, Nigeria, and Chile simultaneously needs a partner network — no single engine covers those jurisdictions yet. A company deepening its European operations across DACH and Benelux with unified reporting needs a structured engine approach.

Cross-Cutting Payroll Problems

Multi-country payroll introduces problems that don’t exist in single-country contexts. PayrollEx addresses these structurally:

Retro corrections across countries

A salary change backdated to three months ago must be recalculated in every country where the employee was on payroll. The retro correction engine handles this per country — each country recalculates according to its own statutory rules (cash principle for tax in some countries, accrual for social security in others). The consolidation layer aggregates the corrected results.

Mid-month changes with country-specific rules

A salary change on the 15th of the month is handled differently in each country. Some countries prorate by calendar days, others by working days, others don’t prorate at all for tax purposes. The engine’s time-splitting mechanics handle this per-country according to the regulation’s configuration.

Cross-border employment

An employee working 80% in Luxembourg and 20% in Germany triggers split payroll obligations. The cross-border article describes how this works — A1 certificates, telework thresholds, and split social security obligations.

One-time payments across tax regimes

A bonus paid to employees in five countries is taxed differently in each: annualized in some, flat-rated in others, attributed to prior months in yet others. The one-time payments article covers how seven countries handle the same bonus differently.

Current Scope and Roadmap

As of mid-2026, PayrollEx covers eleven countries:

  • DACH: Germany, Austria, Switzerland
  • Benelux: Belgium, Netherlands, Luxembourg
  • Iberia: Spain, Portugal
  • France
  • United Kingdom
  • United States

These eleven countries represent the core European and North American payroll jurisdictions that global employers most frequently operate in. The coverage matrix shows which business domains (standard employment, mini-job, part-time, car allowance, pension, garnishment, etc.) are covered per country.

Across all countries, the platform includes 803 wage types, 454 custom actions, 208 cases, and 694 integration tests — with three regional consolidation packages (DACH, Benelux, Iberia) and five HR platform adapters (AFAS, Personio, Sage, Silae, CSV).

Explore coverage by country

See the full coverage matrix — which business domains are supported in each country, which regulations are available, and how consolidation works across regions.

Coverage Matrix →
← Previous
Open-Source Payroll and Compliance
All Articles →
Back to Articles