# Fees

The platform has:

* <mark style="color:purple;">**Zero Fees**</mark> on the following operations:
  * **Open Position**
  * **Add Collateral**
* <mark style="color:purple;">**Mint/Redeem Fees**</mark> for Liquidity Providers:

  * **USDC**
    * &#x20;**Mint: 0 BPS**
    * **Redeem: 10 BPS**
  * 100 BPS on BTC/ETH
  * 200 BPS on BONK

  We encourage mint and redeems to be done in USDC, but we keep the other routes open for emergencies, while gated by high fees to prevent pool's arbitrages.
* <mark style="color:purple;">**14 BPS (0.14%)**</mark> fee on the following operations:
  * **ClosePosition/Liquidate (so a fully open/close is 14 bps, Open is 0 bps)**
* **Borrow** **fee**
  * SOL: 0% \~ 80.5% APR
  * WBTC: 0% \~ 80.5% APR
  * BONK: 0% \~ 150.7% APR
  * Linear increase based on the current pool utilization (per Custody, so calculated for each asset independently)
* Liquidation fee
  * 5 BPS
* ~~<mark style="color:purple;">**0-200 bps (0-2%)\***</mark>~~ ~~on **Swap fee**~~ (Public swaps have been paused since June 2025. All swap activity is currently routed through Jup Swap when needed.)
  * ~~The actual amount is a function of the distance to the target ratios of the in and out tokens from the pool.~~

### Rent for PDA creation

{% hint style="info" %}
A few instructions require the creation of an on-chain account controlled by the program on behalf of the user (think a user profile for instance). This is the case for staking, positions, and automated orders (TP/SL, etc.).<br>
{% endhint %}

Process: I'm going to open a long position, set a take profit, and close the position. I'll follow SOL changed to the user accounts and publish them here. Test carried on devnet with the main program branch \
\
\[1] [Open long position](https://explorer.solana.com/tx/dcqYr4U7TRpVJAJZxhYW3PQzYwNf3KFAq5ppaa6UewxXQ7QCkfRzGgiGZuZUNsZpQV8vu9RacY934rxi9T6zx2V?cluster=devnet)

* caller **paid** `0.00304036` SOL, of which `0.00289536` went to pay rent for the `Position` PDA rent, and so `0.000145` were paid as fees

\[2] [Add take profit](https://explorer.solana.com/tx/3GBqWaDY9wKL7fFbzZnBtGKW7eQJfxXB72WkFrQs9KLK3svwc5htPKyUU5QWvnZwMiVNx5de8S4ya143zW27KLNE?cluster=devnet)

* caller **paid** `0.01570688` SOL, of which `0.01568188` went to pay rent for the `TakeProfitThread` PDA rent, and so `0.000025` were paid as fees

\[3] [Close long position](https://explorer.solana.com/tx/3v3Nmfi3hcfkLfBCyiw2X6myD9PoACKCBWvHpebs2XHpvHR333nxgUq4zdaAdK6PUWH1kNhY1GmswqZjgyo34kEz?cluster=devnet)

* caller **received** `0.01851224` SOL (the full rent amount minus `0.000235` paid as fees for this IX)

In total, `0.01874724` SOL were paid for rent (`0.00304036 + 0.01570688` from previous IXs), of which `0.01851224` were refunded, the missing `0.000235` are the actual fees on the "Close long position" IX. \
**The cost on the user for carrying these 3 operations has been `0.000145 + 0.000025 + 0.000235` = `0.000405`, which equates to $0.05 at today price**

\_\_\_\_\_\_\_\_\_\_

Now, for a Locked Stake scenario :&#x20;

\[1] [Lock Stake ADX for 360 days](https://explorer.solana.com/tx/4oqGQBN8dgCwThJEs61Rr1YPru3GAQ8GhoFU4j9mV5LFFpSFtN1XiJ5g2R3LKNQVAwY1kvsuLgeSTt2HeCVAmQes?cluster=devnet)

* caller **paid** `0.024073556` SOL, of which `0.024013` went to pay rent for the `StakeResolutionThread` PDA, and so `0.000060556` were paid as fees

\[2] [Early Exiting ](https://explorer.solana.com/tx/4zZ98XYPx4ZbieW3cBka3ArX29G7nfFnQfrQJ4gLUMPR6rCXhEMHvLe7yJTzbowwXZHkfTqzz6fjFYBNyX7u7iSf?cluster=devnet)(this was done by professionals, recommend not to try this at home)

* caller **received** `0.023968` SOL (the full amount minus `0.000105556` paid as for this IX)

In total, `0.024073556` SOL were paid for rent, of which `0.023968` were refunded, the missing `0.000105556` are the actual fees on the "Close long position" IX. The cost on the user for carrying these 2 operations has been `0.000060556 + 0.000105556` = `0.000166112`, which equates to $0.024 at today price

\_\_\_\_\_\_\_\_\_\_\_

Note that there is an additional "one time cost" that must be paid by anyone who uses staking (liquid, locked, genesis), which is related to setting up the user's `StakingAccount` that then keep track of all the "sub-stakes". There is currently no option to free this up but it's up to us in the future to implement an IX for it, along wide with other PDA like `UserProfile`, that would enable a user to wrap up all activity related to the platform and retrieve all rent. In the meantime, this rent is safe and linked to your wallet, so it will not be going anywhere.

Also note that when the Close long position or Lock Stake Finalize is called through Sablier, the thread will be unable to destroy itself due to re-entrancy protection. We will add a mechanism for you to claim any of these dangling threads from the dashboard or just as another chained IX from sablier, we are sorting this out as we speak. But rest assured that each of these dangling thread will keep its rent, and it is only accessible by our program (and tagged per user) so it will wait safely until we roll this out.

<br>
