Bookkeeping
Exchange-rate gains and losses on crypto revenue
By Robert H.
If you receive 1,000 USDC and convert it to euros two weeks later, the amount that lands in your bank account is rarely the exact amount you booked as revenue when the payment came in.

If you receive 1,000 USDC and convert it to euros two weeks later, the amount that lands in your bank account is rarely the exact amount you booked as revenue when the payment came in. That difference is not a bookkeeping error and it is not a correction to your revenue: it arises on the coin you held in the meantime, not on the work you delivered. Where it belongs in your books, inside revenue or as a separate financial result, depends on your situation, and that is a question for your accountant.
What you can settle for yourself is the mechanism: where the difference comes from, which parts it is made of, and what changes when you hold the coin for months instead of days. How to actually how to actually sell stablecoins for euros is covered in a separate article; this one is about what happens in your books after you have done that.
Why a difference arises at all
Your bookkeeping is in euros, a payment in USDC is not. On receipt you translate it into euros, and on conversion you translate again, at that day's rate. Put seventeen days between those two moments and you have put two different rates between them as well.
With a stablecoin this surprises people, because the coin is called stable. But USDC and USDT are stable against the dollar, not against the euro. As long as the peg holds, 1 USDC is worth roughly one dollar, and the euro value of your balance moves with the euro-dollar exchange rate: usually a few tenths of a percent per week. Small, but visible the moment you write it down in euros.
Economically, none of this is exotic. Between receipt and conversion you held an asset denominated in a foreign currency, and it became worth more or less in euros. That is a different kind of result from your revenue: revenue comes from the work you did, this comes from holding a coin.
The worked example: 1,000 USDC received on 3 August, converted on 20 August
Say you invoice a job on 28 July for 1,000 USDC. I am leaving VAT out of the example: you settle VAT in euros on the invoice amount, and what the rate does afterwards changes nothing about that.
On 28 July, your fixed rate source puts 1 USDC at € 0.8630. So the invoice sits in your books at € 863.00, as revenue and as a receivable.
On 3 August the payment arrives: 1,000 USDC in your wallet, at a rate of € 0.8600, so worth € 860.00. A receivable of € 863.00 is settled by a receipt of € 860.00. Three euros are left over with nowhere to go, and that is the first difference.
On 20 August you convert the 1,000 USDC into euros. The rate is € 0.8480, so € 848.00 gross. The conversion costs you € 2.12 in fees and spread. What arrives in your bank account is € 845.88.
Add it up and the route from invoice to bank looks like this. You recognised € 863.00 of revenue. € 845.88 reached the bank. The € 17.12 difference is made of three pieces with three different origins: € 3.00 of rate movement between invoice date and receipt, € 12.00 of rate movement between receipt and conversion, and € 2.12 of direct cost. Keep those three apart in your records, precisely because they may be treated differently.
Two exchange differences, not one
The € 3.00 and the € 12.00 look alike but arise on different things. The first arises on a receivable: you were owed an amount denominated in a foreign currency, and by the time it arrived it was worth slightly less in euros. The second arises on an asset you already owned: you held the coin, and it lost euro value while you held it.
Whether the first difference arises for you at all depends on which moment you have chosen as your translation moment. Translate on invoice date and you get this difference. Recognise on receipt and it disappears, leaving only the second. What matters is that you pick one, write it down and apply it for the whole year. Which one is right for you is something your accountant tells you.
Is it revenue, or a separate financial result?
This is the core question, and the honest answer is that it depends on your situation. What is not in doubt is the economics: on 3 August the job was finished, the price was fixed and the payment had arrived. Everything the rate did afterwards has nothing to do with that job, so the amount you recognised as revenue generally does not get revised after the fact.
That argues for treating the difference as a separate result on holding a coin, distinct from your revenue. But the precise classification, and how it flows through your annual accounts and your return, depends on your legal form, the size of your positions, your valuation basis and how the rest of your bookkeeping is set up. It is the kind of question you can settle once, by email, with your accountant, and then apply consistently all year. For the wider picture, see how tax on stablecoins works in the Netherlands.
What if the difference is negative?
In the example the difference is negative: you held € 860.00 and converted it for € 848.00. That is not a different kind of event from a gain, it is the same event with the opposite sign. Over the same year you will have months where the euro-dollar rate moves the other way.
What you should not do is record only the losses and quietly leave the gains, or the reverse. Treat both directions the same way. Whether a negative difference is deductible, and where it lands in your result, is again a question for your accountant.
What changes if you hold for months?
As long as you convert within days or weeks, the difference is small. Hold the coin longer and something genuinely changes.
First, a year-end runs through it. If you do not convert the 1,000 USDC and the rate on 31 December is € 0.8720, your balance is worth € 872.00 against the € 860.00 at which it came in. That € 12.00 difference is unrealised, you have not sold anything. Whether and how you reflect it in your year-end close ties into your valuation basis, and there is more than one defensible choice. Settle that before the year-end close, not after it.
Second, the scale changes as soon as the coin is not a stablecoin. The same € 860.00 received in bitcoin can be worth substantially more or less four months later. A difference smaller than your transaction fees in USDC is an amount you feel in your result in BTC.
Third, holding longer raises a question that quick conversion does not: does that coin still belong to your business, or is it something you now hold privately? For a sole trader that is an asset-allocation question with real consequences; for a limited company it works differently. The right treatment depends on the facts and circumstances, so put it to your adviser.
What you should record regardless
However your accountant classifies it, the record-keeping is your job. For every payment, record the amount in the coin, the date and time, the rate you used and its source, and the euro amount that follows. For every conversion, record the same, plus the net euro proceeds and the costs separately. If those two series are right, any exchange difference is a subtraction.
General information, not tax advice
This article explains how an exchange difference arises and which questions determine its treatment. It is explicitly not tax or accounting advice. How you handle such a difference in your own books and returns depends on your legal form, your valuation basis, and the size and nature of your positions. Put the choices raised here, your translation moment, the classification of the difference, unrealised differences, and whether coins held longer belong to your business, to your accountant or tax adviser once, and then apply the answers consistently.
stbl admin records the first half of that work automatically: every incoming transaction is valued in euros against a fixed rate source, with date, time and transaction hash attached, and matched to its invoice. In the export, the euro amount at receipt sits next to what actually came out, so the difference is visible instead of reconstructed afterwards. Your keys stay yours, stbl admin is non-custodial. Pro costs € 49 per month excluding VAT.
See the exchange difference instead of reconstructing it
stbl admin values every incoming transaction in euros at the transaction timestamp, stores the rate and its source, and shows it next to what actually came out. Non-custodial, export-ready for your bookkeeper.
Get started