Cycle costs
Canisters pay for the resources they consume and operations they perform using cycles. The price of cycles is pegged to XDR (Special Drawing Rights): 1 trillion cycles = 1 XDR. As of May 22, 2025, 1 XDR ≈ $1.35 USD: this rate fluctuates; see the IMF’s XDR exchange data for the current rate.
You can use the pricing calculator to estimate the cost for your app.
Cycles units
Section titled “Cycles units”| Abbreviation | Name | In numbers | XDR value | Approx. USD value |
|---|---|---|---|---|
| T | Trillion | 1_000_000_000_000 | 1 | ~$1.35 |
| B | Billion | 1_000_000_000 | 0.001 | ~$0.00135 |
| M | Million | 1_000_000 | 0.000001 | ~$0.00000135 |
| k | Thousand | 1_000 | 10⁻⁹ | ~$0.00000000135 |
Replication factors
Section titled “Replication factors”Costs scale with the number of nodes in the subnet. The base cost tables below assume a 13-node application subnet. For a 34-node (fiduciary) subnet, costs scale as 34 * (cost / 13):
- 13-node subnet: Standard application subnets. No scaling needed: costs are as listed.
- 34-node subnet: Fiduciary subnets (higher security for financial applications). Costs are approximately 2.6× the 13-node cost.
See Subnet types for subnet-specific details.
Cost table
Section titled “Cost table”USD values are approximate and based on the May 2025 XDR rate (1 XDR ≈ $1.35). The XDR rate fluctuates: use cycle counts for precise budgeting.
| Operation | Description | Who pays | 13-node cycles | ~USD (May 2025) | 34-node cycles | ~USD (May 2025) |
|---|---|---|---|---|---|---|
| Query call | Query information from a canister | N/A | Free | Free | Free | Free |
| Canister creation | Create a new canister | Created canister | 500_000_000_000 | ~$0.677 | 1_307_692_307_692 | ~$1.772 |
| Compute allocation (per % per second) | Reserved compute per second | Canister with allocation | 10_000_000 | ~$0.0000135 | 26_153_846 | ~$0.0000354 |
| Update message execution | Per update message executed (base fee) | Target canister | 5_000_000 | ~$0.0000068 | 13_076_923 | ~$0.0000177 |
| 1B instructions executed | Per 1B Wasm instructions (on top of base fee) | Executing canister | 1_000_000_000 | ~$0.00135 | 2_615_384_615 | ~$0.00354 |
| Xnet call (request + response) | Inter-canister call overhead | Sending canister | 260_000 | ~$0.00000035 | 680_000 | ~$0.00000092 |
| Xnet byte transmission | Per byte in inter-canister call | Sending canister | 1_000 | ~$0.00000000135 | 2_615 | ~$0.00000000354 |
| Ingress message reception | Per ingress message received | Receiving canister | 1_200_000 | ~$0.0000016 | 3_138_461 | ~$0.0000043 |
| Ingress byte reception | Per byte in ingress message | Receiving canister | 2_000 | ~$0.0000000027 | 5_230 | ~$0.0000000071 |
| GiB storage per second | Storage cost per GiB per second | Canister with storage | 127_000 | ~$0.000000172 | 332_153 | ~$0.000000450 |
Storage cost per GiB per month (30 days):
| Subnet | Cycles | ~USD (May 2025) |
|---|---|---|
| 13-node | ~329 billion | ~$0.45 |
| 34-node | ~861 billion | ~$1.70 |
HTTPS outcalls
Section titled “HTTPS outcalls”HTTPS outcall costs scale with subnet size (n = number of nodes):
total_fee = base_fee + size_feebase_fee = (3_000_000 + 60_000 * n) * nsize_fee = (400 * request_bytes + 800 * max_response_bytes) * nrequest_bytes is the total serialized request size (URL + headers + body + transform name/context). max_response_bytes defaults to 2 MiB if not explicitly set by the canister.
| Component | 13-node cycles | ~USD (May 2025) | 34-node cycles | ~USD (May 2025) |
|---|---|---|---|---|
| Per call (base) | 49_140_000 | ~$0.0000666 | 171_360_000 | ~$0.000232 |
| Per request byte | 5_200 | ~$0.000000007 | 13_600 | ~$0.0000000184 |
| Per reserved response byte | 10_400 | ~$0.000000014 | 27_200 | ~$0.0000000369 |
Execution cost formula
Section titled “Execution cost formula”Each update message execution is charged as a base fee plus a per-instruction fee (the Update message execution and 1B instructions executed rows in the Cost table above):
total = base_fee + per_instruction_fee * num_instructionsCurrent values (13-node subnet):
base_fee= 5_000_000 cycles (~$0.0000068 USD, May 2025)per_instruction_fee= 1 cycle (so 1B instructions = 1B cycles ≈ $0.00135, May 2025)
Compute allocation
Section titled “Compute allocation”By default canisters are scheduled best-effort. Setting compute_allocation guarantees execution slots:
- 1%: Scheduled every 100 rounds
- 2%: Scheduled every 50 rounds
- 100%: Scheduled every round
Total allocatable compute capacity per subnet is 299%. The per-second cost is 10M cycles * allocation_percent on a 13-node subnet: see the Compute allocation row in the Cost table above for exact figures.
Storage reservation
Section titled “Storage reservation”When a canister grows its memory (via memory.grow, ic0.stable_grow(), or Wasm installation), the system moves cycles from the canister’s main balance into a reserved cycles balance to cover future storage payments.
- If subnet usage is below 750 GiB: reservation per byte = 0 (no advance reservation).
- If subnet usage is above 750 GiB: reservation per byte scales linearly from 0 up to 10 years of payments at subnet capacity (2 TiB).
Reserved cycles are non-transferable. Controllers can disable reservation by setting reserved_cycles_limit = 0, but opted-out canisters cannot allocate new memory when subnet usage exceeds 750 GiB.
Special features
Section titled “Special features”Certain ICP features have additional cycle costs beyond the base execution and messaging fees:
- HTTPS outcalls: See the HTTPS outcalls cost formula above.
- EVM RPC canister: Costs depend on the underlying RPC call and the HTTPS outcall fees above.
- Threshold ECDSA / Schnorr signing: Charged per signing request. Exact cost tables are not yet included on this page.
- Bitcoin integration API: Per-call fees apply. Exact cost tables are not yet included on this page.
Related pages
Section titled “Related pages”- Cycles management: Topping up and monitoring canister balances
- Cycles: Why canisters (not users) pay for execution
- Subnet types: Cost multipliers per subnet type
- Resource limits: Instruction limits, memory caps, and message size constraints