> 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)

## 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 dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
