Skip to content
Scott Green edited this page Apr 24, 2024 · 8 revisions

USA

There is a new feature branch which supports IRS tax rules for US users here.

This is a proof of concept, it only has support for US, not UK. The plan is to merge this into the existing UK version, as well as adding support for potentially other countries at a later stage.

Installation

Install via the ZIP archive:

pip install https://github.com/BittyTax/BittyTax/archive/refs/heads/features/usa-tax-rules.zip 

Alternatively, if you have git installed, install using:

pip install git+https://github.com/BittyTax/BittyTax@features/usa-tax-rules

Check the new version has been installed successfully. It should show version v0.5.3.dev3.

pip show BittyTax
bittytax --version

If you get problems you can try uninstalling first:

pip uninstall BittyTax

Config

The US version has/requires the config below which is different to the defaults used by the UK version.

local_currency

The local currency should be set to USD.

local_currency: 'USD'

local_timezone

The local timezone is used when calculating the tax year end, as well as the short-term/long-term holding period. The local timezone defaults to US/Eastern.

local_timezone: 'America/New_York'

It is also important for the Conversion Tool, the following Wallets/Explorers export data with a local timestamp, this will be converted to UTC time.

  • Electrum
  • Qt Wallet
  • Trezor Suite
  • Volt
  • Zerion

Other US timezones can be configured:

Region Timezone Identifier
US/Alaska 'America/Anchorage'
US/Aleutian 'America/Adak'
US/Arizona 'America/Phoenix'
US/Central 'America/Chicago'
US/East-Indiana 'America/Indiana/Indianapolis'
US/Eastern 'America/New_York' (default)
US/Hawaii 'Pacific/Honolulu'
US/Indiana-Starke 'America/Indiana/Knox'
US/Michigan 'America/Detroit'
US/Mountain 'America/Denver'
US/Pacific 'America/Los_Angeles'

date_is_day_first

This parameter is used by the Conversion Tool when parsing dates which are in a localised format. For the US it needs to be set to False.

date_is_day_first: False

It is used by the following parsers:

  • Bitfinex
  • CoinTracking
  • Trezor Suite
  • Volt

trade_allowable_cost_type

For US this should be set to 0, so the fee is attributed to only the buy asset for crypto-to-crypto trades. See here.

  • 0 = Buy asset
  • 1 = Sell asset
  • 2 = Split evenly between the buy and sell asset
trade_allowable_cost_type: 0

lost_buyback

Lost buyback is not required for the US. See here.

lost_buyback: False

fiat_income

Income received in fiat currency should be included along with crypto in the income report. See here.

fiat_income: True

default_tax_rules

This is a new config parameter. It lets you set the default tax rules for the Accounting Tool. This is something more for the future, as this version only supports US Individuals.

default_tax_rules: 'US_INDIVIDUAL'

cost_basis_zero_if_missing

This is a new config parameter. When set to True BittyTax will automatically add an acquisition (Buy) with a cost basis of zero, for any disposal (Sell) amount where a matching Buy is missing from your transaction records.

When this happens the integrity check will fail since more tokens have been created than originally accounted for. The difference should be the total amount of the tokens created at zero cost.

A new option has been added to let you continue if the intergiry check fails without having to re-run the Accounting tool.

The default for this parameter is False.

Accounting Tool

The table below summarises how each transaction type will be taxed according to the IRS tax rules.

Transaction Type Capital Gains Income
Deposit
Mining
Staking
Interest
Dividend
Income
Gift-Received
Fork
Airdrop
Referral
Cashback
Fee-Rebate
Trade
Withdrawal
Spend
Gift-Sent ✳️
Gift-Spouse ✳️
Charity-Sent ✳️
Lost

✳️ These are not liable for capital gains tax (within limitations), they will appear in the "Other Disposals" section of your tax report.

Only trading fees are included as an allowed cost.

Capital Gains disposals are categorised as either Short-Term or Long-Term depending on how long you have held the asset. Short-term means you have held the asset for less that 1 year.

You can see an example of the BittyTax US PDF report here.

FIFO

The only method currently implemented for matching disposals to acquisitions is FIFO (First-In, First-Out). If you would like additional methods implemented, please get in touch.

If no matching acquisition can be found for a disposal, a warning will be produced and the Accounting Tool will exit with an error. That is unless the config parameter cost_basis_zero_if_missing has been used.

Output Format

A new command argument has been added --format, this lets you choose the output format of your tax report.

The following options are available:

Format Description Default Filename
PDF BittyTax tax report in PDF format (default) BittyTax_Report.pdf
IRS IRS Form 8949 BittyTax_IRS-<year>.pdf
TURBOTAX_CSV TurboTax Online "Other (Gain/Loss)" CSV format BittyTax_TurboTax.csv
TURBOTAX_TXF TurboTax Desktop TXF format BittyTax_TurboTax.txf
TAXACT TaxAct "1099-B CSV import" format BittyTax_TaxAct.csv

For example:

bittytax BittyTax_Records.xlsx --format TURBOTAX_CSV

TurboTax may or may not recognise an acquisition date of "VARIOUS", i.e. when there are multiple purchase dates.

To help you categorise this disposal correctly, BittyTax will use "VARIOUS" in uppercase for a long-term disposal, and lowercase "various" for short-term.