How to post crypto airdrops with a (tax) cost basis of 0 while accounting for the (actual) income?

61 views
Skip to first unread message

Peter

unread,
Oct 29, 2022, 3:09:24 PM10/29/22
to Beancount
Hi,

in the crypto-space airdrops are a common ting. That is when someone (more or less) gifts you crypto assets. This can be, e.g., part of a promotion.

Regarding the accounting of this there are two things to consider:
  1. Someone just gifted you money. I'd account that as some sort of income.
  2. You might need to pay taxes on this gift.
Tax-wise an airdrop itself isn't taxed. It is assumed that I "bought" the asset at a cost basis of 0. If I sell the asset later, everything I'll receive in exchange for the airdropped asset counts as gain—as I can't deduct any costs. In other words: The taxation of the airdrop is delayed to the time when I sell the airdropped asset. And at that point the airdrop gets fully taxed at the current asset price.

If you want to account only for (1) or (2) this is fairly easy. But I'd like to account for both. This is where my problems come:

  • For tax-purposes I need to post a transaction leg with a cost basis of 0
  • For income tracking purposes I need to post a transaction with a cost basis of whatever the airdropped asset is priced at the moment of the airdrop
It seems that accounting for the actual income and for tax purposes is mutually exclusive:


option "booking_method" "FIFO"
option "operating_currency" "USD"
plugin "beancount.plugins.auto_accounts"

2021-01-07 * "Coinbase Earn" "Coinbase Earn Airdrop $XLM" #airdrop
  utc: "2021-01-07T05:34:19Z"
  Assets:Crypto:CEX:Coinbase:XLM               29.1631914 XLM { 0 USD } @ 0.28 USD; @@ 8.17 USD
  Income:Crypto:Airdrops

This example creates this transaction context:

** Transaction Id --------------------------------

Hash:01ed10463f3915cbc81b0999886944ab
Location: Test.Airdrop.bean:6


** Balances before transaction --------------------------------

  Assets:Crypto:CEX:Coinbase:XLM                                                  
  Income:Crypto:Airdrops                                                          

** Unbooked Transaction --------------------------------

2021-01-07 * "Coinbase Earn" "Coinbase Earn Airdrop $XLM" #airdrop
  utc: "2021-01-07T05:34:19Z"
  Assets:Crypto:CEX:Coinbase:XLM  29.1631914 XLM {0 USD} @ 0.28 USD
  Income:Crypto:Airdrops

** Transaction --------------------------------

2021-01-07 * "Coinbase Earn" "Coinbase Earn Airdrop $XLM" #airdrop
  utc: "2021-01-07T05:34:19Z"
  Assets:Crypto:CEX:Coinbase:XLM  29.1631914 XLM {0.00 USD, 2021-01-07} @ 0.28 USD  ; 0.0000000 USD

** Residual and Tolerances --------------------------------

Tolerances: XLM=5E-8

** Balances after transaction --------------------------------

* Assets:Crypto:CEX:Coinbase:XLM                 29.1631914 XLM {0 USD, 2021-01-07}

  Income:Crypto:Airdrops          



Logically, there isn't any income. Is there any way to post a lot with a cost basis of 0 while accounting for the factual income of 8.17 USD? 

I guess, I want to eat the cake and have it (accounting wise). Is that possible?

Martin Blais

unread,
Oct 29, 2022, 10:22:12 PM10/29/22
to bean...@googlegroups.com
Except for salary income, I rarely insert anything for taxes until the EOY.

Logically, there isn't any income. Is there any way to post a lot with a cost basis of 0 while accounting for the factual income of 8.17 USD? 

I don't understand your question.



--
You received this message because you are subscribed to the Google Groups "Beancount" group.
To unsubscribe from this group and stop receiving emails from it, send an email to beancount+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/beancount/d481c8bd-8310-44ac-9350-73676c4301cdn%40googlegroups.com.

Peter

unread,
Oct 30, 2022, 3:55:56 AM10/30/22
to Beancount
> I don't understand your question.

Sorry for being unclear. Let me try to rephrase it.

This transaction:

2021-01-07 * "Coinbase Earn" "Coinbase Earn Airdrop $XLM" #airdrop
  utc: "2021-01-07T05:34:19Z"
  Assets:Crypto:CEX:Coinbase:XLM               29.1631914 XLM { 0 USD } @ 0.28 USD; @@ 8.17 USD
 ; ↑↑↑ 29.16 units of XLM, which are worth 8.17 USD, but have a (fictive) cost basis of 0 USD
  Income:Crypto:Airdrops

reflects basically a gift of 29.16 units of XLM, which are worth 8.17 USD. So, I'd like to post an Income of 8.17.

At the same time I need to post the 29.16 units of XLM into my inventory as a lot with a cost basis of 0 USD. So, that when I sell these 29.16 units of XLM at some point in the future the whole amount that I'd get in return for selling it, would count as gain/income.

E.g. If the market price was 1 USD when I'd sell, I'd have an income/taxable gain of 29.16 USD. If the price were 0.1 USD when I'd sell, I'd have an income/taxable gain of 2.91 USD.

Does this make it any clearer?

Martin Blais

unread,
Nov 19, 2022, 4:13:21 PM11/19/22
to bean...@googlegroups.com
On Sun, Oct 30, 2022 at 3:55 AM Peter <tobias....@gmail.com> wrote:
> I don't understand your question.

Sorry for being unclear. Let me try to rephrase it.

This transaction:

2021-01-07 * "Coinbase Earn" "Coinbase Earn Airdrop $XLM" #airdrop
  utc: "2021-01-07T05:34:19Z"
  Assets:Crypto:CEX:Coinbase:XLM               29.1631914 XLM { 0 USD } @ 0.28 USD; @@ 8.17 USD
 ; ↑↑↑ 29.16 units of XLM, which are worth 8.17 USD, but have a (fictive) cost basis of 0 USD
  Income:Crypto:Airdrops

reflects basically a gift of 29.16 units of XLM, which are worth 8.17 USD. So, I'd like to post an Income of 8.17.

At the same time I need to post the 29.16 units of XLM into my inventory as a lot with a cost basis of 0 USD. So, that when I sell these 29.16 units of XLM at some point in the future the whole amount that I'd get in return for selling it, would count as gain/income.

E.g. If the market price was 1 USD when I'd sell, I'd have an income/taxable gain of 29.16 USD. If the price were 0.1 USD when I'd sell, I'd have an income/taxable gain of 2.91 USD.

Does this make it any clearer?

Yes, but it seems not the best approach to me. Say the shares of XLM are worth 0.28014 (so 8.17 for the full position of 29.16 XLM).
If you sold them right after receiving the gift, say, also at 8.17, with your method you'd be recognizing a gain of 2 x 8.17$, which is incorrect.

A better way would be to use 0.28015 as the cost basis and recognize the gain/loss against that.
For example, if you sold them at 0.20, you'd be recognizing a loss $2.34.
So you'd have received a gift of $8.17 and lost $2.34. You'd be left with a cash position of $5.83 in some asset account (e.g. Assets:Crypto:CEX:Coinbase:Cash).
Your income account would show correctly -5.83 (if you used the same account for the gift as the P/L account).
If you used different accounts for gift and P/L - which I'd recommend - you'd show the total amount of gifts and P/L on realizations of those, so -8.17 in the gift account and a loss of 2.34 in the P/L account. Sum the two and you've got the total money from those gifts including realized P/Ls.



 
Reply all
Reply to author
Forward
0 new messages