
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
@dfinity/ledger-icrc
Advanced tools
A library for interfacing with ICRC ledgers on the Internet Computer.
A library for interfacing with ICRC ledger on the Internet Computer.
You can use ledger-icrc-js by installing it in your project.
npm i @dfinity/ledger-icrc
The bundle needs peer dependencies, be sure that following resources are available in your project as well.
npm i @icp-sdk/core @dfinity/utils
The features are available through the class IcrcLedgerCanister. It has to be instantiated with a canister ID.
e.g. fetching a token metadata.
import { IcrcLedgerCanister } from "@dfinity/ledger-icrc";
import { createAgent } from "@dfinity/utils";
const agent = await createAgent({
identity,
host: HOST,
});
const { metadata } = IcrcLedgerCanister.create({
agent,
canisterId: MY_LEDGER_CANISTER_ID,
});
const data = await metadata({});
ledger-icrc-js implements following features:
Encodes an Icrc-1 account compatible into a string. Formatting Reference: https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/TextualEncoding.md
| Function | Type |
|---|---|
encodeIcrcAccount | ({ owner, subaccount, }: IcrcAccount) => string |
Parameters:
account: : Principal, subaccount?: Uint8Array }Returns:
string
Decodes a string into an Icrc-1 compatible account. Formatting Reference: https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-1/TextualEncoding.md
| Function | Type |
|---|---|
decodeIcrcAccount | (accountString: string) => IcrcAccount |
Parameters:
accountString: stringReturns:
IcrcAccount { owner: Principal, subaccount?: Uint8Array }
Maps the token metadata information from a ledger response into a structured record.
This utility processes an array of metadata key-value pairs provided by the ledger
and extracts specific fields, such as symbol, name, fee, decimals, and logo. It then
constructs a IcrcTokenMetadata record. If any required fields are missing,
the function returns undefined.
| Function | Type |
|---|---|
mapTokenMetadata | (response: IcrcTokenMetadataResponse) => IcrcTokenMetadata or undefined |
Parameters:
response: - An array of key-value pairs representing token metadata.Returns:
undefined if required fields are missing.👀 This feature is currently in draft. You can find more information about it at https://github.com/dfinity/ICRC/issues/22.
A naive implementation of a payment parser. Given a code, the function attempts to extract a token name, account identifier (textual representation), and an optional amount.
If the code doesn't match the expected pattern, undefined is returned for simplicity.
Similarly, if an optional amount is provided but it's not a valid number, the parser will not throw an exception and returns undefined.
Please note that this function doesn't perform any validity checks on the extracted information. It does not verify if the token is known or if the identifier is a valid address.
urn = token ":" address [ "?" params]
token = [ ckbtc / icp / chat / bitcoin / ethereum ... ]
address = STRING
params = param [ "&" params ]
param = [ amountparam ]
amountparam = "amount=" *digit [ "." *digit ]
| Function | Type |
|---|---|
decodePayment | (code: string) => { token: string; identifier: string; amount?: number or undefined; } or undefined |
Parameters:
code: stringReturns:
: string; identifier: string; amount?: number } | undefined
Returns the balance for a given account provided as owner and with optional subaccount.
| Method | Type |
|---|---|
balance | (params: BalanceParams) => Promise<bigint> |
Parameters:
params: The parameters to get the balance of an account.Returns:
The balance of the given account.
| Method | Type |
|---|---|
create | (options: IcrcLedgerCanisterOptions<_SERVICE>) => IcrcLedgerCanister |
The token metadata (name, symbol, etc.).
| Method | Type |
|---|---|
metadata | (params: QueryParams) => Promise<IcrcTokenMetadataResponse> |
The ledger transaction fees.
| Method | Type |
|---|---|
transactionFee | (params: QueryParams) => Promise<bigint> |
Returns:
The ledger transaction fees in Tokens
Returns the balance for a given account provided as owner and with optional subaccount.
| Method | Type |
|---|---|
balance | (params: BalanceParams) => Promise<bigint> |
Parameters:
params: The parameters to get the balance of an account.Returns:
The balance of the given account.
Transfers tokens from the sender to the given account.
| Method | Type |
|---|---|
transfer | (params: TransferParams) => Promise<bigint> |
Parameters:
params: The parameters to transfer tokens.Returns the total supply of tokens.
| Method | Type |
|---|---|
totalTokensSupply | (params: QueryParams) => Promise<bigint> |
Transfers a token amount from the from account to the to account using the allowance of the spender's account (SpenderAccount = { owner = caller; subaccount = spender_subaccount }). The ledger draws the fees from the from account.
Reference: https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-2/README.md#icrc2_transfer_from
| Method | Type |
|---|---|
transferFrom | (params: TransferFromParams) => Promise<bigint> |
Parameters:
params: The parameters to transfer tokens from to.This method entitles the spender to transfer token amount on behalf of the caller from account { owner = caller; subaccount = from_subaccount }.
Reference: https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-2/README.md#icrc2_approve
| Method | Type |
|---|---|
approve | (params: ApproveParams) => Promise<bigint> |
Parameters:
params: The parameters to approve.Returns the token allowance that the spender account can transfer from the specified account, and the expiration time for that allowance, if any.
Reference: https://github.com/dfinity/ICRC-1/blob/main/standards/ICRC-2/README.md#icrc2_allowance
| Method | Type |
|---|---|
allowance | (params: AllowanceParams) => Promise<Allowance> |
Parameters:
params: The parameters to call the allowance.Returns:
The token allowance. If there is no active approval, the ledger MUST return { allowance = 0; expires_at = null }.
Fetches the consent message for a specified canister call, intended to provide a human-readable message that helps users make informed decisions.
| Method | Type |
|---|---|
consentMessage | (params: Icrc21ConsentMessageParams) => Promise<icrc21_consent_info> |
Parameters:
params: - The request parameters containing the method name, arguments, and consent preferences (e.g., language).Returns:
Fetches the blocks information from the ledger canister,
| Method | Type |
|---|---|
getBlocks | (params: GetBlocksParams) => Promise<GetBlocksResult> |
Parameters:
params: The parameters to get the blocks.Returns:
The list of blocks.
Returns the principal of the index canister for the ledger, if one was defined as such.
| Method | Type |
|---|---|
getIndexPrincipal | (params: QueryParams) => Promise<Principal> |
Returns:
The principal of the index canister.
Returns the list of standards this ledger supports by using icrc1_supported_standards.
| Method | Type |
|---|---|
icrc1SupportedStandards | (params: QueryParams) => Promise<StandardRecord[]> |
Returns:
The list of standards.
Returns the list of standards this ledger supports by using icrc10_supported_standards.
| Method | Type |
|---|---|
icrc10SupportedStandards | (params: QueryParams) => Promise<{ url: string; name: string; }[]> |
Returns:
The list of standards.
Returns the minting account of the Ledger canister.
| Method | Type |
|---|---|
getMintingAccount | (params: QueryParams) => Promise<Nullable<Account>> |
Returns:
The minting account as a Nullable object.
| Method | Type |
|---|---|
create | (options: IcrcLedgerCanisterOptions<_SERVICE>) => IcrcIndexCanister |
Get the transactions of an account
Always certified.
get_account_transactions needs to be called with an update
because the index canisters makes a call to the ledger canister to get the transaction data.
Index Canister only holds the transactions ids in state, not the whole transaction data.
| Method | Type |
|---|---|
getTransactions | (params: GetAccountTransactionsParams) => Promise<GetTransactions> |
Returns the ledger canister ID related to the index canister.
| Method | Type |
|---|---|
ledgerId | (params: QueryParams) => Promise<Principal> |
| Method | Type |
|---|---|
create | (options: IcrcLedgerCanisterOptions<_SERVICE>) => IcrcIndexNgCanister |
Get the transactions of an account.
| Method | Type |
|---|---|
getTransactions | ({ certified, ...rest }: GetIndexNgAccountTransactionsParams) => Promise<GetTransactions> |
Parameters:
params: The parameters to get the transactions of an account.Returns:
The list of transactions and further related information of the given account.
Returns the ledger canister ID related to the index canister.
| Method | Type |
|---|---|
ledgerId | (params: QueryParams) => Promise<Principal> |
Returns the status of the index canister.
| Method | Type |
|---|---|
status | (params: QueryParams) => Promise<Status> |
Parameters:
params: The parameters to get the status of the index canister.Returns:
The status of the index canister.
Returns the list of subaccounts for a given owner.
| Method | Type |
|---|---|
listSubaccounts | ({ certified, ...rest }: ListSubaccountsParams) => Promise<SubAccount[]> |
Parameters:
params: The parameters to get the list of subaccounts.Returns:
The list of subaccounts.
FAQs
A library for interfacing with ICRC ledgers on the Internet Computer.
The npm package @dfinity/ledger-icrc receives a total of 6,315 weekly downloads. As such, @dfinity/ledger-icrc popularity was classified as popular.
We found that @dfinity/ledger-icrc demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 8 open source maintainers collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.