Austria requires the gleitender Durchschnittspreis for crypto, not FIFO. Here's how the moving-average basis works and why it complicates withholding.
If you're withholding Austrian KESt on crypto, the rate is the easy part. The hard part is the number you apply it to, the gain, and that depends entirely on cost basis. Austria doesn't let you pick your method: it mandates the moving-average price, and that single rule reshapes how a withholding engine has to work.
The moving-average price, the gleitender Durchschnittspreis. You keep a running average cost per asset that is recomputed on each acquisition, and gains are measured against that average rather than against specific purchase lots. FIFO is not permitted.
It has to be recalculated on every acquisition, in order, across every venue and wallet where the user holds the asset. A missed inbound transaction or out-of-order processing corrupts the average and makes every subsequent withheld amount wrong.
KESt is 27.5% of the gain, and the gain depends on cost basis. Because withholding is final under Endbesteuerung, the moving-average basis has to be correct at the moment of disposal, with no later reconciliation to fix an error.
Austrian providers must withhold 27.5% KESt on crypto gains. Here's what triggers it, how the moving-average basis works, and how to automate the filing.
Withhold KESt at source and your users' crypto tax is final, no return needed. Use a foreign provider and they self-declare. Here's why the difference matters.
CARF due diligence starts at signup. Here's how self-certification, reasonableness checks, and TIN validation fit into a CASP onboarding flow.
Generate an audit-ready report aligned to your jurisdiction. No credit card required.
The gleitender Durchschnittspreis is a running average cost per asset. Every time a user acquires more of a given crypto, you blend the new purchase into a fresh average across their whole holding of it. When they later dispose, the gain is measured against that average, not against any specific lot. It's the same logic Austria applies to securities.
FIFO just needs an ordered list of purchases; you match disposals against the oldest first. A moving average has to be recomputed on every acquisition, in the right order, across every venue and wallet the user holds that asset on. Miss one inbound transaction, or process events out of order, and the average is wrong, which means the withheld KESt is wrong from that point forward.
The average is per asset per user, but users don't keep an asset in one place. A single user's ETH might sit across your platform and several external wallets. To compute a correct average you need a consolidated, deduplicated view of every acquisition, which is a data problem before it's a tax one.
Because withholding happens at the moment of disposal and is final under Endbesteuerung, there's no annual reconciliation to catch an error later. The average has to be right in real time. Our tax withholding solution maintains the moving-average basis per user per asset across all their sources, so the gain you withhold on is the gain Austria actually recognises. It shares a data layer with our CARF and DAC8 reporting, and the Austrian Federal Ministry of Finance publishes the underlying rules.