> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.kota.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.kota.io/_mcp/server.

# contribution_report.finalized

POST 

Reference: https://docs.kota.io/api-reference/events-and-webhooks/types-of-events/contribution-report-finalized-webhook

## Request

### Payload

- `id` (string, required)
- `type` (string, required)
- `platform_id` (string, required)
- `data` (ContributionReportResponse, required)
- `created` (datetime, required)
- `api_version` (string, required)

## Types

### ContributionReportResponse

- `id` (string, required) — Unique identifier for the contribution report
- `employer_id` (string, required) — Unique identifier of the employer for which the report is created
- `period` (GetContributionReportPeriod, required) — Period covered by the contribution report
- `status` (enum, required) — Current status of the contribution report
  - Allowed values: `open`, `finalized`
- `created_at` (datetime, required) — Date and time the report was created
- `last_updated_at` (datetime, required) — Date and time of the last update to the report
- `aggregates` (ContributionReportAggregates, required) — Summary figures for the report, meant for dashboards and overviews. They keep changing while the report is open. For payroll processing or reconciliation use the employee breakdowns, which carry the itemised contributions.
- `object` (string, optional) — The object type
- `external_customer_id` (string, optional, nullable) — Unique identifier of the customer for which the report is created. This identifier is assigned by the Employer of Record (EoR) platform to the Customer (i.e. the company using the EoR service) for which the employee is employed. This parameter is only available to EoR platforms.
- `finalized_at` (datetime, optional, nullable) — Date and time the report was finalized, if applicable
- `file_id` (string, optional, nullable) — Identifier of the report's downloadable CSV file. Null until the CSV has been prepared, which happens shortly after the report is finalized — use `file_status` to tell whether it is still on its way. Exchange it for a download link via `GET /files/{file_id}/download_link`.
- `file_status` (enum, optional) — Whether the report's downloadable CSV is ready yet. `pending`: still being prepared. Re-fetch the report; it normally becomes available within seconds of finalization. `ready`: available, and `file_id` is set. `failed`: preparation did not succeed and is not retried automatically, so further polling will not help. Contact support to have it prepared again. Null while the report is open, because a CSV is only prepared once a report is finalized.
  - Allowed values: `pending`, `ready`, `failed`

### GetContributionReportPeriod

- `from_date` (date, required) — Start date of the period
- `to_date` (date, required) — End date of the period

### ContributionReportAggregates

- `employee_count` (integer, required) — Number of employees with at least one contribution in the report
- `totals` (list of ContributionReportTotals, required) — Contribution totals, one entry per currency. Often a single entry; empty when the report has no contributions yet.

### ContributionReportTotals

- `currency` (enum, required) — The currency of the amounts in this entry (e.g. `gbp`)
  - Allowed values: `eur`, `aed`, `afn`, `xcd`, `all`, `amd`, `aoa`, `ars`, `usd`, `aud`, `awg`, `azn`, `bam`, `bbd`, `bdt`, `xof`, `bgn`, `bhd`, `bif`, `bmd`, `bnd`, `bob`, `bov`, `brl`, `bsd`, `inr`, `btn`, `nok`, `bwp`, `byn`, `bzd`, `cad`, `xaf`, `cdf`, `chf`, `che`, `chw`, `nzd`, `clp`, `clf`, `cny`, `cop`, `cou`, `crc`, `cup`, `cuc`, `cve`, `ang`, `czk`, `djf`, `dkk`, `dop`, `dzd`, `egp`, `mad`, `ern`, `etb`, `fjd`, `fkp`, `mdl`, `gbp`, `gel`, `ghs`, `gip`, `gmd`, `gnf`, `gtq`, `gyd`, `hkd`, `hnl`, `hrk`, `htg`, `huf`, `idr`, `xdr`, `ils`, `iqd`, `irr`, `isk`, `jmd`, `jod`, `jpy`, `kes`, `kgs`, `khr`, `kmf`, `kpw`, `krw`, `kwd`, `kyd`, `kzt`, `lak`, `lbp`, `lkr`, `lrd`, `lsl`, `zar`, `lyd`, `mga`, `mkd`, `mmk`, `mnt`, `mop`, `mru`, `mur`, `mvr`, `mwk`, `mxn`, `mxv`, `myr`, `mzn`, `nad`, `xpf`, `ngn`, `nio`, `npr`, `omr`, `pab`, `pen`, `pgk`, `php`, `pkr`, `pln`, `pyg`, `qar`, `ron`, `rsd`, `rub`, `rwf`, `sar`, `sbd`, `scr`, `sdg`, `sek`, `sgd`, `shp`, `sll`, `sos`, `srd`, `ssp`, `stn`, `svc`, `xsu`, `syp`, `twd`, `szl`, `thb`, `tjs`, `tmt`, `tnd`, `top`, `try`, `ttd`, `tzs`, `uah`, `ugx`, `usn`, `uyu`, `uyi`, `uyw`, `uzs`, `ves`, `vnd`, `vuv`, `wst`, `yer`, `xua`, `zmw`, `zwl`
- `total_amount` (double, required) — Sum of `employer_amount` and `employee_amount`
- `employer_amount` (double, required) — Total paid by the employer for the benefits in this report, adjustments included
- `employee_amount` (double, required) — Total paid by the employees for the benefits in this report, adjustments included