# Transaction fees overview

Upvest gives clients the ability to charge end users per-order transaction fees, with fee details provided on each order so clients can display the total cost to the end user.

Beyond simple flat fees, transaction fee models let you build a custom fee structure — whether a fixed lump sum or a value calculated relative to the transaction amount.

Upvest supports both service fees and transaction fees. This guide focuses on **transaction fees**. Transaction fees are applied at the order level and are separate from any AUM-based service fees that may also be configured on an account.

## Before you begin

We use the following terms and phrases related to transaction fees and transaction fee models throughout this guide.

| **Key Terms** | **Description** |
|  --- | --- |
| **Transaction fee model** | Upvest’s functionality for creating custom transaction fees. Transaction fee models allow you to create both simple flat fees and sophisticated tiered fee structures. |
| **Tiers** | Individual bands within a transaction fee model, each relating to a range for the order’s cash amount. A fee model with only one tier functions as a simple flat fee. |
| **Thresholds** | The base amount values that define the lower boundary of each tier. When an order's value meets or exceeds a threshold, the corresponding tier's fee applies. |
| **Absolute fees** | An absolute transaction fee is a set flat fee for a specific amount. |
| **Relative fees** | A relative transaction fee is calculated from a basis point (bps, 0.01%) amount applied to the order value. When creating a relative transaction fee, you can also set a minimum and maximum absolute fee amount in each tier. For example: 1% of the order volume, but not less than 1 EUR. |
| **Basis points (bps)** | The rate of change in a fee amount expressed as a whole number. One bps equal 0.0001. For example, a 1% change in the fee amount equals a basis point value of 100. |


## Transaction fees at-a-glance

When a buy or sell order is placed via the Investment API, you can include a `fee_configuration` object in the order request. Upvest will deduct the specified fee from the end user's cash balance at the time the order execution is finalized.

Transaction fees:

* Fees are **calculated on an order value basis** but are **presented and attached to individual order executions**. The order-to-fee relationship is 1:N.
* Are charged on a per-execution basis, but defined on an order level by the client.
* For **flat fees**, the full fee amount is added to the **first execution** of an order — it is not distributed across partial fills.
* Can be specified as a fixed, flat absolute cash amount or percentage, or calculated by Upvest using a tiered fee model.
* Are defined in the currency of the account's cash balance.


## Our solution for transaction fees

Upvest supports two approaches for transaction fees:

| **Method** | **Description** |
|  --- | --- |
| **Simple flat fee  (Standard approach)** | You calculate the fee amount on your side and pass it explicitly in the order request via `cash_amount` in the fee_configuration section of the request. Suitable for the clients with sophisticated fee structure that can’t be covered by Upvest fee functionality |
| **Transaction fee model (Recommended approach)** | You create a transaction fee structure via the API. Upvest calculates the applicable fee based on the order value and the configured tier thresholds, referenced via `transaction_fee_model_id`.To charge transaction fees on savings accounts, you must use transaction fee models. **Note**: You can use a transaction fee model for a simple flat fee as well. For example, you can create a 0-fee model to temporarily provide free-of-charge trading to the user. |


### Transaction fee models versus simple flat fees

Transaction fee models offer a more sophisticated and flexible approach to pricing compared to simple flat fees. Both support creating a single charge for a transaction. However, transaction fee models extend this functionality by also enabling more granular and complex fee structures.

The rest of this guide focuses on using transaction fee models.

### Transaction fee functionality

Upvest makes it easy for you to manage transaction fees. We provide the following endpoints to configure transaction fees.

| **Functionality** | **Related Endpoint** |
|  --- | --- |
| Create, retrieve, or list all fee models | We provide the `/transaction_fees/` endpoint to create new fee models or view existing ones: **`POST /transaction_fees/models`** `GET /transaction_fees/models/{transaction_fee_model_id}` `GET /transaction_fees/models` |
| Set up transaction Fees on orders | You can set the `fee_configuration` field to apply fees on orders using the `/orders` endpoint: **`POST /orders`** |
| Set up transaction fees in ex-ante reporting | If you use Upvest Ex-ante reporting, both Buy and Sell transaction fees should be communicated separately when creating an ex-ante report: **`POST /reports`** |