Pricing calculator
To get a rough estimate of how much your project may cost, below is a pricing calculator that can be used to estimate the cost of a dapp deployed on ICP. Costs are charged to a canister in cycles, which are fixed against the price of XDR, where 1 trillion cycles equals 1 XDR. Cycles costs are calculated based on:
- Messaging: Calls that are made to a canister's methods. Costs depend on the type of call being sent (query, update, inter-canister, etc.), the size of the message's request and response bytes, and the total number of messages a canister sends and receives.
Note that query calls are currently free and do not incur a cost.
Execution: Cycles are charged during execution of messages and tasks. There is a fixed fee for starting execution and a fee per executed instruction.
Storage: Cycles charged for canister storage, both Wasm memory and stable memory.
Special features: Include HTTPS outcalls, transmissions using the Bitcoin API, and transmissions using the chain-key signing API.
ICP pricing calculator
The calculator below estimates costs in USD, though your project will be charged in cycles. Cycles have a fixed cost, where 1 trillion cycles equals 1 XDR. Learn more about how to obtain cycles.
How is the number of cycles charged to a canister estimated?
The number of cycles charged to the canister can be estimated using the following parameters:
- Nodes in the subnet the canister is deployed to: If deployed locally, this number is 1. If deployed on the mainnet, this number is either 13 or 34.
- Amount of users: The total number of users that interact with the canister.
- Daily active users: The total number of users that interact with the canister daily.
- Daily messages per active user: The total number of messages sent to the canister that each active user generates.
- Request and response bytes per message: The size of the request and response bytes per message.
- Instructions executed per message: The number of instructions that are executed in response to each message.
- Calls per message: The number of calls that are triggered per message.
- Request and response bytes per call: The size of the request and response bytes per call.
- Instructions per call: The number of instructions that are executed per call.
- Daily tasks: The number of daily tasks that the canister executes.
- Instructions executed per task: The number of instructions that are executed per daily task.
- Daily HTTPS outcalls: The number of daily HTTPS outcalls the canister makes.
- Request bytes per HTTPS outcall: The size of the request bytes per HTTPS outcall.
- Response bytes per HTTPS outcall: The size of the response bytes per HTTPS outcall.
- Storage bytes per user: The amount of data that is stored for each user.
- User-independent storage bytes: The amount of data the canister stores, independent of the storage used per user.
HTTPS outcalls are a special feature that is calculated differently than the other resources. Additionally, if a canister uses the Bitcoin API or makes transmissions using the chain-key signing API, there are additional cycle costs for these special feature transmissions.