# How does "anyone can top-up a canister" actually work?

**URL:** <https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406>\
**Category:** Developers\
**Created:** [February 20, 2025, 8:14am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406 "2025-02-20T08:14:24Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Seb](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/seb/32/10340_2.png) [@Seb](https://forum.dfinity.org/u/Seb)\
**Post date:** [February 20, 2025, 8:14am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/1 "2025-02-20T08:14:24Z")

</div>

From the docs: [Topping Up a Canister](https://internetcomputer.org/docs/current/developer-docs/smart-contracts/topping-up/topping-up-canister#basic-rules)

> “Anyone can top up any canister on ICP; you just need the canister’s principal.”

How exactly does this work? Does it always go through the Cycles Minter Canisters (CMC)?

More precisely: If a canister has no method to accept cycles, will monitoring CMC blocks reliably show when it gets topped up?

---

<div class="post-metadata">

**Author:** ![marc0olo](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/marc0olo/32/17290_2.png) [@marc0olo](https://forum.dfinity.org/u/marc0olo)\
**Post date:** [February 20, 2025, 9:13am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/2 "2025-02-20T09:13:26Z")

</div>

if I understand correctly, your main question is if there is a reliable way to identify **ALL** cycle top ups to specific canisters, right?

is your goal to monitor cycles top ups to a specific canister (or multiple)?

---

<div class="post-metadata">

**Author:** ![Seb](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/seb/32/10340_2.png) [@Seb](https://forum.dfinity.org/u/Seb)\
**Post date:** [February 20, 2025, 9:25am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/3 "2025-02-20T09:25:17Z")

</div>

Exactly!

I’m interested to by both scenario.

---

<div class="post-metadata">

**Author:** ![mraszyk](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/mraszyk/32/7945_2.png) [@mraszyk](https://forum.dfinity.org/u/mraszyk)\
**Post date:** [February 20, 2025, 9:29am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/4 "2025-02-20T09:29:36Z")

</div>

> [@Seb](#):
>
> will monitoring CMC blocks reliably show when it gets topped up

no, because any canister can use the mgmt canister’s deposit\_cycles method to top up any other canister without a trail of that top-up.

---

<div class="post-metadata">

**Author:** ![Manu](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/manu/32/3999_2.png) [@Manu](https://forum.dfinity.org/u/Manu)\
**Post date:** [February 20, 2025, 9:46am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/5 "2025-02-20T09:46:43Z")

</div>

So @mraszyk explained how

> Anyone can top up any canister on ICP; you just need the canister’s principal.

is realized. You seem to also be interested in somehow tracking all top ups to a canister, which is currently not possible. Do you have some use case in mind that would require this insight?

---

<div class="post-metadata">

**Author:** ![Vivienne](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/vivienne/32/29170_2.png) [@Vivienne](https://forum.dfinity.org/u/Vivienne)\
**Post date:** [February 20, 2025, 10:18am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/6 "2025-02-20T10:18:23Z")

</div>

I can think of a few use cases:

- Accurate accounting. If I’m trying to measure cycles burn and someone can randomly send my canister cycles without me being aware of it then my measurements break
- Auditability
- Preventing user error. If someone deposits cycles to the cycles ledger using `deposit_cycles` instead of the dedicated endpoint I would like to be able to credit their account with the cycles

---

<div class="post-metadata">

**Author:** ![Seb](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/seb/32/10340_2.png) [@Seb](https://forum.dfinity.org/u/Seb)\
**Post date:** [February 20, 2025, 10:30am UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/7 "2025-02-20T10:30:46Z")

</div>

The use-case I have in mind is to enable multiple canisters to plug into a common cycle pool (kinf of a cycle dao [Completed: ICDevs.org - Bounty #17 - A DAO for Cycles - $10,000 - ht: cycle\_dao](https://forum.dfinity.org/t/completed-icdevs-org-bounty-17-a-dao-for-cycles-10-000-ht-cycle-dao/11427) ) and share a token to access the common resources. This serves as foundation for other public services but the broader vision only works if they are no other ways for the involved canisters to access cycles, otherwise they would be in a position to take advantage of the system.

Plus all of what @Vivienne mentioned

---

<div class="post-metadata">

**Author:** ![basvandijk](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/basvandijk/32/5790_2.png) [@basvandijk](https://forum.dfinity.org/u/basvandijk)\
**Post date:** [February 20, 2025, 3:51pm UTC](https://forum.dfinity.org/t/how-does-anyone-can-top-up-a-canister-actually-work/41406/8 "2025-02-20T15:51:07Z")

</div>

Another use case I can imagine is for tax purposes. If someone gives you something of value with no expectation of repayment, it is considered a gift where the receiver is taxed in many jurisdictions. I am not a tax lawyer but I can imagine that you need to pay gift tax for any cycles you receive as a gift for any canister you control.
