UPA File Generator
Build UPA (Uniforme Pensioenaangifte) test files for Dutch pension administrations. Set the employer and the schemes, choose the life events you want in the population, decide which optional elements to fill, leave empty or omit, and download one XML file per declaration period plus a participant overview for your CRM. Up to 10,000 employments per period. Everything runs in your browser and all data is fictional.
Every setting on this page is also a field in the API. POST /api/v1/tools/upa-file-generator, or generate_upa_files from an AI assistant. Useful when a regression suite has to rebuild last month's declaration, or when you want a file with a deliberate defect to test the rejection path. Full parameter reference.
A matching BRP/GBA register file is included by default. It holds the exact same people as the UPA files, same BSN, name, date of birth, address and partner, so every person in a declaration can be looked up in the register while you test. It downloads as brp-gba-test-data.csv inside the ZIP, in the wide GBA Totaalfile persoonslijst layout that BRP import tools expect (a readable compact format is also available). See also the BRP Test Data Generator.
CdRdnEindArbov code 31 was removed and codes 32, 33 and 34 were added.
The franchise and the maximum pensionable salary are round placeholders, not legal figures. Replace them with the values from your own scheme before you use the premium amounts.
UPA has no element for the scheme type. This choice only sets the defaults below and is recorded in the participant overview.
The one to feed into another tool, a script, pandas or R. No byte order mark and quotes only where a value truly needs them, because an importer that does not strip quotes would otherwise look for a column called BSN and find one called "BSN" instead. A Dutch or German Excel shows it as one column unless you import it through Data, From Text.
Downloaded as brp-gba-test-data.csv, inside the ZIP with the UPA files and also available on its own with the button above. The Totaalfile format is the one most GBA import tools accept.
Optional GBA metadata (dates, act numbers, source documents)
Off by default, so the file stays identity-only. Switch a group on to fill every related field consistently (each date lands in the right category next to its act number and source document, never half-filled).
Press Generate to build the files.
UPA test files for Dutch pension administrations
UPA (Uniforme Pensioenaangifte) is the message Dutch employers send to a pension provider every payroll period. It carries the employment, the wage components and the pension scheme data for every employee, and it also carries civil status, partner name and date of death, so most life events reach the pension administration through this file.
This generator produces a whole run at once: one XML per declaration period, with the same population carried across the periods so joiners, leavers, deaths and civil status changes land in the period where they belong. Element names and code lists follow the Pensioenfederatie and SIVI product description. Every BSN passes the elfproef and every IBAN passes the mod-97 check, so a clean file gets past the first line of validation.
Edge cases are the point of a test file. Long surnames, accented characters, name prefixes, house number additions and addresses abroad break letter templates and fixed width columns. The deliberate defects do the opposite: they break one employment on purpose so you can see what the receiving system says about it.
Everything runs in your browser and nothing is uploaded, so the tool works on a locked down corporate laptop. All generated data is fictional.
This is one of 21 tools built on actual Dutch regulations rather than generic maths: salary and severance, notice periods and WW duration, BTW and mortgages, public holidays, AOW age, and GDPR-safe test data for Dutch systems.
See all Dutch toolsThis generator is part of a set of GDPR-safe Dutch test data tools: test BSNs, IBANs, document numbers, BRP records, and UPA files. All of them work in the browser, and several are available as a REST API and MCP server for CI pipelines and AI agents.
View the Dutch test data toolkitHow the UPA File Generator Works
- 01Fill in the employer header: name, payroll tax number (LhNr), affiliation number and the payroll package
- 02Pick the scheme type and set RegKnmrk and RegVrnt for the base scheme, plus a supplementary scheme or social fund if you need them
- 03Choose the start period, how many consecutive periods you want, and whether to split the result into smaller files
- 04Set the population size and the life event mix, or pin specific people by hand or from a CSV
- 05Set each optional element to fill, empty or omit, and switch on any deliberate defects
- 06Pick the participant overview format, press Generate and download the ZIP with one XML per period plus that overview
Building a UPA Test Set That Actually Finds Defects
Start small and clean: two or three periods, about 25 people, no defects. Once the message is accepted, raise the share of unusual names and foreign addresses, add the life events you care about, and extend the run to twelve periods so the year boundary and the holiday allowance peak are covered. Then make a second set with deliberate defects switched on and check that every one of them is rejected with a message you can act on. Write down the seed value: it makes both sets reproducible, so a defect found today can be recreated exactly next week.
When to Use the UPA File Generator
Use it when you need test data for a pension administration, a payroll to pension provider integration, a Wtp or FPR migration rehearsal, life event testing across a chain of systems, correspondence and letter testing, or a volume test that needs thousands of employments across many periods.
Common Use Cases
- Life event testing: joiners, leavers, re-employment, death in service, marriage, divorce, unpaid leave, sickness and early IVA in one population
- Chain testing: feed a run of consecutive periods through payroll, pension core and CRM in one go
- Migration rehearsal: build a population that spans a full year to check the year boundary and the annual recalculation
- Correspondence testing: long names and foreign addresses show how letter templates and address labels hold up
- Error handling: inject a deliberate defect and check the rejection message the provider returns
- Volume testing: up to 10,000 employments per period across as many as 24 periods, split into files of any size
- Version testing: generate the same population in UPA 2024, 2025 and 2026 to see how the receiving system handles the element and code list differences
Expert Tips
- Note the seed value in your test report, so the exact same file set can be regenerated later
- Keep the first run clean, then make a second run with defects switched on rather than mixing the two
- Set the holiday allowance period to the month your payroll pays it, so the cumulative maximum is actually reached
- Use one file per employment when a test needs a single letter or notification to be traceable to one person
- Feed the participant CSV back in through Import to pin the same population for a repeat run. The importer detects comma, semicolon and tab on its own
- Switch the schema version once your settings are set: the field list greys out anything the selected version does not have
Frequently Asked Questions
What is a UPA file?→
Does one file contain one person or many?→
How many employments can one file hold?→
Can UPA carry life events like marriage or death?→
What changed between UPA 2024, 2025 and 2026?→
Which participant overview format should I pick?→
Where do I choose between a flexible and a solidary scheme?→
Are the generated BSN numbers real?→
What is the difference between empty and omit?→
Can I correct an earlier period?→
What is in the participant CSV?→
Does my data leave the browser?→
Related tools
12 suggested- 01BRP Test Data Generator - Dutch Person RecordsGenerate fictional BRP persoonslijst test data: person, parents, partnership, death, residence and children. Map the output onto the header row of the system you feed. Valid BSN and A-nummer.
- 02Dutch Exam Grade Calculator - Eindexamen SE/CE Pass CheckCalculate Dutch eindexamen final grades from SE and CE marks and check the havo/vwo slaag-zakregeling. Free, instant, browser-based.
- 03Dutch School Holidays - Schoolvakanties 2026-2027 per RegionAll Dutch school holiday dates (schoolvakanties) for regio noord, midden, and zuid with a countdown to the next break. Free and browser-based.
- 04Dutch Student Finance Calculator - Studiefinanciering 2026Estimate your monthly DUO studiefinanciering: basisbeurs, aanvullende beurs, and student travel product, with official 2026 amounts. Free and instant.
- 05Dutch Doorstroomtoets Guide - Score to SchooladviesConvert a doorstroomtoets standaardscore into the matching toetsadvies and secondary school level, with an explainer of the advies process. Free, browser-based.
- 0630% Ruling Calculator - Dutch Expat Tax Benefit 2026Calculate your tax-free allowance under the Dutch 30% ruling with 2026 rules: salary norms, WNT cap, and net advantage. Free, instant, browser-based.
- 07Dutch Holiday Allowance Calculator - Vakantiegeld Gross and NetCalculate your Dutch 8% holiday allowance (vakantiegeld) and estimate the net payout after the bijzonder tarief. Free, instant, browser-based.
- 08Dutch Severance Calculator - Transitievergoeding 2026Calculate your statutory Dutch transition payment: 1/3 monthly salary per year of service, pro rata by day, with the 2026 cap. Free and browser-based.
- 09Dutch Mileage Calculator - Kilometervergoeding 2026Calculate your untaxed Dutch travel reimbursement per week, month, and year at the 2026 rate of EUR 0.25 per km. Free, instant, browser-based.
- 10Freelance Rate Calculator - Dutch ZZP Hourly RateCalculate the hourly rate you need as a Dutch freelancer to hit your target net income, with 2026 ZZP tax rules and a salary comparison. Free and browser-based.
- 11Dutch Notice Period Calculator - Opzegtermijn and Last Working DayCalculate the statutory Dutch notice period for employee or employer and the exact date your contract ends. Free, instant, browser-based.
- 12Dutch Working Days Calculator - Werkdagen Between Two DatesCount working days between two dates excluding weekends and Dutch public holidays, with the full holiday list per year. Free and browser-based.
From the blog
Further reading- Dutch Test Data from a Script: BRP and UPA Generators over API and MCPGenerate BRP/GBA persons and UPA pension declarations from your test suite, your seed script or your AI assistant. Every setting on the tool page is a field in the request, and the same seed always returns the same data.9 min read
- Your AOW Age: What Is Fixed and What Is Still a GuessHow the Dutch state pension age works, why it differs per birth date, and the difference between a legally fixed AOW age and an expected one. With a free calculator.6 min read
- Dutch Business Calculators: BTW, Salary and Mortgage ToolsCalculate Dutch BTW/VAT, net salary, and mortgage payments online. Validate IBANs and more. Free tools built for businesses and freelancers in the Netherlands.8 min read