> For the complete documentation index, see [llms.txt](https://docs.trilobyte.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trilobyte.finance/protocol-mechanics/fees.md).

# Fees

Trilobyte charges three fee-like mechanisms: a protocol fee on deposits, a protocol **reserve fee** on repayment interest (the senior-most bucket in the waterfall), and a late fee that signals vault health.

## Protocol Fee (on deposits)

A **0.5% protocol fee** (a governance parameter, default `50_000` in 7-decimal fixed-point, bounded at ≤ 10%) is collected when an investor funds a loan, in **either tranche**, and sent to the **protocol treasury** (the address stored in the Globals contract).

* The fee is taken off the deposit; the **remainder is what gets lent** (and what's credited toward the tranche's target).
* Debt tokens are minted 1:1 with the **net** amount.

> *Example: a 100,000 USDC senior deposit → 500 USDC to the treasury → 99,500 USDC enters the loan (and 99,500 debt tokens are minted to the investor).*

Updated via `set_protocol_fee(fee, caller)` on the Globals contract by the **Operations Admin**. *(This action is not currently timelocked — see* [*Governance*](/protocol-mechanics/governance.md)*.)*

## Reserve Fee (on repayments)

There is no longer a fee "taken off" a repayment after a split. Instead, the protocol's cut of every repayment is **bucket 1 of the waterfall** — the most senior claim, ahead of both tranches:

$$
\text{reserve fee} = \text{interest accrued this period} \times \frac{\text{reserve\_fee\_bps}}{10{,}000}
$$

`reserve_fee_bps` is a Globals setting (default 1000 = 10% of interest, bounded 0–2000) **snapshotted into each vault at creation**, so a later settings change never alters a live loan. See [Payments & the Waterfall](/protocol-mechanics/payments-and-emi.md) for the full bucket order and worked example.

{% hint style="info" %}
This replaces the old model, where a flat 0.5% fee was taken from the borrower's post-split cash share only. The reserve fee is now paid out of interest, before either tranche is paid — it is the protocol's own "senior-most" claim on every period's interest, not a fee on the borrower's residual.
{% endhint %}

## Junior Spread

Related, but not a protocol fee: junior earns a **spread** taken from senior's share of the interest, governed by `junior_spread_bps` (default 2000 = 20% of senior's interest, bounded 0–5000), also snapshotted per vault at creation. This is junior's compensation for being paid last and losing first — see [Tranches and the Waterfall](/overview/tranches-and-the-waterfall.md).

## Late Fees

When a borrower misses a payment deadline, the Pool Manager can apply a **late fee** penalty.

* **Rate**: a Globals setting, `late_fee_bps` (default `1800` = 18% p.a., bounded up to 5000 = 50%). Unlike the fixed-rate model of the pre-tranche protocol, this is now a **governed, per-loan-agnostic setting** read live from Globals at the moment `apply_late_fee` is called — it is not snapshotted into the vault and not hardcoded in the contract.
* **Applied by**: the Pool Manager, via `apply_late_fee(caller)`.
* **Condition**: only when the payment is overdue (`now > next_due`), and at most once per missed period (`LateFeeAlreadyApplied` guards a repeat charge against the same still-open period).
* **Effect**: the fee is split pro rata across the senior and junior arrears (buckets 2 and 4), so it is genuinely collected through the waterfall rather than sitting in a side balance. It also increments the `missed_payments` counter.

$$
\text{late\_fee} = (\text{outstanding\_s} + \text{outstanding\_j}) \times \frac{\text{late\_fee\_bps}}{10{,}000 \times 12}
$$

{% hint style="info" %}
Note that the default-trigger clock uses a schedule anchor independent of `apply_late_fee` (reset only by renegotiation) — so applying a late fee cannot delay when a loan can be marked in default.
{% endhint %}

## Fee Summary

| Fee           | Rate                                                              | Charged on                                 | Recipient                         |
| ------------- | ----------------------------------------------------------------- | ------------------------------------------ | --------------------------------- |
| Protocol fee  | 0.5% (governed, ≤ 10%)                                            | Investor deposits, either tranche          | Treasury                          |
| Reserve fee   | 10% of interest (governed, 0–20%), snapshotted per vault          | Loan repayments, bucket 1 of the waterfall | Treasury                          |
| Junior spread | 20% of senior's interest (governed, 0–50%), snapshotted per vault | Loan repayments                            | Junior tranche                    |
| Late fee      | 18% p.a. (governed, ≤ 50%), read live from Globals                | Overdue payments                           | Senior + junior arrears, pro rata |

*As of September 2026.*
