---
title: "Create a fee collection"
method: POST
path: "/fees/collections"
tags: ["Fees"]
---

# Create a fee collection

`POST /fees/collections`

## Request

- Base URL: `https://sandbox.upvest.co`
- URL: `https://sandbox.upvest.co/fees/collections`
- Auth: OAuth 2 (client credentials, token URL `https://sandbox.upvest.co/auth/token`, scopes: `fees:admin`)

Creates a fee collection for a fee amount you have already calculated.

The account must not be in `PENDING_APPROVAL` or `CLOSED` status; a request against an account in either status is rejected with a `400` response. Set `type` to `SERVICE_FEE` for collections that follow your normal fee cadence.

See the Fee collection guide ([TOL](https://docs.upvest.co/products/tol/guides/fees/fees_collection) / [BYOL](https://docs.upvest.co/products/byol/guides/fees/fees_collection)) for the collection lifecycle and webhook events.

## Headers

- `idempotency-key` string, uuid, required

## Request body

- object: Request body for creating a fee collection from a fee amount the client has already calculated.
  - `account_id` string, uuid, required: Universally Unique Identifier (UUID) of the account.
  - `type` 'SERVICE_FEE' | 'SERVICE_FEE_LIQUIDATION', required: Type of the fee collection. * SERVICE_FEE — Service fee intake in a pre-defined cadence, for example monthly. * SERVICE_FEE_LIQUIDATION — Service fee intake resulting from a portfolio liquidation.
  - `collection_amount` string, required: A positive cash amount, as a decimal string with up to two decimal places.
  - `currency` 'EUR' | 'GBP', required: Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * EUR — Euro. * GBP — Pound Sterling.
  - `period_start` string, date, required: The start date of the fee collection period, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.
  - `period_end` string, date, required: The end date of the fee collection period, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.

## Response `200`

Fee collection created.

- object: A fee collection, which processes a fee amount charged to an account. The amount either originates from a fee calculation performed by Upvest or is a pre-calculated amount supplied by the client.
  - `id` string, uuid, required: The unique identifier of the fee collection, as a UUID.
  - `created_at` string, date-time, required: Date and time when the resource was created. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `updated_at` string, date-time, required: Date and time when the resource was last updated. [RFC 3339-5](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6), [ISO8601 UTC](https://www.iso.org/iso-8601-date-and-time-format.html)
  - `account_id` string, uuid, required: Universally Unique Identifier (UUID) of the account.
  - `account_group_id` string, uuid, required: Universally Unique Identifier (UUID) of the account group.
  - `type` 'SERVICE_FEE' | 'SERVICE_FEE_LIQUIDATION', required: Type of the fee collection. * SERVICE_FEE — Service fee intake in a pre-defined cadence, for example monthly. * SERVICE_FEE_LIQUIDATION — Service fee intake resulting from a portfolio liquidation.
  - `collection_amount` string, required: A positive cash amount, as a decimal string with up to two decimal places.
  - `processed_amount` object, required: How much of the fee amount has been covered so far, split by the source of the cash, together with any amount still outstanding.
    - `cash_balance` string: A positive cash amount, as a decimal string with up to two decimal places.
    - `sell_to_cover` string: A positive cash amount, as a decimal string with up to two decimal places.
    - `total_residual_amount` string: A positive cash amount, as a decimal string with up to two decimal places.
  - `sell_to_cover_orders` object[]: The sell-to-cover orders placed to raise cash for this fee collection.
    - `id` string, uuid, required: The unique identifier of the sell-to-cover order placed to raise cash for a fee amount, as a UUID.
    - `residual_amount` string, required: A positive cash amount, as a decimal string with up to two decimal places.
  - `currency` 'EUR' | 'GBP', required: Alphabetic three-letter [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) currency code. * EUR — Euro. * GBP — Pound Sterling.
  - `status` 'PROCESSING' | 'FINALISED' | 'CANCELLED', required: Status of the fee collection. * PROCESSING — The fee collection is in progress. * FINALISED — The fees have been collected from the account and the funds transferred to the client. * CANCELLED — The fee collection was cancelled.
  - `period_start` string, date, required: The start date of the fee collection period, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.
  - `period_end` string, date, required: The end date of the fee collection period, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.
  - `calculation_breakdown` object[]: Breakdown of the fee collection by fee model and subperiod. Populated only for fee collections created from daily fee model calculations.
    - `fee_model_id` string, uuid, required: The unique identifier of the fee model, as a UUID. Upvest provides this value when a fee model is set up.
    - `subperiod_start` string, date, required: The start date of the fee subperiod, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.
    - `subperiod_end` string, date, required: The end date of the fee subperiod, as a [RFC 3339, section 5.6](https://datatracker.ietf.org/doc/html/rfc3339#section-5.6) full date in `YYYY-MM-DD` format.
    - `subtotal_amount` string, required: A positive cash amount, as a decimal string with up to two decimal places.
    - `components` object[], required: Individual fee components contributing to the subtotal.
      - `type` 'TRANSACTION_LUMP_SUM' | 'PLATFORM' | 'SERVICE' | 'VAT', required: The kind of fee this component represents. * TRANSACTION_LUMP_SUM — Lump sum transaction fee. * PLATFORM — Platform fee. * SERVICE — Service fee for a client portfolio. * VAT — Value-added tax.
      - `amount` string, required: A positive cash amount, as a decimal string with up to two decimal places.
  - `replaced_collection_id` string, uuid: The unique identifier of the fee collection, as a UUID.

## Other responses

- `400`: Bad Request. The incoming request had a malformed parameter/object.
- `401`: Unauthorized. The caller has not been authenticated.
- `403`: Forbidden. The caller has been authenticated but is not allowed to take the requested action.
- `404`: Not Found. The requested resource could not be found.
- `406`: Not Acceptable. The resource does not have a current representation that would be acceptable to the user agent. "Accept" header defined unsupported value.
- `429`: Too Many Requests. The caller has exceeded their quota for the time period and has been throttled.
- `500`: Internal Server Error. The service encountered an unexpected error.
- `503`: Service Unavailable. The service handling for this request cannot be reached at this time.
- `504`: Gateway Timeout. The service gateway has reached its internal timeout.

---

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