Crypto profit and ROI calculator
Enter a buy price, a sell price, a quantity and the total fees, and this calculator returns the amount invested, the proceeds, the profit and the return on investment. It runs entirely in your browser, saves nothing and needs no login. It is a trade-level economic result, not a taxable gain.
General information, not accounting or tax advice. Figures are indicative only. Verify against the applicable standards (IFRS / US GAAP), your jurisdiction's rules and your auditor.
Plain profit and ROI on one position, not a taxable gain and not tax advice. Your taxable gain depends on the cost-basis method applied, which lot the disposal is matched to, and the rules of the jurisdiction the entity reports in.
What the calculator computes
The arithmetic is deliberately plain, so you can check it against your own working paper in a few seconds:
| Figure | How it is calculated |
|---|---|
| Invested | Buy price per unit multiplied by quantity |
| Proceeds | Sell price per unit multiplied by quantity |
| Profit | Proceeds less invested less total fees |
| ROI | Profit divided by invested, shown as a percent |
Fees are taken as one total figure and subtracted once. That is the simplification the tool makes on purpose. In a real ledger the acquisition fee and the disposal fee behave differently: a fee paid to acquire generally increases the recorded cost basis of the asset, while a fee paid to dispose generally reduces net proceeds. Both end up reducing the gain, which is why a single combined figure gets you to the same profit number here, but they land in different places when the event is actually posted.
What this tool cannot do
State it plainly, because the difference matters at close:
- It does not produce a taxable gain. The taxable figure depends on the cost-basis method you apply, on which specific lot the disposal is matched against, and on the rules of the jurisdiction the entity reports in.
- It assumes a single uniform buy price. Real holdings are usually a stack of lots acquired at different prices on different dates. One average price does not tell you which of those lots left the books.
- It has no memory and no data. It reads no wallet, no exchange account and no price feed. Every number is one you typed, and nothing is stored between calculations.
- It does not classify the event. A sale, a crypto-for-crypto swap, a payment made in tokens and a fee settled in the native asset can all be disposals, and they do not post the same way.
- It handles one trade at a time. It will not net a period, carry basis across a transfer between your own wallets, or reconcile anything.
For the figure that actually goes on the books, use the crypto cost-basis calculator and read how the methods differ in cost basis methods.
Where it is genuinely useful
Sense-checking. A trader or a portfolio manager quotes a return; you want to know in ten seconds whether the number is plausible before you go looking for the underlying fills. Or a client sends a one-line summary of a disposal and you want the gross economics before you decide how much work the lot matching will be. It is also a clean way to show someone non-technical why fees matter: put the fee total in, watch the ROI move, and the conversation about capitalising acquisition costs gets much shorter.
Reading the ROI figure
ROI here is profit over invested capital, expressed as a percent. It is not annualised, so a 20 percent return over four years and a 20 percent return over four weeks look identical. It also ignores everything that is not in the four inputs: no funding costs, no custody or subscription costs, no unrealised movement on the rest of the position, no currency translation if the entity's functional currency differs from the quote currency. Treat it as a ratio of the trade you described, nothing wider.
From one trade to a set of books
The gap between this calculator and an entity's accounts is the whole of the sub-ledger. Across a period you have to identify every disposal, match each one to specific lots under a consistent policy, treat internal transfers as transfers rather than sales, price events in the reporting currency at the right moment, split acquisition fees into basis and expense the rest by policy, and produce postings that a reviewer can trace back to a transaction hash or an exchange fill.
CryptaCount does that across 90+ blockchain networks and 100+ exchange and wallet connectors, with 12 disposal cost-basis methods, IFRS and US GAAP ledgers, and 72 tax jurisdictions mapped. The postings it produces are described in crypto journal entries, and the reporting layer is in compliance reporting.
If your question is about an individual rather than an entity, CryptaTax is the sister product for personal filings.
FAQ
Is the profit shown here the taxable gain?
No. It is the economic result of the trade as you described it. The reportable gain depends on the cost-basis method applied, which specific lot the disposal is matched against, and the rules of the jurisdiction the entity reports in.
How are fees treated in the calculation?
As one total, subtracted once from the profit. In a ledger the split matters: an acquisition fee generally increases the asset's cost basis, while a disposal fee generally reduces net proceeds. Both reduce the gain, but they post to different places.
Can I use it when the position was bought in several lots?
Only as an approximation, by entering an average buy price. It cannot tell you which lots a disposal consumed, and under most methods that choice changes the basis relieved and therefore the gain.
Does anything I type leave the browser?
No. The calculation runs locally on the page, nothing is uploaded, nothing is stored, and no login is required. Reloading the page clears the inputs.