Skip to main content

Pricing calculator

Beginner
Concept

Overview

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.