> For the complete documentation index, see [llms.txt](https://docs.fira.money/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.fira.money/developers/features/coupon-token-ct.md).

# Coupon Token (CT)

Coupon Token (CT) is the floating-yield token in Fira's yield tokenization system, representing a claim on variable yield generated by the underlying asset.

## Overview

CT represents the floating-yield component of the yield split. Holding CT entitles you to the yield generated by the underlying FW between the time of minting and expiry. Interest accrues automatically and can be claimed at any time.

{% hint style="info" %}
CT is the stateful contract that drives the entire BT/CT lifecycle. It manages minting, redemption, interest accounting, and post-expiry behavior.
{% endhint %}

## How it works

### Interest accrual

CT uses a per-user interest tracking system. On every CT transfer (including mints and burns), interest is distributed to both sender and receiver. The interest formula is:

```
interest = principal × (currentIndex - prevIndex) / (prevIndex × currentIndex)
```

Users can claim accrued interest at any time via `redeemDueInterestAndRewards`. A configurable `interestFeeRate` is deducted at claim time and sent to the treasury.

### BC Index caching

If `doCacheIndexSameBlock` is enabled, the BC Index is only updated once per block. This prevents sandwich attacks where the FW exchange rate is manipulated within a block to extract value from CT holders.

### Post-expiry behavior

On the first interaction after expiry, the CT contract snapshots the BC Index and freezes it. After this point:

* **Interest index is frozen** — No new yield accrues to CT holders
* **Post-expiry yield flows to treasury** — Any yield generated after expiry belongs to the protocol
* **CT is not burned on redemption** — Post-expiry, only BT is required for redemption; CT has zero economic value

## Key features

* **Floating yield exposure** — Earn variable yield from the underlying asset
* **Automatic interest tracking** — Interest is distributed on every transfer
* **Post-expiry treasury sweep** — Unclaimed post-expiry yield can be swept to treasury
* **Reentrancy protected** — All external mutating functions use `nonReentrant`

## Related contracts

* [`CouponToken.sol`](/developers/protocol-contracts/yield-contracts/coupon-token.md) — Contract details
* [`InterestManagerCT.sol`](/developers/protocol-contracts/yield-contracts/coupon-token.md) — Interest accrual logic
* [`BondToken.sol`](/developers/protocol-contracts/yield-contracts/bond-token.md) — Paired BT contract


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.fira.money/developers/features/coupon-token-ct.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
