guides20 min read

Ethereum Journal Entries: A Complete Worked Example

A worked Ethereum example: journal entries for receipts, purchases, gas, staking rewards, a failed transaction, IFRS impairment and US GAAP fair value.

M

Maksym Buhai

Accounting Engineer

August 18, 2026 · 20 min read

Cover reading "One quantity. Two carrying amounts.", beside a solid charcoal panel stacked above a slightly narrower panel of the same height drawn in a dashed violet outline

These Ethereum journal entries are the integration test for the Ethereum accounting series. The example applies the mechanics and policies developed elsewhere to one internally consistent fact pattern, and every material item in it has to survive the same chain from protocol event to posted entry.

The event-by-event procedure it applies is set out in How to Account for Ethereum Transactions, and the fact pattern covers:

  • a service receivable settled in ETH;
  • an ETH purchase and exchange withdrawal fee;
  • native staking deposit and gas;
  • a failed transaction;
  • consensus-layer staking rewards;
  • an execution-layer validator reward;
  • an ETH sale;
  • an EIP-7002 withdrawal request;
  • a later validator withdrawal with no transaction hash;
  • IFRS period-end impairment; and
  • a US GAAP ASC 350-60 fair-value bridge.

The reader should be able to trace every material item through:

event -> protocol evidence -> exact ETH quantity -> accounting lot -> valuation -> journal entry -> remaining position

The arithmetic below was independently re-footed for this standalone version. The four execution gas fees total 0.000704498368 ETH. The closing quantity independently recomputes to 32.726730991631999999 ETH, and at the stated $2,966.84 year-end price the unrounded fair value is $97,094.974575..., presented as $97,094.97.

The Ethereum journal entries below assume the wider workflow is already in place. If it is not, our crypto accounting guide covers it, the glossary entries for journal entry and cost basis define the two records every posting touches, and gas fees are the Ethereum-specific cost that every entry below has to carry.

Facts and policies behind these Ethereum journal entries

Fungible, in two places. The accounting lot is a quantity of ETH with an acquisition date and a basis. It is not an address, and it is not a validator. This holder stakes natively, so their ETH sits in two ledgers at once, and the lot ledger has to span both.

Ben keeps the books for Halden Software Ltd, a small development studio used here because the example needs IFRS and US GAAP financial statements, a customer invoice and a validator that Halden runs itself. The same mechanics apply to an individual holding native ETH. Where tax treatment differs by taxpayer type or jurisdiction, use the relevant Canada, United States or United Kingdom tax article rather than the financial-reporting entry shown here.

Halden has a US-dollar functional currency, keeps its records and books of account in US dollars, and is resident in Canada for tax purposes. It has made the functional-currency election in section 261 of the Income Tax Act, with US dollars as its elected functional currency, so its Canadian tax results and its books are stated in the same currency; Ethereum Tax in Canada sets out the conditions and the filing deadline. Residence does nothing to the accounting below, and everything to the tax-accounting and guidance-gap discussion: Canada requires weighted-average adjusted cost base, so Halden's tax pool and its book lot ledger diverge from the first purchase onwards.

It is assumed that Halden holds its ETH on capital account and includes its staking rewards in income as they are earned. Neither assumption is free, and both are disclosed as assumptions. Capital account is a facts-and-conduct question under Ethereum Tax in Canada, and the facts here pull both ways: Halden took its first ETH as consideration for services, which that article treats as a barter trading receipt, and it runs a validator, an activity CRA reads into the Excise Tax Act's "mining activity" definition and of which CRA says the person "may still be considered to be carrying on a business for income tax purposes". A holder with those facts who reported on income account would not be obviously wrong. The accrual assumption is not unsupported: CRA technical interpretation 2024-1031821I7 says in its Position paragraph that "User Rewards can generally be included in a taxpayer's income in the taxation year when the User Rewards are credited to the taxpayer's account by the Platform, or on an accrual basis as they are earned". That interpretation is about custodial staking on a platform rather than a self-run validator, so it is an analogue and not a rule - but it is an analogue pointing the same way. On timing for a holder running their own validator, no CRA text located in this review addresses the question.

Three policies are documented in its accounting manual before the year begins, and each of them is a judgement the standards require but do not resolve:

  1. Lot method. First-in, first-out, applied within each location: each address, and each validator, is its own pool. Entity-wide FIFO would assign the cost of units locked in a validator to gas paid from a wallet, which Halden concluded does not faithfully represent the movement. It is implementable - FIFO is a costing convention, not a claim about which units physically moved, and Ethereum Tax in the United States measures the United States' per-wallet basis rule against entity-wide FIFO as the alternative - but Halden rejected it on faithful-representation grounds and wrote down why. A fee withheld at source, before the ETH is ever delivered, is taken from the units it was withheld from rather than from the receiving pool. This is a financial-reporting convention only.
  2. Staking-reward recognition. Consensus-layer rewards accrue every epoch. Recognising each one would create roughly 80,000 lots a year for one validator. Halden recognises them monthly, measured at the ETH-USD close of the minute beginning 23:59:00 UTC on the last day of each month. Execution-layer rewards are recognised when received, at that minute's close.
  3. Impairment unit of account. Each lot is tested separately against year-end fair value.

Halden concludes that its ETH is not held for sale in the ordinary course, so the primary ledger below is the IFRS IAS 38 cost model. A bridge afterwards shows the additional US GAAP entries under ASC 350-60. Both are shown because they produce materially different financial statements from identical facts.

What happened

Date / time (UTC)EventQuantity / position changePrice / valueEvidence
12 Mar 2025Development work accepted. Invoice raised in US dollars, payable in ETHReceivable $18,500.00n/aContract, acceptance certificate, invoice
18 Mar 2025 14:07Client's processor computes the ETH amount at the 13:58 rate of $1,879.36 and sends it. It arrives at 14:07+9.84377660 ETH$1,882.57/ETH, $18,531.60Transaction hash, wallet record, both price observations
27 May 2025 10:41Buys ETH on an exchange+24.19000000 ETH$2,636.07/ETH, $63,766.53 + $95.65 fee = $63,862.18Trade confirmation, bank record
27 May 2025 10:41Withdraws to self-custody. The exchange deducts a network fee in ETH−0.00034000 ETH$2,636.07/ETH, $0.90Withdrawal statement, transaction hash
4 Jun 2025 09:18Deposits to the deposit contract with its own 0x02 compounding withdrawal credentials−32.00000000 ETH from the wallet, +32.00000000 ETH to a validator balance$2,636.05/ETHDeposit transaction hash, deposit data, credential record
4 Jun 2025 09:18Gas on the deposit transaction: 78,246 gas at 1.684 gwei−0.000131766264 ETH$0.35Transaction receipt, block header
11 Jun 2025Validator activated after the entry queueNo accounting entryn/aConsensus-layer validator record
30 Jun-31 Dec 2025Consensus-layer rewards accrue every epoch, recognised monthly+0.49685927 ETH in seven lots$1,801.28 in totalValidator balance history, seven price observations
9 Jul 2025 13:26A contract call fails: receipt status 0, no value transferred. Gas: 46,912 gas at 7.567 gwei−0.000354983104 ETH$0.94Transaction receipt showing status 0
4 Sep 2025 15:52Validator proposes a block. The builder pays the fee recipient. This is the execution-layer half only: the consensus-layer proposer reward for the same block arrives in the validator balance with no transaction and falls into September's aggregated reward lot, which is why lot R4 below is the largest of the seven+0.04713962 ETH$4,311.58/ETH, $203.25Builder payment transaction, slot record, fee-recipient configuration
21 Oct 2025 11:33Sends ETH to the exchange and sells it−1.85000000 ETH$3,884.45/ETH, $7,186.23 gross, $58.27 fee, $7,127.96 netTransaction hash, trade confirmation, bank record
21 Oct 2025 11:33Gas on the transfer: 21,000 gas at 4.742 gwei−0.000099582 ETH$0.39Transaction receipt
19 Nov 2025 16:44Submits an EIP-7002 partial withdrawal request for 0.30 ETH: 41,375 gas at 2.856 gwei, plus a 1 wei request fee−0.000118167 ETH gas, −1 wei fee$0.35Transaction hash to the predeploy, request payload
22 Nov 20250.30000000 ETH credited to the withdrawal address as a system-level withdrawal, with no transaction hash−0.30000000 ETH from the validator, +0.30000000 ETH to the walletCarrying amount transfer, no remeasurementBlock withdrawals list, withdrawal index, validator index
31 Dec 2025 23:59Close: wallet 0.529871721631999999 ETH, validator 32.19685927 ETH32.726730991631999999 ETH held$2,966.84/ETH, $97,094.97 fair valueBalance at a finalized block, validator balance, lot subledger, closing price

Prices come from Coinbase Exchange one-minute ETH-USD candle closes. Ethereum Valuation for Accounting lists them and the source notes at the end of this article give the exact queries. The validator's balance before the November withdrawal exceeded 32.30 ETH, so the protocol could satisfy the 0.30 ETH request in full. A request for more than the excess over 32 ETH - the protocol's MIN_ACTIVATION_BALANCE, which caps a partial withdrawal - would have been paid only in part.

The gas detail nobody keeps, and why it matters

DatePurposeGas usedBase feePriority feeTotal fee (ETH)Burned (ETH)To the proposer (ETH)USD
4 JunDeposit to the deposit contract78,2461.184 gwei0.500 gwei0.0001317662640.0000926432640.000039123000$0.35
9 JulFailed contract call46,9126.317 gwei1.250 gwei0.0003549831040.0002963431040.000058640000$0.94
21 OctTransfer to the exchange21,0003.842 gwei0.900 gwei0.0000995820000.0000806820000.000018900000$0.39
19 NovEIP-7002 withdrawal request41,3752.106 gwei0.750 gwei0.0001181670000.0000871357500.000031031250$0.35
Total0.0007044983680.0005568041180.000147694250$2.03

Two dollars and three cents. It would be easy to argue this is immaterial and stop. For the income statement, it is. It is not immaterial to the quantity reconciliation: without these four numbers the wallet balance does not tie, and an unexplained difference in a crypto reconciliation is indistinguishable from a missing transaction or a compromised key until somebody investigates it. Note also that 79% of the total was destroyed rather than paid to anyone, and that the largest single item bought nothing at all.

Journal entries

Primary ledger: IFRS, IAS 38 cost model.

DateAccountDrCr
12 MarTrade receivable18,500.00
Service revenue18,500.00
18 MarDigital assets: ETH, wallet (Lot A, 9.84377660)18,531.60
Trade receivable18,500.00
Gain on settlement of receivable in ETH31.60
27 MayDigital assets: ETH, wallet (Lot B, 24.19000000)63,862.18
Cash63,862.18
27 MayNetwork fee expense: exchange withdrawal0.90
Digital assets: ETH (0.00034000, withheld from the units purchased)0.90
4 JunDigital assets: ETH staked in own validator77,024.56
Digital assets: ETH, wallet77,024.56
4 JunNetwork fee expense: gas0.35
Digital assets: ETH (0.000131766264 at FIFO basis)0.35
9 JulNetwork fee expense: failed transaction0.94
Digital assets: ETH (0.000354983104 at FIFO basis)0.94
4 SepDigital assets: ETH, wallet (Lot C, 0.04713962)203.25
Staking income: execution layer203.25
MonthlyDigital assets: ETH staked in own validator (7 reward lots)1,801.28
Staking income: consensus layer1,801.28
21 OctCash7,127.96
Digital assets: ETH (1.85000000 at FIFO basis)4,884.04
Gain on disposal of ETH2,243.92
21 OctSelling cost: gas on transfer0.39
Digital assets: ETH (0.000099582 at FIFO basis)0.26
Gain on disposal of ETH used as a fee0.13
19 NovNetwork fee expense: withdrawal request0.35
Digital assets: ETH (0.000118167 at FIFO basis)0.31
Gain on disposal of ETH used as a fee0.04
22 NovDigital assets: ETH, wallet564.77
Digital assets: ETH staked in own validator564.77
31 DecImpairment loss: digital assets410.84
Accumulated impairment: ETH410.84

The 1 wei EIP-7002 request fee is 0.000000000000000001 ETH, worth about $2.95 × 10−15 at that day's price, below any presentable unit. It is recorded in the wei-denominated quantity ledger and rounds to nil in the general ledger. That is the correct outcome and it is the reason the two ledgers are kept in different units.

Four of these Ethereum journal entries are the ones that go wrong in practice:

  • 4 June is a reclassification, not a payment. 32 ETH left the wallet and $77,024.56 of carrying amount moved between two asset accounts. Nothing was sold, no gain arose, and the ETH is still Halden's.
  • 9 July is an expense with no asset. The transaction failed. There is nothing to capitalise it into, and whether that is an expense, a loss, or nothing is a named guidance gap.
  • The monthly entry is income with no transaction. No hash supports it. The evidence is the validator's balance history.
  • Under the accrual policy, 22 November is not income. The ETH arrived with no transaction and no counterparty, and a naive import would book roughly $830 of revenue: 0.30000000 ETH at $2,768.50, the ETH-USD close of the minute beginning 22 November 2025 23:59:00 UTC, which is $830.55 to the cent. The income was recognised when the rewards accrued. This is the same ETH changing ledgers. Under FIFO within the validator, the units withdrawn came from the oldest lot (the March client payment at $1,882.57), not from the recent reward lots. The protocol has one balance and expresses no view about which lot left. The policy decides, and the policy must be written down.

US GAAP bridge

ASC 350-60 measures ETH at fair value through net income, so the units still held are remeasured at the reporting date. It does not address derecognition; remeasuring every departing unit to transaction-date fair value immediately before it leaves is prevailing firm interpretation.

StepAmount
Remeasurement gain on the 1.85000000 ETH sold, at 21 October fair value2,302.19
Remeasurement gains on the units used to pay fees0.17
Remeasurement gain on the 32.726730991631999999 ETH still held at 31 December17,583.46
Total fair-value gain recognised in net income19,885.82

Reconciling the two frameworks' effect on profit takes one more step, and it is worth showing because the two columns otherwise look irreconcilable. Under IFRS the ETH position contributes $2,243.92 of disposal gain, plus the $0.17 of gain on ETH used to pay fees booked on 21 October and 19 November, less $410.84 of impairment, or $1,833.25. Under US GAAP it contributes $19,885.82 of fair-value gain, which carries that same $0.17 as a line of its own. The $18,052.57 difference is the $17,994.30 gap in closing carrying amount, plus the $58.27 exchange trading fee that IFRS nets inside the disposal gain and US GAAP shows as a separate cost. The $0.17 has to be counted on both sides or on neither: leave it out of the IFRS figure alone and the bridge misses by exactly that amount, which is the kind of error a reconciliation exists to catch.

The cash, revenue and equipment amounts are the same under both frameworks. What differs is everything about the ETH itself:

IFRS (IAS 38 cost model)US GAAP (ASC 350-60)
Closing carrying amount of ETH79,100.6797,094.97
Recognised in profit or loss on the ETH positionGain on disposal 2,243.92, gain on ETH used to pay fees 0.17 and impairment (410.84): net 1,833.25Fair-value gain 19,885.82, including 0.17 on the ETH used to pay fees
Line describing the saleGain on disposalFair-value remeasurement. No separate disposal gain, because carrying amount already equalled fair value
Unrealised appreciation on held ETHNot recognisedRecognised in full

The quantity is identical to the wei. The carrying amounts differ by $17,994.30.

Position after

LotLocationQuantity (ETH)Cost basis31 Dec fair valueImpaired?
A (18 Mar, client payment)Validator9.5437766017,966.8328,314.86no
A (18 Mar, withdrawn 22 Nov)Wallet0.30000000564.77890.05no
B (27 May, purchase)Validator22.1562234058,492.9665,733.97no
B (27 May, purchase)Wallet0.182732101631999999482.42542.14no
C (4 Sep, execution-layer reward)Wallet0.04713962203.25139.8663.39
R1 (30 Jun reward)Validator0.04218736104.88125.16no
R2 (31 Jul reward)Validator0.06843152253.06203.0350.03
R3 (31 Aug reward)Validator0.06791477298.28201.4996.79
R4 (30 Sep reward)Validator0.11839481490.86351.26139.60
R5 (31 Oct reward)Validator0.06758219259.91200.5159.40
R6 (30 Nov reward)Validator0.06531744195.42193.791.63
R7 (31 Dec reward)Validator0.06703118198.87198.87no
Total32.72673099163199999979,511.5197,094.97410.84

Lot R4 is larger than its neighbours because September includes the consensus-layer reward for proposing the block on 4 September, in addition to that month's attestation rewards.

A footing note, because the article asks the reader to reconcile: the quantity and cost columns foot exactly. The fair-value column does not. Each lot's fair value is correct to the cent, but rounding twelve of them adds $0.02, so the column sums to $97,094.99 while the total shown is $97,094.97: the fair value of the whole holding measured as price times quantity, 32.726730991631999999 × $2,966.84. Ethereum Valuation for Accounting explains why price times quantity is the measurement. This is what that choice looks like in a table.

The impairment column is the judgement. Six lots are carried above year-end value because ETH was worth more when those rewards accrued than at the year end. Tested lot by lot, they impair by $410.84. Tested as one holding, the $17,974.04 of unrecognised appreciation on the March and May lots more than covers them and there is no impairment at all, leaving the carrying amount at $79,511.51 - the cost-basis total above, and the figure Why the Ethereum Blockchain Is Not an Accounting Ledger gives as the carrying amount under the other defensible policy. Both readings are defensible under IAS 36 and neither is prescribed, but they are not equal in weight: IAS 36's stated default is the individual asset, and holding-level netting relieves impairment on some lots using unrealised appreciation on others, which the cost model otherwise forbids. Halden chose lot-level testing and disclosed it as a significant judgement. What Accounting Standards Still Do Not Answer About Ethereum records the question as unresolved.

The ASC 350-60 rollforward

Ethereum Accounting Under US GAAP records that ASC 350-60 requires an annual rollforward "of activity from the opening to the closing balances", separately showing additions, dispositions, gains and losses. It is the disclosure most easily skipped, so here it is on these facts, for ETH:

Rollforward line, ETH positionAmount
Opening balance, 1 January 2025-
Additions84,398.31
Dispositions(7,189.16)
Gains recognised in net income19,885.82
Losses recognised in net income-
Closing balance, 31 December 202597,094.97

Additions are the four acquisitions at initial cost: the March client payment at $18,531.60, the May purchase including its fee at $63,862.18, the seven monthly consensus-layer reward lots at $1,801.28 and the September execution-layer reward at $203.25. Dispositions are the units that left, measured at fair value immediately before derecognition: $7,186.23 for the 1.85000000 ETH sold, and $2.93 for the five fee payments - the May exchange withdrawal fee and the gas on 4 June, 9 July, 21 October and 19 November. Those five payments are dispositions for the same reason the sale is: the units left. The gains line is the $19,885.82 from the bridge above, and the losses line is empty because all three of its components are gains: $2,302.19 on the sale, $0.17 on the fee units and $17,583.46 on the units still held. Only a holder whose second crypto asset had a net remeasurement loss would populate both: 50-3 determines the lines crypto-asset by crypto-asset.

The table foots: 84,398.31 − 7,189.16 + 19,885.82 = 97,094.97, the closing US GAAP carrying amount.

What is missing from it matters as much as what is in it. The 4 June deposit of 32 ETH to the deposit contract and the 22 November withdrawal of 0.30 ETH back to the wallet appear nowhere in this table. Neither is an addition and neither is a disposition: the ETH was Halden's before and after, and the entity's balance did not change. The deposit is the largest quantity movement of the year, and the mandatory rollforward is silent on it and on the withdrawal back. No source located in this review addresses whether an own-location transfer belongs in the rollforward; the conclusion that it does not is this article's own reading, and it rests on nothing more than the balance being unchanged. It matters practically, because an entity that builds this disclosure from a wallet's transaction list will report each movement twice - the deposit as a disposition from the wallet and an addition to the validator, the withdrawal the other way about - inflating additions and dispositions by roughly $85,000 each. The gains line is not safe either: dispositions are measured at fair value immediately before derecognition, so an entity that books the units out at that fair value and back in at the cost basis they carried leaves a difference that has to fall into gains for the table to foot at all. Where both legs are booked at the same amount, the closing balance still foots, which is what makes that error hard to find.

One number the standard asks for is not in the table. ASC 350-60-50-4(b) requires the "[t]otal amount of cumulative realized gains and cumulative realized losses from dispositions that occurred during the period" - which paragraph 50-4 frames as information "about the reconciliation in paragraph 350-60-50-3" rather than as a disclosure standing apart from it. On these facts the amounts are the $2,302.19 on the sale and the $0.17 on the fee units. That is worth stating because it is not obvious under the remeasure-then-derecognise reading described in Ethereum Accounting Under US GAAP: both were recognised as remeasurement gains while the units were still held, so a preparer could think the realised amount on the disposition itself is nil. The basis for conclusions forecloses that reading. ASU 2023-08 paragraph BC67 says the disclosure's "gains and losses represent the difference between the disposal price and the cost basis of those assets" - and the difference between disposal price and cost basis is exactly what $2,302.19 and $0.17 are. "Cumulative" aggregates the period's disposals rather than reaching back before it: the paragraph's own words are "from dispositions that occurred during the period".

Reconciliation bridge

Quantity: two ledgers to one lot table

Wallet (execution layer)Validator (consensus layer)Total
Opening000
Client payment, 18 Mar+9.84377660+9.84377660
Purchase net of the withdrawal fee, 27 May+24.18966000+24.18966000
Deposit, 4 Jun−32.00000000+32.000000000
Gas, 4 Jun and 9 Jul−0.000486749368−0.000486749368
Consensus rewards, Jun-Dec+0.49685927+0.49685927
Execution-layer reward, 4 Sep+0.04713962+0.04713962
Sale and gas, 21 Oct−1.850099582−1.850099582
Gas and request fee, 19 Nov−0.000118167000000001−0.000118167000000001
Withdrawal, 22 Nov+0.30000000−0.300000000
Closing0.52987172163199999932.1968592732.726730991631999999

Quantity proof: 9.84377660 + 24.18966000 + 0.49685927 + 0.04713962 − 1.85 − 0.000704498368 − 0.000000000000000001 = 32.726730991631999999 ETH.

Read the closing wallet figure carefully. It is 529,871,721,631,999,999 wei. A subledger carrying eight decimal places reports 0.52987172 ETH and will never tie to the chain. The quantity ledger has to hold integers.

Evidence: what proves each line

MovementWhat the public chain provesWhat only Halden's records prove
Client paymentA transfer of 9.84377660 ETH arrived at an addressThat the address is Halden's, that it settled that invoice, and the $18,531.60
Purchase and withdrawalA transfer arrived from an exchange-controlled addressThe trade, the $63,862.18 paid, and that the 0.00034 ETH was a fee
Deposit to the validator32 ETH went to the deposit contractThat Halden controls the withdrawal credentials, and that no disposal occurred
Consensus rewardsA validator balance that rose over timeWhich validator is Halden's, the monthly split, and the seven prices
Execution-layer rewardAn incoming transfer from an unknown addressThat Halden's validator proposed that block and that this is its reward, not a customer receipt
Failed transactionA receipt with status 0 and gas consumedWhat it was for, and why it is an expense
SaleA transfer to an exchange-controlled addressThe execution price, the fee and the cash received
Withdrawal requestA transaction to the predeployWhich validator, what amount, and the link to the credit three days later
Withdrawal creditA withdrawal record with an index and an amount in gweiThat it belongs to Halden's validator, and which accounting lot it carried

Every row in the right-hand column is a place where the books can be right and unprovable, or wrong and unnoticed.

Framework bridge at the reporting date

Framework and stated factsEntryDrCr
IFRS: IAS 38 cost model, indefinite life, lot-level unit of account, recoverable amount taken as fair value less immaterial costs of disposalImpairment loss410.84
Accumulated impairment: ETH410.84
US GAAP: ASC 350-60 fair value through net incomeDigital assets: fair-value adjustment17,583.46
Fair-value gain: ETH17,583.46

If ETH rises in 2026, ASC 350-60 keeps marking it up through net income without limit. Under the IAS 38 cost model, IAS 36 requires reversal of the $410.84 where the underlying estimates change, and caps the reversal at the carrying amount that would have existed without the impairment. Reversal is mandatory, not permitted: paragraph 114 says the loss "shall be reversed if, and only if, there has been a change in the estimates used to determine the asset's recoverable amount" (IAS 36). For an asset whose recoverable amount is its market price less costs of disposal, that is a low bar rather than a high one, because a recovery in the ETH price is itself the change in estimate. An IAS 2 inventory conclusion, or the IAS 38 revaluation model, would produce a third and fourth answer again.

Do not use these Ethereum journal entries as a tax return. FIFO by location is Halden's financial-reporting policy. Canada requires weighted-average adjusted cost base for capital property. The United Kingdom requires section 104 pooling with same-day matching, then the 30-day rule in section 106A for individuals and, for a company like Halden, the ten-day rule in section 107 instead. The United States requires basis to be tracked per wallet or account and has specific identification rules with a FIFO default. None of them is what is above. Compute the staking receipts, gas and sale separately under the sourced rules in the relevant jurisdictional tax article.

What the example proves

Several large protocol movements never become new income or new assets.

The 32 ETH native-staking deposit changes location and restriction but does not create a new asset when the entity retains the relevant control. The 0.30 ETH validator withdrawal later changes location again and is not a second recognition of previously accrued staking rewards.

At the same time, several small quantities that are easy to ignore are economically real. Gas on the failed transaction reduces the wallet even though the intended call produced no result. The EIP-7002 request fee is only 1 wei, but omitting it prevents exact quantity reconciliation.

The example also shows why one "cost basis" field cannot serve every purpose. The same closing ETH quantity has:

  • a protocol quantity;
  • an IFRS carrying amount;
  • a US GAAP fair-value carrying amount; and
  • a Canada tax adjusted-cost-basis amount under the stated assumptions.

That separation is intentional.

For the rules behind these Ethereum journal entries, see Ethereum Gas Fee Accounting, Ethereum Valuation for Accounting, Ethereum Staking Rewards, and Ethereum Accounting Under US GAAP.

Worked-example test path

Every event must survive the same evidence-to-entry chain.

  1. Protocol eventWhat happened.
  2. EvidenceReceipt or validator data.
  3. ETH quantityExact wei or gwei.
  4. Accounting lotBook identity.
  5. ValuationPolicy price.
  6. Journal entryIFRS or US GAAP.
Final test: wallet quantity + validator quantity must equal the closing ETH position after every gas outflow and withdrawal.

How Tokenbooks helps with producing the journal entries

Entries of this shape are what Tokenbooks produces rather than what a preparer types. Journal entries post against a hierarchical chart of accounts the user can edit, with a general ledger view, and an inspectable lot ledger records every add, disposal, cut, move, reservation and release. That ledger is where the movement behind each lot in this example becomes auditable rather than asserted.

A per-portfolio rules engine re-maps the postings where a house convention differs from the default. Conditions match on 17 fields with 11 operators, and actions set the counterparty, the ledger account or a responsibility-center split in basis points, so the account names in a worked example become the entity's own account names. The finished postings then go to QuickBooks Online and Xero through an account mapping, an approval step and a batch that ties out.

Run the same events through the Ethereum integration.

More in this series

Accounting Token Anatomy: Native ETH. This article stands alone, but the series builds in order.

Previous (01.2.10): Ethereum Accounting Under US GAAP

Next (01.2.12): Ethereum Accounting Records, Controls, and Reconciliation

All fourteen articles

Sources and authority map

  • ethereum.org, "Gas and fees". ethereum.org
  • EIP-1559. eips.ethereum.org
  • EIP-4895, "Beacon chain push withdrawals as operations". eips.ethereum.org
  • EIP-7002, "Execution layer triggerable withdrawals". eips.ethereum.org
  • Ethereum consensus specifications. github.com/ethereum/consensus-specs
  • Beacon API specification. ethereum.github.io/beacon-APIs
  • IFRS Interpretations Committee, "Holdings of Cryptocurrencies", June 2019. ifrs.org
  • IAS 38, IAS 36, IAS 2, IFRS 13, IFRS 15, IAS 8, IAS 21, IAS 7, IAS 12, IAS 1, IAS 10, IFRIC 23. IAS 38
  • FASB ASU 2023-08 (ASC 350-60 and ASC 230-10-45-27A). storage.fasb.org
  • AICPA, "Accounting for and auditing of digital assets" practice aid. aicpa-cima.com
  • Coinbase Exchange candles endpoint documentation. docs.cdp.coinbase.com
  • Coinbase Exchange ETH-USD one-minute candles, the exact observations used in the worked example above. 18 Mar 13:58
  • CRA, "Reporting income from crypto-asset transactions". canada.ca
  • CRA, "Reporting income from crypto-asset mining and staking activities". canada.ca
  • Income Tax Act, sections 3, 10, 38, 47, 52, 54, 69, 111, 233.3, 248 and 261, and Interpretation Bulletin IT-479R. s.38
  • Income Tax Act section 261, Form T1296, and Income Tax Folio S5-F4-C1, Income Tax Reporting Currency. s.261

Research status. Protocol mechanics and published guidance were refreshed through 31 August 2026. Where a source is interpretive rather than authoritative, the text says so. This article is educational research, not accounting, tax, legal, valuation, or investment advice.

Frequently Asked Questions

Does depositing ETH into your own validator create a disposal?
No. The 4 June deposit is a reclassification, not a payment: 32 ETH left the wallet and $77,024.56 of carrying amount moved between two asset accounts. Nothing was sold, no gain arose, and the ETH is still the entity's. A native staking deposit changes location and restriction but does not create a new asset when the entity retains the relevant control.
Is a validator withdrawal with no transaction hash staking income?
Not under the accrual policy used here. The 0.30 ETH arrived with no transaction and no counterparty, and a naive import would book roughly $830 of revenue. The income was recognised when the rewards accrued, so 22 November is the same ETH changing ledgers rather than a second recognition of previously accrued rewards.
How is gas on a failed Ethereum transaction recorded?
As an expense with no asset. The 9 July call failed with receipt status 0 and no value transferred, yet 0.000354983104 ETH, or $0.94, left the wallet. There is nothing to capitalise it into, and whether that is an expense, a loss, or nothing is a named guidance gap rather than a settled answer.
Should IAS 36 impairment be tested lot by lot or across the whole holding?
Both readings are defensible under IAS 36 and neither is prescribed, but they are not equal in weight. Tested lot by lot, six lots impair by $410.84. Tested as one holding, unrecognised appreciation on the March and May lots more than covers them and there is no impairment at all. IAS 36's stated default is the individual asset, and holding-level netting relieves impairment using unrealised appreciation the cost model otherwise forbids.
Do transfers between your own wallet and your own validator belong in the ASC 350-60 rollforward?
Neither the 32 ETH deposit nor the 0.30 ETH withdrawal is an addition or a disposition, because the ETH was the entity's before and after and its balance did not change. No source located in this review addresses whether an own-location transfer belongs in the rollforward; that conclusion is this article's own reading, and it rests on nothing more than the balance being unchanged.

Related articles

This is not tax, legal, or accounting advice.
Tokenbooks builds accounting software; we are not a CPA firm and not a tax adviser. Treatment varies by jurisdiction, by entity, and over time, and the rules described here can change after publication. Confirm any position with your own accountant or tax adviser before you rely on it.