For AI agents: Documentation index at /llms.txt

Skip to content

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.

AbbreviationNameIn numbersXDR valueApprox. USD value
TTrillion1_000_000_000_0001~$1.35
BBillion1_000_000_0000.001~$0.00135
MMillion1_000_0000.000001~$0.00000135
kThousand1_00010⁻⁹~$0.00000000135

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.

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.

OperationDescriptionWho pays13-node cycles~USD (May 2025)34-node cycles~USD (May 2025)
Query callQuery information from a canisterN/AFreeFreeFreeFree
Canister creationCreate a new canisterCreated canister500_000_000_000~$0.6771_307_692_307_692~$1.772
Compute allocation (per % per second)Reserved compute per secondCanister with allocation10_000_000~$0.000013526_153_846~$0.0000354
Update message executionPer update message executed (base fee)Target canister5_000_000~$0.000006813_076_923~$0.0000177
1B instructions executedPer 1B Wasm instructions (on top of base fee)Executing canister1_000_000_000~$0.001352_615_384_615~$0.00354
Xnet call (request + response)Inter-canister call overheadSending canister260_000~$0.00000035680_000~$0.00000092
Xnet byte transmissionPer byte in inter-canister callSending canister1_000~$0.000000001352_615~$0.00000000354
Ingress message receptionPer ingress message receivedReceiving canister1_200_000~$0.00000163_138_461~$0.0000043
Ingress byte receptionPer byte in ingress messageReceiving canister2_000~$0.00000000275_230~$0.0000000071
GiB storage per secondStorage cost per GiB per secondCanister with storage127_000~$0.000000172332_153~$0.000000450

Storage cost per GiB per month (30 days):

SubnetCycles~USD (May 2025)
13-node~329 billion~$0.45
34-node~861 billion~$1.70

HTTPS outcall costs scale with subnet size (n = number of nodes):

total_fee = base_fee + size_fee
base_fee = (3_000_000 + 60_000 * n) * n
size_fee = (400 * request_bytes + 800 * max_response_bytes) * n

request_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.

Component13-node cycles~USD (May 2025)34-node cycles~USD (May 2025)
Per call (base)49_140_000~$0.0000666171_360_000~$0.000232
Per request byte5_200~$0.00000000713_600~$0.0000000184
Per reserved response byte10_400~$0.00000001427_200~$0.0000000369

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_instructions

Current 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)

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.

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.

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.