Tax reports on Internet Computer

How do you guys, DFINITY employees / investors do your tax reports?? I’m worried there is NO tool for this purpose on the market. Is there any plans to make this work easy??

I dont know guys if you take in account what a HUUUUGE DRAWBACK this is for new investors.
Can anybody explain me why are we not integrated with tools such as KOINLY .IO ?

1 Like

Yep have to agree this is an essential addition for the ecosystem


Honestly it would be nice if there could be some kind of excel download from the NNS dApp. There can’t be tax advice, obviously. But just a download of historic transactions (disburse date, time etc) would be amazing.


Not professional financial advice, but personally I manually keep a spreadsheet and track

  • every time I send ICP from my wallet (spending)
  • disbursing spawning neurons from maturity (income)
  • merging maturity (spending)

as taxable events that I report. It’s definitely a pain


A task related to this matter is actually already present in the NNS Dapp backlog. I’ve forwarded the community’s desire for this feature and have even advocated for its importance internally few times. It hasn’t been assigned a priority so far.


Well do you guys think institutional investors/traders that can perform thousands of transactions in a month are happy with doing it “by hand”?

This is a basic and needed feature if we want Defi to kick-off. Nobody is going to invest on ICP ecosystem while this feature is not done.

1 Like

I personally ended up building a tool to help me with generating tax-related reports. Check out GitHub - ielashi/icp-accountant: Your personal accountant for all things ICP.

It’s quite basic, but it was enough for me to generate the data I need for tax returns. I don’t have a whole lot of time to improve it, but contributions are very welcome :slight_smile:


Hello, gatsby_esp.

I’ve noticed that you’ve recently asked several questions regarding taxes. ICP currently lacks a platform similar to KOINLY for tax reporting. This could be due to the unique nature of ICP, with an interface completely distinct from other blockchains, leading to challenges in integrating with KOINLY.

However, coincidentally, I have some free time recently. My colleagues and I are quite intrigued by applications in this direction, so we’ve decided to initiate development in this area. Based on my plans, could you provide some advice?

  1. Develop a user-friendly UI.
  2. Track the transaction history of ICP wallets, calculate earnings from NNS neurons, and provide data on profit changes, allowing the option to export it as a CSV file.
1 Like

There needs to be the ability to sync transactions from all your wallets, Lets say you have NNS, Stoic, Plug and Binance. You want to be able to generate a single spread sheet, you need Buys, sells, ( including NFT buys and sells as a seperate line item ) transfers, staked, unlocked, spawned. You want Sheets with you SNS tokens as well. You need value in the day in currency of choice. You need a running total in ICP and fiat and an option of a total purchase price.

I’ve done all this my hand for the last 2 years and am about to do it again for the next tax year in UK. Its exhausting and time consuming right now and puts me off buying


Thanks for the reply, it’s very informative for me to build the dapp!
These things don’t look too hard, but they are more work.
Rome wasn’t built in a day.
So I’m going to start with individual features and gradually build the rest.
In my mind, the wallet address statistics have the highest priority.
I’ve now finished working on wallet related stats and am going to work on neuron related income calculations.
The first functional goal of the Demo is: to count the data corresponding to each transaction of a wallet address with profit/loss data, just like koinly.
But since the cycles expense of calling exchange rate data from ICP Ledger jar is expensive, I am going to use Binance’s historical data as a reference for ICP coin price.


Hey all.

We at rotki: want to support dfinity for balances and profit tracking. We would love to apply for a dfinity grant to implement it. The issues in our tracker are: Support ICP neuron voting tracking and rewards · Issue #3084 · rotki/rotki · GitHub and Support ICP chain · Issue #3083 · rotki/rotki · GitHub

The problem I have right now is that we are not sure how much work it is or if it is even possible as last time I had asked in the dfinity telegram channel there was no good way to get all history for a number of addresses/neurons since launch.

So the question is:

What kind of APIs exist to query information? Such as:

  • What neurons belong to a given address?
  • Current balance in ICP of a number of neurons
  • Current balance in ICP of a number of addresses
  • Given an address query all historical actions. Mainly regarding neurons and voting. Such as extending age of a neuron, disbursing, dissolving, spawning etc
  • Generally all other information you would need for proper tracking and accounting.
    Such as how much ICP they have and what neurons they own?

guys at Dfinity, this is not acceptable.
PLEASE, no tax reports, no investors.

1 Like

This is not financial or tax advice.

This was a concern of mine before i created a neuron. So my approach was a little more simplistic but restricts me in use case on the blockchain. I decided to use a CEX where i can track my liabilities and I only make my ICP purchases, conversions and sales to fiat on that specific exchange. Which leaves me only needing to track my neurons.

That said I would love to see something implemented that supports this idea. And if was a resource downloadable directly from the NNS as suggested above that would likely catch on fast as there is no 3rd party intermediary handling any given entities tax info.

I know personally if i didnt have to rely on the CEX to track things I would definately move funds from other blockchains to support DeFi here.


Hi @LefterisJP and @e274426380 ,

Glad to see theres some interest in creating a solution for this! I’m one of the engineers on the NNS team and can provide some insight on the APIs and source of some data. Hopefully this can serve as a base for you and the community to build these dapps.

I’ll answer @LefterisJP 's questions here, but perhaps if this requires a longer form discussion I will consider a blog post. Note, just like @peterparker said, my team also has a backlog item for recording neuron operations for audits so some information is not historically accessible. Rest assured though, I believe most tax information can be tracked via ledger transactions.

  • What neurons belong to a given address?

For both the NNS and SNS, you can identify a neuron by its account on the respective ledger (NNS uses the ICP ledger to back NNS neurons, while SNS neurons are backed on the SNSes ledger). The NNS Neuron uses a random number for its id while the id of an SNS neuron is the subaccount used to determine its account.

The account of a neuron is calculated as follows:

For ICP Ledger, the AccountIdentifier is a 32-byte array that is a hash of a Principal and subaccount. The Principal is the NNS governance canister id (rrkah-fqaaa-aaaaa-aaaaq-cai) and the subaccount is a hash of the user’s principal id and a unique memo (the memo allows for a principal to own multiple neurons).

AccountIdentifier=hash(governance_canister_id, hash(user_principal, unique_memo))

For SNS Ledgers, the Account is an ICRC construct that removed the first hashing function, and is parameterized on each individual SNS Governance canister id.

Account=(sns_governance_canister_id, hash(user_principal, memo))
  • Current balance in ICP of a number of neurons

This is also variable. You can look directly at the ICP ledger or SNS ledger account, but that might not paint the full picture. This should be combined with looking directly at the neuron and inspecting its maturity balance and its neuron_fees. In the SNS, all of this information is public, but in the NNS this information is privileged. If this is a dapp, the dapp canister can be added as a hotkey to each neuron to collect this information.

I’d also be happy to provide the APIs to inspect neurons.

  • Current balance in ICP of a number of addresses

This is already possible by getting the balance from a ledger once you know the identifier.

  • Given an address query all historical actions. Mainly regarding neurons and voting. Such as extending age of a neuron, disbursing, dissolving, spawning etc

Some of this Neuron information can be built by polling the neuron with the right permission, but a historical audit trail is not currently available. Some of this information can be detected by inspecting the ledger account of a neuron. The ICP Index will be helpful to inspect historic ICP transactions. I’d be happy to expand on that if needed.

  • Generally all other information you would need for proper tracking and accounting.
    Such as how much ICP they have and what neurons they own?

Tracking some of this information is possible with the consent of the user. I think I’ve outlined some of the methods to achieve this above, but if there are more precise requests for how find this data I could add more detail.


One of the troublesome points at the moment is that historical information about neurons is difficult to obtain, which makes it difficult to count users’ profits from neurons.

1 Like