Embedded payroll infrastructure · EU + APAC

Launch payroll in a new country without rebuilding payroll.

One API for country-specific gross-to-net calculation, the full pay-run lifecycle, statutory outputs, lodgement rails, and an auditable evidence chain on every write. Your team ships product — a new country becomes a versioned config pack.

Built for HRIS, workforce & vertical SaaS platforms expanding across borders — not becoming payroll compliance companies.

pay_run · AU-FN-2026-018 Ready for approval
PackAU-2026.1
FrequencyFortnightly · 42 employees
GrossAUD 128,440.00
PAYG withholdingAUD 28,402.00
SuperannuationAUD 6,819.26
Net payAUD 93,218.74
Evidence receipt
idevd_a90b4f
input_hash9f31…c2a7
output_hash42be…7d10
shadow variance0.03% vs incumbent
STP Phase 2approval required
Why this is hard

Every country turns payroll into a different product.

Expansion stalls because the local rules don't just change a tax number — they change the shape of your data model, your UI, your filing obligations, and your audit trail. Ledra Pay absorbs that so your product model stays stable.

01

The data model shifts

Employee fields, residency, tax declarations and contribution rules differ per jurisdiction — schemas you'd otherwise fork per country.

02

The outputs shift

Payslip schemas and statutory file formats (STP, RTI, payday filing, DGUV) are all different, versioned, and change without warning.

03

The obligations shift

Approval flows, lodgement deadlines and audit evidence carry legal weight — a silent calculation change is a compliance incident.

The Ledra Pay model

One API shape. Versioned country packs underneath.

The API never changes shape between countries. Statutory updates ship as pack releases you can pin, test, and diff — never silent behaviour changes in production.

Your layer

Your platform

Product UI, customer accounts, the country toggle your users actually see.

One integration

Ledra Pay API

Stable objects: employees, timesheets, pay runs, payslips, filings, webhooks, evidence.

Swappable

Certified country packs

AU-2026.1, NZ, UK, DE… tax scales, contributions & statutory schemas, independently versioned.

Statutory edge

Lodgement rails

Direct submission where live (AU STP), compliant output files everywhere else.

What you integrate

Six modules. The objects your platform actually ships.

Not the internals of a calculation engine — the product surface, plus the proof and controls that make payroll safe to run programmatically.

Calculate

Stateless gross-to-net for any country pack. Start here — one endpoint, a receipt on every result.

POST /v1/calculate

Orchestrate

Tenants, employees, timesheets, pay runs and payslips through their full lifecycle and state machine.

tenants · employees · pay_runs

File

Statutory output files today; direct lodgement rails per country — AU STP Phase 2 first.

filings · statutory_outputs

Prove

Every write lands in an immutable evidence chain: actor, reason, input hash, output hash, policy checks.

evidence · audit_log

Compare

Shadow runs replay a real pay run and produce a variance report against your incumbent before go-live.

shadow_runs · variance

Control

An MCP server exposes risk-tiered tools, so agents can run payroll with mandatory reasons and approval gates on anything irreversible.

mcp · approval_gates
Developers first

From sandbox key to first calculation in minutes.

A stateless endpoint to start, the full tenant lifecycle when you're ready, and a variance-reporting shadow run when it's time to trust it with production data.

Explore the API reference → Walk the AU end-to-end guide (15 min) →
sandbox.ledrapay.com
# Gross-to-net for any country pack
curl https://sandbox.ledrapay.com/v1/calculate \
  -H "Authorization: Bearer lp_sandbox_…" \
  -d '{
    "pack": "AU-2026.1",
    "frequency": "fortnightly",
    "employee": { "residency": "resident",
                  "tax_free_threshold": true },
    "earnings": [ { "type": "ordinary",
                    "amount": 3269.23 } ]
  }'

→ 200 OK
{ "net": { "amount": "2591.85", "currency": "AUD" },
  "evidence": "evd_a90b" }  // every result is receipted
# Open a pay run for a tenant
curl https://sandbox.ledrapay.com/v1/pay_runs \
  -H "Authorization: Bearer lp_sandbox_…" \
  -d '{
    "tenant": "ten_8fk2",
    "pack": "AU-2026.1",
    "period": "2026-P18",
    "frequency": "fortnightly"
  }'

→ 201 Created
{ "id": "prun_018",
  "status": "draft",
  "employees": 42,
  "next": "POST /v1/pay_runs/prun_018/finalize" }
# Replay a real run against your incumbent
curl https://sandbox.ledrapay.com/v1/shadow_runs \
  -H "Authorization: Bearer lp_sandbox_…" \
  -d '{ "pay_run": "prun_018",
       "baseline": "incumbent_export.csv" }'

→ 200 OK — variance report
{ "employees": 42,
  "max_variance": "0.03%",
  "mismatches": 0,
  "evidence": "evd_shadow_5521" }
# Submit statutory filing (AU STP Phase 2)
curl https://sandbox.ledrapay.com/v1/filings \
  -H "Authorization: Bearer lp_sandbox_…" \
  -d '{ "pay_run": "prun_018",
       "channel": "stp_phase2",
       "approved_by": "usr_9021" }'

→ 202 Accepted
{ "status": "lodged",
  "receipt_ref": "ATO-STP-77c1",
  "evidence": "evd_file_9033" }
Coverage · honest by design

Thirteen packs in beta. The full stack, live, in Australia.

The calculation engine is the first thing to land in a country; lodgement rails follow, shaped with design partners. Here is exactly where each pack stands today.

Country Calculation engine Statutory output Direct lodgement rail Status
AU AustraliaYesYesSTP Phase 2 — in buildDeepest
NZ New ZealandYesYesPayday filing — planned nextBeta
UK United KingdomYesYesRTI — planned nextBeta
DE GermanyYesYesRails — with design partnerBeta
FR FranceYesYesOutput files → local processBeta
NL · BE · ES Benelux + ESYesYesOutput files → local processBeta
PT · AT · CH · LUYesYesOutput files → local processBeta
US United StatesYesYesOutput files → local processEarly

All regulation packs are in beta. Australia is currently the only country with a direct statutory submission rail; every other pack returns compliant statutory output files for filing through your local process. Rail order is shaped with design partners. See full coverage detail →

Design partner program

Bring us one pay run. We'll prove the numbers.

Start with a zero-risk shadow run against your incumbent provider, then help shape the lodgement rails and country roadmap.

  1. 1 Send one anonymised historical pay run.
  2. 2 We replay it through the AU-2026.1 pack.
  3. 3 You get a variance report vs your incumbent.
  4. 4 Inspect the evidence chain behind every figure.