# calculateEffectiveRate

> **calculateEffectiveRate**(`params`): [`OutputType`](/reference/filoz/synapse-core/warm-storage/namespaces/calculateeffectiverate/type-aliases/outputtype/)

Defined in: [packages/synapse-core/src/warm-storage/calculate-effective-rate.ts:64](https://github.com/FilOzone/synapse-sdk/blob/0c729dad461472f017e4d84f8e6ac16e6afbe7c0/packages/synapse-core/src/warm-storage/calculate-effective-rate.ts#L64)

Calculate the expected FWSS recurring rate for a contract-priced data-set size.

Returns two rates for different use cases:
- `ratePerEpoch` — matches the on-chain rail rate (use for lockup math)
- `ratePerMonth` — higher precision, linearly scalable (use for display)

Callers matching on-chain behavior must first combine all PDP leaf counts,
then convert that aggregate count with `leafCountToRawSize`. Empty data sets
have no recurring rate. Non-empty data sets pay the size-based storage rate
plus the per-data-set proving service fee.

## Parameters

| Parameter | Type | Description |
| ------ | ------ | ------ |
| `params` | [`ParamsType`](/reference/filoz/synapse-core/warm-storage/namespaces/calculateeffectiverate/type-aliases/paramstype/) | [calculateEffectiveRate.ParamsType](/reference/filoz/synapse-core/warm-storage/namespaces/calculateeffectiverate/type-aliases/paramstype/) |

## Returns

[`OutputType`](/reference/filoz/synapse-core/warm-storage/namespaces/calculateeffectiverate/type-aliases/outputtype/)

[calculateEffectiveRate.OutputType](/reference/filoz/synapse-core/warm-storage/namespaces/calculateeffectiverate/type-aliases/outputtype/)