Skip to content
Scott Green edited this page Dec 22, 2023 · 6 revisions

Upgrading

To upgrade to the latest official release:

pip install --upgrade BittyTax

Check you have the correct new version (v0.5.2) installed:

bittytax --version

Alternatively you can upgrade to the latest "unreleased" version from GitHub.

Upgrading from version 0.5.1

The tax calculations for NFTs have been corrected, they are no longer "same day" pooled, or "same day"/"bed & breakfast" matched. NFT disposals will appear as "Unpooled" in the report. If you have made any NFT disposals, we recommend you re-generate your tax reports to ensure your capital gains tax is correct.

All changes are detailed in the CHANGELOG.

Upgrading from version 0.5.0

The Lost transaction type was incorrectly performing the buy-back before the sell, resulting in a loss for only half of the purchase cost. If you have used this transaction type previously we recommend you re-generate your tax reports to ensure the capital gains disposal is for the full cost of the lost asset.

All changes are detailed in the CHANGELOG.

Upgrading from version 0.4.x

Below is a list of the important changes to be aware when upgrading to v0.5.x. All changes are detailed in the CHANGELOG.

Transaction Notes

A new Note field (column M) has been added to the transaction record format, see Transaction Records.

Although optional, it is recommended that you add the new Note column to all your existing transaction records, otherwise the Note field will be populated by the first column of the raw data to the right of your transaction record.

The Note field can be used to record a description of the transaction. For example, for a Deposit or Withdrawal it could indicate which wallet the transfer is going to/from, or to describe what a Spend is for.

The Note is used as a description field in the income tax report, to make tracking of income sources easier.

Transaction notes also appear in the debug logging to help you find any issues.

Charity-Sent

The Charity-Sent transaction type has been changed from a normal disposal (same as a Gift-Sent) to be a "No Gain/No Loss" disposal, see Charity-Sent in the README.

If you have used this transaction type previously, we recommend you re-generate your tax reports as you may have overpaid capital gains tax.

New Config

Changes have been made to the default config file.

This new config is only installed for new installations of Bittytax, if you upgraded, you will have to make these changes manually.

Your bittytax.conf config file resides in the .bittytax folder within your home directory. Don't get confused with the bittytax.conf in the source files.

You can check any config changes by turning on debug, bittytax -d.

data_source_fiat

The ExchangeRatesAPI and RatesAPI, used for retrieving foreign currency exchange rates are no longer supported.

The RatesAPI is defunct, and ExchangeRatesAPI now requires an API key, for which the free version has a low transaction cap.

Two new fiat data sources have been added instead. Our very own BittyTaxAPI and Frankfurter.

We recommend changing your config to use just the BittyTaxAPI. It uses the same exchange rates (European Central Bank) and has the same rounding (10 decimal places) as the old APIs so won't impact your previous tax calculations. Note the prices returned by Frankfurter are rounded to 5 decimal places so not recommended if you are upgrading.

# Which data source(s) to use for fiat currency prices
data_source_fiat:
    ['BittyTaxAPI']

transfers_include

The default for transfers_include has changed from True to False.

This means the transfer transactions types (Deposit and Withdrawal) are excluded from the tax calculations.

You can read the pros and cons of each method described here.

When transfers are included in the calculations (the default for v0.4.x). It is important that no disposal event happens to a Section 104 holding between a Withdrawal and a Deposit. This is because the tokens are removed temporarily, so it would impact the cost basis.

This new version of bittytax introduces an Integrity Check which warns you if this happens.

You can bypass this check by using the --skipint option.

In the example warning below, the (2:1) indicates that bittytax has counted 2 Withdrawals, but only 1 Deposit for BTC. They need to match at the time of a disposal.

WARNING Disposal detected between a Withdrawal and a Deposit (2:1) for BTC, cost basis will be wrong

In the section104 log you can see that 2nd deposit is arriving after the last disposal. This can happen for a number of reasons, it could be a timing issue, maybe the timestamp is for when the transaction was confirmed, not when it was first seen, or even a timezone discrepancy.

process section 104
section104: BUY Trade 10 BTC (=£870.00 GBP) 'LocalBitcoins' 2013-05-24T21:17:40 BST [TID:2.1]
section104:   BTC=10 (+10) cost=£870.00 GBP (+£870.00 GBP) fees=£0.00 GBP (+£0.00 GBP)
section104: SELL* Withdrawal 9.99999 BTC 'LocalBitcoins' 2013-05-24T21:20:49 BST 'to Desktop wallet' [TID:3.1]
section104:   BTC=0.00001 (-9.99999) cost=£870.00 GBP (-£0.00 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104: SELL* Spend 0.00001 BTC 'LocalBitcoins' 2013-05-24T21:20:49 BST 'to Desktop wallet' [TID:3.2]
section104:   BTC=0 (-0.00001) cost=£870.00 GBP (-£0.00 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104: BUY* Deposit 9.99999 BTC 'Desktop wallet' 2013-05-24T21:20:49 BST 'from LocalBitcoins' [TID:4.1]
section104:   BTC=9.99999 (+9.99999) cost=£870.00 GBP (+£0.00 GBP) fees=£0.00 GBP (+£0.00 GBP)
section104: SELL Spend 0.002435 BTC (=£0.80 GBP) 'Desktop wallet' 2013-06-26T12:25:02 BST [TID:5.1]
section104:   BTC=9.997555 (-0.002435) cost=£869.79 GBP (-£0.21 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104:   Disposal(section 104) gain=£0.59 (proceeds=£0.80 - cost=£0.21 - fees=£0.00)
section104: SELL* Withdrawal 6 BTC 'Desktop wallet' 2016-01-26T21:01:03 GMT 'from Poloniex' [TID:6.1]
section104:   BTC=3.997555 (-6) cost=£869.79 GBP (-£0.00 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104: SELL* Spend 0.0001259 BTC 'Desktop wallet' 2016-01-26T21:01:03 GMT 'from Poloniex' [TID:6.2]
section104:   BTC=3.9974291 (-0.0001259) cost=£869.79 GBP (-£0.00 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104: SELL Spend 0.3302 BTC (~£90.08 GBP) + fee=~£0.05 GBP 'Desktop wallet' 2016-01-26T21:10:11 GMT [TID:7.1] (2)
section104:   BTC=3.6672291 (-0.3302) cost=£797.94 GBP (-£71.85 GBP) fees=£0.00 GBP (-£0.00 GBP)
section104:   Disposal(section 104) gain=£18.18 (proceeds=£90.08 - cost=£71.85 - fees=£0.05)
WARNING Disposal detected between a Withdrawal and a Deposit (2:1) for BTC, cost basis will be wrong
section104: BUY* Deposit 6 BTC 'Poloniex' 2016-01-26T21:15:41 GMT 'to Desktop wallet' [TID:8.1]
section104:   BTC=9.6672291 (+6) cost=£797.94 GBP (+£0.00 GBP) fees=£0.00 GBP (+£0.00 GBP)

If you have a very complex trading history, or getting a lot of warnings, you may want to change this config parameter to be the new default False (i.e. transfers excluded). In addition you will need to review all the transfers in your transaction records, see the "transfers excluded" Integrity Check for more information.

# Include transfer transactions (i.e. 'deposit', 'withdrawal') in tax calculations
transfers_include: False

transfer_fee_disposal

If you changed your config so that transfers are excluded (the default for v0.5.x), you will also need to add the new transfer_fee_disposal config parameter.

This allows you to treat transfer fees as disposals (the default for v0.5.x), instead of removing them from the pool at zero cost. This was the only option available in v0.4.x.

# Transfer fees are a disposal
transfer_fee_disposal: True

If you want to retain how it worked in v.0.4.x, i.e. remove transfer fees from the pool at zero cost. Set the parameter to False.

# Transfer fees are a disposal
transfer_fee_disposal: False

See transfer_fee_disposal in the README for more details, and discussion around the HMRC guidance.