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

# DBC Fee Scheduler

> Learn how DBC fee schedulers support fixed, linear, and exponential fee behavior during the bonding curve phase.

The DBC fee scheduler controls how the base fee changes after a pool opens.

It can be used in three product ways:

| Scheduler Style | Product Behavior                                              | Best Fit                                                              |
| --------------- | ------------------------------------------------------------- | --------------------------------------------------------------------- |
| Fixed           | Fee stays constant.                                           | Simple launches with predictable fee messaging.                       |
| Linear          | Fee decreases by the same amount each period.                 | Launches that want a clear anti-sniper schedule.                      |
| Exponential     | Fee decreases by a percentage of the current fee each period. | Launches that want stronger early protection and faster early relief. |

## How Scheduler Settings Work

A scheduler uses four core settings.

| Setting           | Product Meaning                         |
| ----------------- | --------------------------------------- |
| Cliff fee         | The starting fee when trading opens.    |
| Number of periods | How many fee reductions can happen.     |
| Period frequency  | How long each period lasts.             |
| Reduction factor  | How much the fee decreases each period. |

The schedule is measured from the pool's activation point. Activation can be based on slot or timestamp, depending on the config.

## Fixed-Fee Behavior

Fixed-fee behavior is the simplest scheduler setup.

```math theme={"system"}
\text{Fee} = \text{Cliff Fee}
```

In product terms, every trade pays the same base fee unless dynamic fees are enabled. This is useful for launchpads that want broad, easy-to-explain presets.

<Note>
  Fixed fee is not a separate on-chain scheduler curve. It is scheduler behavior where `period_frequency`, `number_of_period`, and `reduction_factor` are all zero, so the program returns the cliff fee for every swap.
</Note>

## Linear Scheduling

Linear scheduling reduces the fee by the same amount each period.

```math theme={"system"}
\text{Fee} = \text{Cliff Fee} - (\text{Passed Periods} \times \text{Reduction Factor})
```

Think of it like a staircase.

```text theme={"system"}
High fee
   |
   |____
        |____
             |____
                  |____ Final fee
```

Linear scheduling is easy to publish because every step is predictable.

## Exponential Scheduling

Exponential scheduling reduces the fee by a percentage-style factor each period.

```math theme={"system"}
\text{Fee} =
\text{Cliff Fee} \times (1 - \text{Reduction Factor})^\text{Passed Periods}
```

This usually drops faster early, then tapers.

```text theme={"system"}
High fee
   |\
   | \
   |  \__
   |     \____ Final fee
```

Exponential scheduling is useful when the launch wants the strongest protection near opening, but does not want to keep fees elevated for too long.

## Fee Bounds

Scheduler fees must stay within DBC bonding phase fee bounds.

| Bound             | Product Meaning                                             |
| ----------------- | ----------------------------------------------------------- |
| Minimum base fee  | 0.25% minimum base fee for bonding phase configurations.    |
| Maximum total fee | 99% maximum fee cap to avoid invalid launch configurations. |

If any scheduler field is non-zero, all three schedule fields must be non-zero. Mixed zero and non-zero scheduler settings are invalid.

## Choosing a Scheduler

<AccordionGroup>
  <Accordion title="I want the simplest possible fee">
    Use fixed-fee behavior. It is easiest for traders to understand and works well when anti-sniper fee decay is not needed.
  </Accordion>

  <Accordion title="I want a public fee countdown">
    Use linear scheduling. It is the easiest decaying-fee model to communicate because each reduction is the same size.
  </Accordion>

  <Accordion title="I want high protection only at the beginning">
    Use exponential scheduling. It front-loads fee protection while making the launch more accessible as early trading settles.
  </Accordion>
</AccordionGroup>
