# Stake & Unstake

**Staking is where you actually earn yield.** When you stake USDM, you receive **sUSDM**, a receipt token whose exchange rate to USDM grows over time as the protocol captures funding rates, lending yield, and maker rebates.

Unstaking is a two-step process with a cooldown period.

{% hint style="info" %}
**Current unstake cooldown: 3 days.** This value is read live from the sUSDM contract and can be adjusted by governance. The active value is always shown in the UI and is authoritative.
{% endhint %}

## How the exchange rate works

```
1 sUSDM = X USDM   (X grows over time)
```

The app always shows the current rate at the top of the Stake page, e.g. `1 sUSDM = 1.0004 USDM`. When you stake USDM, you receive `amount / X` sUSDM. When you unstake, you receive the same number of sUSDM × (current rate) USDM, which is higher than you put in, because the rate has grown.

* **Stake decimals**: USDM has 6 decimals, sUSDM has 12.
* **Yield accrues continuously** through the rate. No claim transaction, no compound button.

## Stake

<figure><img src="/files/EnWlmW8ZfeZZ7onWzWSb" alt="Stake / Unstake page: Stake tab active, current rate 1 sUSDM = 1.0004 USDM, Process indicator, and an Unstake Request card in the Ready state with a Claim button" width="720"><figcaption></figcaption></figure>

### 1. Enter the amount

On the Stake page, select the **Stake** tab and enter the USDM amount you want to stake. The app displays:

* Your USDM balance.
* The estimated sUSDM you'll receive at the current rate.

### 2. Approve USDM (first time only)

Click **Approve USDM**. This allows the sUSDM contract to pull your USDM.

### 3. Stake

The button changes to **Stake USDM**. Click and confirm.

The transaction calls `sUSDM.deposit(amount, yourAddress)`. Your USDM is transferred in, and sUSDM is minted to your wallet at the current rate.

### That's it; yield starts now

Your sUSDM balance doesn't change, but its **redemption value in USDM** grows. You can watch the `1 sUSDM = X USDM` line on the page tick up over time.

## Unstake

Unstaking is a two-step process: **request** now, **claim** after the cooldown.

### 1. Request an unstake

Switch to the **Unstake** tab. Enter the sUSDM amount you want to unstake. The app displays:

* Your sUSDM balance.
* The estimated USDM you'll receive at the current rate.

Click **Unstake sUSDM** and confirm. The transaction calls `sUSDM.cooldownShares(amount)`.

After this, the cooldown starts. A new card appears under **Unstake requests** with status `Cooldown` and a countdown timer.

{% hint style="warning" %}
Your sUSDM is locked to the cooldown request until the cooldown ends. The exchange rate at the time of the request is the rate used at claim; you don't get additional yield during the cooldown.
{% endhint %}

### 2. Wait for the cooldown

The **Waiting Time** column counts down. The cooldown length (currently **3 days**) is set by the sUSDM contract and shown live in the UI. Governance can adjust this parameter; future changes will be announced before they take effect.

### 3. Claim your USDM

When the cooldown ends, the request's badge flips from `Cooldown` to `Ready` (green) and the button changes from a grey `Waiting` to a teal **Claim**.

Click **Claim** and confirm. The transaction calls `sUSDM.claimUnstake(requestId)`, burns the cooldowned sUSDM shares, and sends the corresponding USDM to your wallet.

## After unstaking

You now hold plain USDM. You can:

* **Re-stake it** to earn yield again.
* **Redeem it** to USDC; see [Redeem USDM](/guide/redeem.md). Note that redeem has its own, separate cooldown.

## Troubleshooting

* **"Insufficient USDM balance"**: check your USDM balance; you may need to [mint](/guide/mint.md) first.
* **"Insufficient sUSDM balance"** (on Unstake): you're trying to unstake more than you hold.
* **Rate looks static**: the sUSDM rate updates whenever the protocol settles earnings; it's not every block.


---

# Agent Instructions: 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:

```
GET https://doc.monetrix.xyz/guide/stake.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
