> ## Documentation Index
> Fetch the complete documentation index at: https://pond.dflow.net/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Fees

> How to apply platform fees to trades

<Info>
  DFlow charges no protocol fee on spot trades. The platform fee described here is the fee builders can set on their own integration.
</Info>

Use platform fees to monetize DFlow integrations by collecting fees on trades executed through applications. Add platform fees by setting fee parameters on [Trade API requests](/resources/trading-api/order/order).

Users pay platform fees only when a trade completes successfully. Platform fees do not affect quoting, routing, slippage checks, or execution behavior.

When a trade completes, the platform fee is transferred to a builder-controlled fee account.

From a user’s perspective:

* Fees apply only on successful trades.
* Fees change net proceeds, not execution.

## Fee Models

Builders choose one of two fee models.

### Fixed Platform Fees

Charge a fixed percentage of the trade amount.

* Fees are specified in basis points (bps).
* 1 bps = 0.01%.
* Example: `platformFeeBps: 50` means a 0.5% fee.

Builders decide whether the fee is collected from the input token or output token using `platformFeeMode`.

### Dynamic Platform Fees (Prediction Markets)

Builders charge a price-dependent fee on prediction market outcome token trades by setting `platformFeeScale`.

DFlow calculates the fee as:

```
k * p * (1 - p) * c
```

Where:

* `k` is `platformFeeScale` with 3 decimals of precision (example: `50` means `0.050`).
* `p` is the all-in price (includes all fees + filled price).
* `c` is the contract size.

Users pay no platform fee when redeeming a winning outcome (`p = 1`). This means apps do not charge a platform fee for outcome token redemption.

## Platform Fee Parameters

Configure platform fees using three parameters.

### platformFeeMode

Use `platformFeeMode` to choose which token users pay the fee in:

* `outputMint` (default): fee is collected from the output token.
* `inputMint`: fee is collected from the input token.

For [spot trades](/spot/introduction) via `/order`, fees can be paid in either the `inputMint` or `outputMint`.
For the intent flow (`/intent` + `/submit-intent`), fees can currently only be paid in the `outputMint`.
For [prediction markets outcome token trades](/prediction-markets/prediction-markets-101), fees can only be paid in the `settlementMint`.

### platformFeeBps

Use `platformFeeBps` to set a fixed platform fee in basis points.

* The fee is calculated as a percentage of the trade amount.
* The fee is collected from the input or output token based on `platformFeeMode`.

### platformFeeScale

Use `platformFeeScale` only for outcome token trades to enable dynamic fees.

* The fee scales with price and contract size using the formula above.
* The fee is zero at redemption for winning outcomes (`p = 1`).

## Fee Accounts

Platform fees are transferred to a builder-controlled token account. You need a separate token account (ATA) for each token you collect fees in. For example, if your app collects fees in both USDC and SOL, you need a USDC fee account and a SOL fee account.

### Using `feeAccount`

Pass `feeAccount` to specify the token account that receives the fee. The account must:

* Be a valid SPL token account for the token being collected.
* Already exist before the trade executes.

The token must match the fee mode:

* Input token account when collecting from `inputMint`
* Output token account when collecting from `outputMint`
* Settlement token account when collecting from prediction market outcome token trades

## How Platform Fees Affect Trades

Platform fees change net economics, not trade behavior.

* Routing stays the same.
* Slippage enforcement stays the same.
* Execution timing stays the same.

If a trade fails, users pay no platform fee.

<Warning>
  Only specify a nonzero platform fee if you will actually collect the fee at execution time. When the API receives a nonzero `platformFeeBps`, it factors the fee into slippage tolerance calculations. If the fee is declared in the request but not collected onchain, the slippage budget is effectively wasted on a fee that never gets taken, resulting in suboptimal pricing for your users.
</Warning>

## When To Use Platform Fees

Use platform fees if you want to:

* Monetize trading volume.
* Fund product development.
* Align incentives with usage.

## Code Recipes

* [Platform fee recipe](/spot/recipes/platform-fees).
