# Adding a \`index\_canister\_id\` endpoint to the ICRC ledger standard

**URL:** <https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177>\
**Category:** Developers\
**Tags:** Discussing, icrc\
**Created:** [May 27, 2025, 8:24pm UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177 "2025-05-27T20:24:01Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![icme](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/icme/32/4327_2.png) [@icme](https://forum.dfinity.org/u/icme)\
**Post date:** [May 27, 2025, 8:24pm UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177/1 "2025-05-27T20:24:01Z")

</div>

Many ledgers suites have a ledger and separate index canister. Applications, such as the NNS Dapp and Dexes keep track of both a token’s ledger and index canister id (if an index canister exists for the token).

The index canister id is already part of the init args of most ICRC ledgers - why don’t they expose a `index_canister_id` query endpoint?

Such an endpoint would allow applications to just keep track of a [single token canister id](https://forum.dfinity.org/t/are-two-canisters-for-a-icrc-ledger-suite-ledger-and-index-still-necessary/42513), comprising both the APIs and functionality of the ledger and index canister. An external application/agent could then dynamically pull in the ledger canister’s corresponding index canister id if it exists instead of requiring users to enter both the ledger and index canister ids for customer tokens on applications like the NNS dapp.

This would also allow developers to experiment with migrating the index canister id or merging the ledger and index canister into a single canister application, such that a ledger canister would return its own canister id from the `index_canister_id` endpoint, and then just expose the required index canister endpoints as well.

---

<div class="post-metadata">

**Author:** ![sea-snake](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/sea-snake/32/7243_2.png) [@sea-snake](https://forum.dfinity.org/u/sea-snake)\
**Post date:** [May 27, 2025, 10:56pm UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177/2 "2025-05-27T22:56:57Z")

</div>

There’s actually a stopgap standard for that (until index canisters have been standardized), but it seems it hasn’t been picked up yet in the ledger implementation.

> <https://github.com/dfinity/ICRC/blob/main/ICRCs/ICRC-106/ICRC-106.md>

---

<div class="post-metadata">

**Author:** ![icme](https://sea1.discourse-cdn.com/flex023/user_avatar/forum.dfinity.org/icme/32/4327_2.png) [@icme](https://forum.dfinity.org/u/icme)\
**Post date:** [May 28, 2025, 6:13am UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177/3 "2025-05-28T06:13:08Z")

</div>

@bogwar do you have a sense of if this standard will be prioritized?

---

<div class="post-metadata">

**Author:** ![mathiasb](https://avatars.discourse-cdn.com/v4/letter/m/f475e1/32.png) [@mathiasb](https://forum.dfinity.org/u/mathiasb)\
**Post date:** [May 28, 2025, 6:43am UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177/4 "2025-05-28T06:43:21Z")

</div>

Good question, and great timing @icme! We have [a PR](https://github.com/dfinity/ic/pull/2857) that we hope to merge in the coming few days, and once the rollout of [the current ICRC ledger suite release](https://github.com/dfinity/ic/releases/tag/ledger-suite-icrc-2025-05-22) is done, we’d create a new release including support for ICRC-106. The ledger controller would need to set the index principal (in the canister upgrade argument), and then user would be able to call the new `icrc106_get_index_principal` endpoint on the ledger to get the canister ID of its index canister.

As @sea-snake mentioned, ICRC-106 is a stopgap standard - @bogwar can perhaps comment further on the timeline for standardizing index canisters in general (ICRC-106 only documents the current behavior of the DFINITY implementation of its ICRC ledger index canister).

---

<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:** [August 8, 2025, 1:05pm UTC](https://forum.dfinity.org/t/adding-a-index-canister-id-endpoint-to-the-icrc-ledger-standard/49177/5 "2025-08-08T13:05:32Z")

</div>

follow up, this is now supported in the Ledger Suite 🙂

> [@ICRC-106 Support in the Ledger Suite](https://forum.dfinity.org/t/icrc-106-support-in-the-ledger-suite/53932):
>
> The ledger canister processes and stores blocks containing transactions while maintaining individual account balances. An associated index canister can be deployed to further process these transactions and provide clients (such as wallets) with a method to retrieve all transactions for specific accounts. Previously, adding a token to a wallet required adding two canister IDs: the ledger canister and its associated index canister. This dual-ID requirement created unnecessary complexity for users…
