---
title: "UPA File Generator"
method: POST
path: "/api/v1/tools/upa-file-generator"
tags: ["tools"]
---

# UPA File Generator

`POST /api/v1/tools/upa-file-generator`

## Request

- Base URL: `https://toolforte.com`
- URL: `https://toolforte.com/api/v1/tools/upa-file-generator`
- Auth: HTTP bearer

Generate UPA pension declaration XML for one or more periods: employments, schemes, household situations and, when you ask for them, deliberate defects that the receiving system should reject. Every setting on the tool page is a field here and the seed makes it repeatable. Formats: xml, summary, participants-csv. Full parameter reference at /developers/generators.

## Request body

- object
  - `format` string
  - `options` object
    - `schemeType` string
    - `population` object
      - `count` integer
      - `seed` integer
    - `period` object
      - `startYear` integer
      - `startMonth` integer
      - `months` integer
    - `defects` object
      - `invalidBsn` boolean

## Response `200`

Successful result

- object
  - `ok` boolean
  - `data` object
    - `format` string
    - `fileCount` integer
    - `peopleCount` integer
    - `warnings` string[]
    - `files` object[]
      - `name` string
      - `periodLabel` string
      - `employments` integer
      - `content` string

## Other responses

- `400`: Missing or invalid request fields
- `401`: Invalid or missing API key
- `429`: Monthly plan limit reached

---

[API](https://skmtc.dev/toolforte/apis/toolforte-api.md) · [All operations](https://skmtc.dev/toolforte/apis/toolforte-api/llms.txt) · [OpenAPI document](https://skmtc.dev/toolforte/apis/toolforte-api/revisions/4d814d484dfc?raw)
