TurboTax has no crypto support, it also doesn't support importing CSVs of transactions, and CreditKarma has no ability to import from financial institutions at all (so e.g. wealthfront is an instant dealbreaker for trying it). Square sends out terrible CSVs of transactions and does very little to help you report for the few bucks you made.
- Import transactions to https://app.koinly.io/transactions
- Set tax basis to LIFO, print https://app.koinly.io/reports/2019 to PDF
- Load https://app.koinly.io/transactions?page=1 and find the
transactions
JSON transfer in the Network tab, Copy as cURL - In the terminal, paste this, and either remove the gzip line or pipe through gzip, do this for each page, e.g.:
curl 'https://api.koinly.io/api/transactions?page=1&per_page=20' \
-XGET \
-H 'Accept: application/json, text/plain, */*' \
-H 'Host: api.koinly.io' \
-H 'Accept-Language: en-us' \
-H 'Access-Control-Allow-Credentials: true' \
-H 'Origin: https://app.koinly.io' \
-H 'Referer: https://app.koinly.io/' \
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1.1 Safari/605.1.15' \
-H 'Connection: keep-alive' \
-H 'Cookie: _ga=...' \
-H 'Caches-Requests: 1' \
-H 'X-Auth-Token: ...' | jq . > p1.json
- That should be enough to document the final results, but you can also make a PDF by printing each page to Preview and then dragging the first page to the main PDF (https://app.koinly.io/reports/2019).
- Confirm the values match Koinly:
- Total proceeds:
cat transactions.json | jq '[.transactions[] | select(.type=="sell") | .to.amount | tonumber] | add'
(this should match the real 1099-B PDF) - Total cost-basis:
cat transactions.json | jq '[.transactions[] | select(.type=="sell") | .from.cost_basis | tonumber] | add'
To check if the numbers match IRS reporting:
- Download wages/income transcript from https://sa.www4.irs.gov/icce-core/load/gettrans/pages/availableTranscripts.xhtml
- Copy/paste into MacVim
:%s/Recipient:\n\n/Recipient:\r
:%s/ SQUA\n.*\n.*\n.*\n.*\n.*\n.*\n.*\n\(.*\)\n.*\n.*\n.*\n.*\n\(.*\)/%%%\1,$$$\2/g
:g!/%%%/d
:%s/.*\(..-..-....\),.*\$\(.*\)/\1,\2
- Save as a CSV and make sure the numbers match up (roughly: Square seems to be flooring all numbers reported to IRS, not rounding).
Import to TT:
- Convert the transactions to a CSV format we can use:
cat transactions.json | jq -r '.transactions[] | select(.type=="sell") | [(.from.amount + " BTC"), .date, "VARIOUS", (.to.amount | tonumber), (.from.cost_basis | tonumber)] | @csv' | sed 's/T............Z//g' | gsed "1s/^/Desc,Sold,Acquired,Proceeds,Basis\n/" > out.csv
./csv2txf.py
- Import the txf to TurboTax.
- Edit the entry and change the institution name to Square, Inc.
- Don't edit any individual entires, just check that the values are right.
- You might need to edit the name of the institution in the worksheet (CMD-t)
- You might need to answer a question about whether you sold crypto in the worksheets.