---
title: "Bulk append fee status rows for multiple Application List Entries."
method: PUT
path: "/application-lists/{listId}/entries/fees"
tags: ["application-list-entries"]
---

# Bulk append fee status rows for multiple Application List Entries.

`PUT /application-lists/{listId}/entries/fees`

## Request

- Base URL: `/` (relative, and the document was published on a file host, not at the API’s origin)
- URL: `/application-lists/{listId}/entries/fees`
- Auth: none declared

Atomically appends the supplied fee status rows to each specified entry in the source list (path `listId`). Existing fee status rows are preserved to retain fee-status history. If any supplied fee detail has `hasOffsiteFee=true`, the selected entries will be ensured to have an off-site fee mapping. `hasOffsiteFee=false` does not remove an existing off-site fee mapping. If any entry cannot be updated, no fee status rows are changed.

## Path parameters

- `listId` string, uuid, required

## Request body

- BulkFeesUpdateDto: Append fee-status rows for multiple Application List Entries in one atomic operation.
  - `entryIds` string[], required: Array of entry IDs whose fee-status history should be appended to. All must belong to the list in the path. Requests with more than 1050 entry IDs are rejected with 400 Bad Request.
  - `feeDetails` BulkFeeDetailsDto[], nullable: Array of fee-status rows to append to every selected Application List Entry. Fee details is optional, but if provided, there must be at least a row.
    - `paymentStatus` 'PAID' | 'UNDERTAKEN' | 'DUE' | 'REMITTED', required: The Status of the Fee's Payment.
    - `statusDate` string, date, required: The date when the fee status was updated. Must not be in the future.
    - `paymentReference` string: Optional reference used to identify the payment.
  - `hasOffsiteFee` boolean, nullable: If true, ensures that all selected entries have an off-site fee mapping. If false, it will remove the offsite fee. If not provided, the offsite fee will not be changed.

## Response `200`

Fee status rows appended for all entries.

- BulkUpdateResponseDto: Result of a bulk update operation.
  - `totalCount` integer, required: Total number of records requested for update.
  - `updatedCount` integer, required: Number of records updated.
  - `status` 'SUCCEEDED' | 'FAILED', required: Overall status of the bulk update operation.

## Other responses

- `400`: Invalid request parameters.
- `401`: Authentication required or token invalid.
- `403`: Authenticated but not permitted to perform this action.
- `404`: The requested resource was not found.
- `409`: Conflict with the current state of the resource.
- `500`: Unexpected server error.

## Changes

- **2026-07-22** `d2b463ada066`: 1 info
  - the request property `feeDetails` became optional
- **2026-07-21** `8783b8218210`: 1 breaking
  - the `feeDetails/items/paymentReference` request property's maxLength was decreased to `15`
- **2026-07-21** `5f05bcf28e8f`: 1 warning, 2 info
  - removed the request property `feeDetails/items/hasOffsiteFee`
  - added the new optional request property `hasOffsiteFee`
  - the request property `feeDetails` became nullable
- **2026-06-16** `d0a03a5c7c91`: 1 info
  - added the non-success response with the status `404`

[Operation history](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/changes/application-lists/:listId/entries/fees/put.md)

---

[API](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api.md) - [All operations](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/llms.txt) - [OpenAPI document](https://skmtc.dev/hm-courts-and-tribunals-service/apis/applications-register-api/revisions/36521cfe1ab7?raw)
