How do I use the Income and Expenses upload
If you want to include any income or expenses from other sources which we don’t directly support yet, you can use the “Income and Expenses” csv format to upload it into Taxoshi and include it as part of your calculation.
The format is pretty simple, but it’s important you get the the data format correct for each column to make sure everything is processed correctly. Here’s an example of the CSV format correctly filled out;
Date | Symbol | Type | Amount | Fee | Identifier | Comment | PriceDate |
2020-04-19 10:00:00 | BTC | AIRDROP | 0.1 | 0 | XYZ_001 | Free Coins! | |
2020-04-19 10:00:00 | BCH | HARDFORK | 2 | 0 | XYZ_002 | Bitcoin Cash Hardfork | |
2020-04-20 10:00:00 | BTC | MINING | 0.5 | 0 | XYZ_003 | Mined on NiceHash | |
2020-04-21 10:00:00 | NAV | STAKING | 0.05 | 0.0001 | XYZ_004 | Mined on NavPool | |
2020-04-22 10:00:00 | BTC | DEFI | 1 | 0.0001 | XYZ_005 | Liquidity Providing | |
2020-04-23 10:00:00 | BTC | INCOME | 5 | 0.0001 | XYZ_006 | Other Income | |
2020-04-24 10:00:00 | BTC | FEE | 0.00015 | 0 | XYZ_007 | Transaction Fee | |
2020-04-25 10:00:00 | ETH | LOST | 10 | 0 | XYZ_008 | Lost Wallet | 2019-04-24 10:00:00 |
2020-04-19 10:00:00 | ETH | STOLEN | 4.5 | 0 | XYZ_09 | Hacked | 2019-04-24 10:00:00 |
2020-04-19 10:00:00 | LTC | EXPENSE | 3.255 | 0.0001 | XYZ_010 | Other Expense |
How the calculation works
The types of income which can be reported are; airdrops, hardforks, mining, staking, defi earning and other generic income.
All income is essentially treated treated the same. There is a taxable event created when you receive the income for the whole value of the income in NZD minus any fees which were incurred. This value is then considered the price of the stock as it enters into the FIFO calculation as inventory to be matched with sell orders or expenses.
For example. if you got airdropped 0.001 BTC which was worth $10 at the time, you would have a taxable income of $10 on that airdrop. If you then later sold the 0.001 bitcoin for $100, you would have a $90 gain there which is taxable as income. It may seem trivial to split it like this and just assume the $100 gain when you finally sell the 0.001 BTC but if you received it and sold it in two different tax years, their would be a taxable event in each year which needs to be reported as income according to the guidance.
The types of expenses which can be reported are; transaction/exchange/pool fees, lost or stolen cryptoassets and other generic expenses.
The fees and other expenses are deducted in NZD at the date and time specified but they are also required to be matched to existing inventory in the FIFO calculation since it is still technically spending inventory you have in stock.
For example, if you originally bought 0.001 BTC for $10 and the value of that 0.001 BTC rises to $100 then you pay an exchange withdrawal fee of 0.001 BTC. You will have paid a $100 fee which is deductible, but you will have also made a $90 gain ($100 – $10), so the total deductible amount will only be $10. In the report output, the fee is displayed as part of the expenses and the $90 gain will appear as part of the FIFO calculation but they would balance out to a $10 expense as described above.
Lost and Stolen Cryptocurrency are the only types which require the an additional column called “PriceDate” to be filled in. This is because the IRD guidance states that stolen or lost cryptocurrency is claimed in the tax year the loss happens, but can only be deducted at the original purchase price and not at the current market value. So you need to enter the original purchase date there and we will go and look up the correct exchange rate for that date and that amount is what is deductible as an expense.
Creating your own Income and Expense file
Here’s a copy of the Income and Expense csv file you can use as a template to input your own data. You should be able to edit this in any spreadsheet software you have on your computer. Just make sure when you save it, you export it as CSV again instead of the proprietary format of your software and that the dates don’t get reformatted by the software.
Income and Expenses template file
The Columns Explained
Let’s take a look at each column and look at what the expected data formats are.
Date
This field expects an ISO formatted date in UTC time, so the expected format is; YYYY-MM-DD HH:MM:SS
For example 2017-03-20 00:00:00 would be Midnight on the 20th of March 2017 in the UTC timezone.
Symbol
This field expects the ticker symbol of the cryptocurrency. For example for Bitcoin you would put BTC in this column.
Currently the supported symbols we have valid exchange rates for are;
name | symbol |
0x | ZRX |
Aave | AAVE |
Algorand | ALGO |
Ark | ARK |
Australian Dollar | AUD |
Binance Coin | BNB |
Binance USD | BUSD |
Bitcoin | BTC |
Bitcoin Cash | BCH |
Bitcoin SV | BSV |
BitTorrent | BTT |
Canadian Dollar | CAD |
Cardano | ADA |
Chainlink | LINK |
Cosmos | ATOM |
Dai | DAI |
Decentraland | MANA |
DigiByte | DGB |
Dogecoin | DOGE |
EOS | EOS |
Ethereum | ETH |
Euro | EUR |
FTX Token | FTT |
FUNToken | FUN |
Hedera Hashgraph | HBAR |
ICON | ICX |
Japanese Yen | JPY |
Litecoin | LTC |
Monero | XMR |
Nano | NANO |
NavCoin | NAV |
Nem | XEM |
New Zealand Dollar | NZD |
Ontology Gas | ONG |
PancakeSwap | CAKE |
PAX Gold | PAXG |
Polkadot | DOT |
Polygon | MATIC |
Polymath | POLY |
Pound Sterling | GBP |
Ravencoin | RVN |
Ren | REN |
Ripple | XRP |
Solana | SOL |
South African Rand | ZAR |
Stellar | XLM |
SushiSwap | SUSHI |
Swiss Franc | CHF |
Synthetix | SNX |
Tether | USDT |
Tezos | XTZ |
Tron | TRX |
United States Dollar | USD |
USD Coin | USDC |
VeChain | VET |
VeThor Token | VTHO |
Waves | WAVES |
Zcash | ZEC |
Zilliqa | ZIL |
Type
This field only accepts the following values;
Type | Description |
AIRDROP | Cryptoassets received from an air drop |
HARDFORK | Cryptoassets received from a blockchain hard fork |
MINING | Cryptoassets received from mining |
STAKING | Cryptoassets received from staking |
DEFI | Cryptoassets received from liquidity farming or other de-fi |
INCOME | Any other cryptoasset income |
FEE | Exchange or transaction fees |
LOST | Cryptoassets which have been lost |
STOLEN | Cryptoassests which have been stolen |
EXPENSE | Any other cryptoasset expense |
The Type column must be in uppercase as above.
Amount
This field expects a number that is greater than zero. The Amount is the total number of tokens which were an income or expense.
Fee
This field expects a number that is zero or greater. The Fee is whatever the exchange, mining pool, DEX, network etc. has charged you that transaction. The fee is the number of tokens charged and is expected to be in the same currency as the Symbol column.
For example if you were charged 0.0001 BTC by a mining pool for them to send your payout, you would enter 0.0001 into this column.
Identifier
This field accepts any string, it is really for your own records and can be used to uniquely identify the event like a transaction hash.
Comment
This field accepts any string, it is also just for your own records to make a note of what the row is about.
PriceDate
The same as the Date field, the PriceDate field expects an ISO formatted date in UTC time, so the expected format is; YYYY-MM-DD HH:MM:SS
For example 2017-03-20 00:00:00 would be Midnight on the 20th of March 2017 in the UTC timezone.
The PriceDate column is only used for LOST or STOLEN rows and should be the date at which you purchased the coins which were lost or stolen.