Canadian/Quebec crypto tax calculator
Project description
sirop
Canadian bitcoin tax calculator. Computes capital gains, ACB, and superficial losses from exchange and wallet exports. Produces Schedule 3, Schedule G, and the Quebec TP-21.4.39-V form.
Why sirop exists
Most tax tools require you to hand over your wallet addresses or xpubs so they can pull your transaction history from the blockchain. That means a third-party service sees your full financial picture — every address you've ever used, your balances, your counterparties.
sirop takes the opposite approach: your keys never leave your machine.
You tap CSV files from your exchanges and wallets yourself, feed them to
sirop locally, and the tool boils all the math on your computer. No account
required, no data uploaded, no API keys, no address scanning. When you're done,
pour produces the tax forms you need to file — nothing more leaves your hands.
Privacy is not a feature that gets toggled on. It is the default, and nothing in sirop's design trades it away for convenience.
Disclaimer
sirop performs calculations based on publicly available CRA and Revenu Québec guidelines as understood by its author, who is a hobby software developer, not a tax professional or accountant. Do not file a tax return based solely on this tool's output without independent review by a qualified professional. The author accepts no liability for errors, omissions, penalties, or interest charges arising from its use.
That said — the math is open source. Check it.
Currently supported import formats
| Source | Format | Notes |
|---|---|---|
| Shakepay | CSV export | BTC and CAD accounts; fees embedded in spread |
| NDAX | AlphaPoint Ledgers CSV | Grouped by TX_ID; explicit fee rows |
| Sparrow Wallet | CSV export | BTC or satoshi amounts; unit auto-detected |
Installation
Requires Python 3.12+ and Poetry.
poetry install
cp .env.example .env # set DATA_DIR and optional node config
Quickstart
# 1. Create a batch for your tax year
sirop create my2025tax --year 2025
# 2. Import your exchange and wallet exports
# Pass a directory to tap all CSVs at once (with confirmation prompt):
sirop tap ~/Downloads/exports/
# Or import files individually:
sirop tap ~/Downloads/ndax_2025_ledger.csv
sirop tap ~/Downloads/shakepay_2025_btc.csv
sirop tap ~/Downloads/sparrow_2025.csv
# 3. Run the tax calculation pipeline
sirop boil
# 4. Sometimes you will need to adjust your transfer pairs (wallet-to-wallet moves)
sirop stir
# 5. Output your tax forms (PLANNED)
sirop pour
After boil, the .sirop batch file contains fully computed dispositions and
superficial-loss-adjusted gains, ready for pour (report generation).
Documentation
- Batch management — create, list, switch
- tap — import exchange and wallet transactions
- stir — review and confirm transfer pairs
- boil — run the tax calculation pipeline
Planned
pourcommand — export Schedule 3, Schedule G, and TP-21.4.39-V to PDF and CSVgradecommand — batch status and pipeline overview- Textual TUI — interactive transaction browser, ACB state viewer, and batch switcher
- Bitcoin node verification — confirm on-chain transaction details via Bitcoin Core RPC or Mempool REST API before ACB calculation
- Additional import formats — Koinly capital gains CSV (as a validation source), more Canadian exchanges
Contributing
See CONTRIBUTING.md for setup, branch model, commit format, and the privacy rule (no real transaction data anywhere in the repo).
License
MIT — see LICENSE.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sirop-0.1.0.tar.gz.
File metadata
- Download URL: sirop-0.1.0.tar.gz
- Upload date:
- Size: 53.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.7 Linux/6.17.0-14-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0cbaa9f2f9b5eaf1a8cb9e4bc2ee21f7263ff73a2e424b1173f80977cd8cfcac
|
|
| MD5 |
c23dc4dd09f142bdfc7c3dbbeeaebe0e
|
|
| BLAKE2b-256 |
21245ab24ffc82a126bc17897da1974eefd8e3c3eac877ade87bf8da185033a2
|
File details
Details for the file sirop-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sirop-0.1.0-py3-none-any.whl
- Upload date:
- Size: 68.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.2.1 CPython/3.13.7 Linux/6.17.0-14-generic
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d47c0e7f810c32b9aa7040e332c8c4d297ff5caa4138c75f859119f7ebf7b1f
|
|
| MD5 |
72a1e973d4545221226f0bc64740e9fe
|
|
| BLAKE2b-256 |
069f02ca447d99483d5607515730f65d710d37e46c61fef4ddedda4f6f0db059
|