尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证制作者的介绍仅有上面的一句话。 更多详情请阅读仓库 README。 仓库 README ↗
正在加载完整 README。
查看完整 README ↗Svensk kryptoskattekalkylator — beräknar kapitalvinster och -förluster enligt genomsnittsmetoden (GAV) och genererar underlag för K4- och T2-blanketterna.
Ansvarsfriskrivning: KryptoSkatt är ett hjälpverktyg. Det ersätter inte professionell skatterådgivning. Kontrollera alltid dina uppgifter mot Skatteverkets aktuella regler innan du lämnar in din deklaration. Appen har användarvillkor (
/villkor), integritetspolicy (/integritet) och en metodbeskrivning (/om-berakningen). Texterna bör granskas av en jurist innan en publik instans lanseras.
| Du är… | Läs |
|---|---|
| Användare av en KryptoSkatt-sida | Användarhandledning · User guide (English) |
| Administratör som driftar en publik sida på Linux | Driftguide: server, HTTPS, säkerhetskopior, uppdatering, GDPR, checklista |
| Utvecklare | Arkitektur · API-referens · CONTRIBUTING · Förbättringsförslag |
| Område | Vad som stöds |
|---|---|
| Importer | Coinbase, Coinbase Advanced Trade, Crypto.com, MEXC, Binance, KuCoin, Kraken, Bybit, Bitstamp, OKX, Gate.io, Ledger Live, manuell swap-CSV |
| On-chain-hämtning | Utan nyckel: Bitcoin inkl. xpub (Blockstream), Ethereum/Base/Arbitrum/Polygon (Blockscout), XRP, Kadena. Med gratisnyckel: BNB (Etherscan), Solana (Helius/Solscan), TRON, VeChain, Peaq/Substrate. Anpassade Blockscout-/Etherscan-kedjor |
| Beräkning | GAV (genomsnittsmetoden) med gemensam pool över alla plånböcker, kostnadsneutrala flyttar mellan egna plånböcker, 70 %-regeln för förluster (K4 avsnitt D), avduplicering, transfermatchning, prisberikning (eget pris → swap-implicit → CoinGecko → Binance/Kraken → CoinAPI, till SEK via Riksbanken) |
| Rapporter | K4-underlag (CSV/JSON/HTML), SRU-export för Skatteverket (avsnitt D), T2-inkomstrapport, år-till-år GAV-överföring, revisionsunderlag, GAV-historik, nettopositoner, skrivskyddad delningslänk till revisor, datakvalitetsflaggor |
| Gränssnitt | Webb-UI (FastAPI + Jinja2, svenska/engelska) · REST API (/api/v1/) · CLI |
| Integritet & säkerhet | Anonyma konton (inget namn, ingen e-post, inget lösenord), bara nödvändiga cookies, inga tredjepartsskript eller externa typsnitt, hashade sessionstokens, krypterade API-nycklar, SSRF-skydd, begränsning av inloggningsförsök per IP och globalt, multi-tenant-isolation, GDPR-export och radering, automatisk radering av inaktiva konton |
git clone https://github.com/bambapappa/kryptoskatt.git
cd kryptoskatt
cp .env.example .env # sätt COOKIE_SECURE=false för http://localhost
docker compose up -d --build
# öppna http://localhost:8000
Migreringar och rensning av inaktiva konton körs automatiskt vid start. Inga API-nycklar behövs.
cp .env.example .env # sätt DOMAIN, POSTGRES_PASSWORD/DATABASE_URL, SECRET_KEY,
# CORS_ORIGINS, OPERATOR_NAME, OPERATOR_CONTACT
docker compose -f docker-compose.yml -f docker-compose.prod.yml up -d --build
docker-compose.prod.yml lägger Caddy framför appen (automatisk HTTPS via Let's Encrypt). Appen och databasen nås då bara på ett internt nät. Uppdatera med bash deploy.sh (tar säkerhetskopia först). Hela genomgången, med brandvägg, säkerhetskopior, övervakning, GDPR och checklista före lansering, finns i docs/drift.md.
Krav: Python 3.12+, PostgreSQL 14+ (Docker-imagen kör Python 3.13 och composen Postgres 18)
Uppgradering till Postgres 18: en ny major-version startar inte på en gammal datakatalog. Vill du inte migrera databasen nu — sätt
POSTGRES_IMAGE=postgres:16-alpine(din nuvarande major) i.envså rörs inte volymen; app-migrationerna fungerar ändå. Vill du faktiskt gå till 18: ta en dump först (docker compose exec db pg_dump -U kryptoskatt kryptoskatt > backup.sql), ta bortpgdata-volymen, starta på 18 och återställ.
# Skapa virtuell miljö och installera
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
# Miljöfil
cp .env.example .env
# Redigera .env med databasanslutning
# Kör migrationer
alembic upgrade head
# Starta webb
kryptoskatt serve --host 0.0.0.0 --port 8000
Alla inställningar sätts via .env eller miljövariabler (se .env.example för komplett lista):
# Obligatorisk
DATABASE_URL=postgresql://user:pass@localhost:5432/kryptoskatt
# API-nycklar (alla valfria, gratisnivåer räcker; användare kan även ange egna)
ETHERSCAN_API_KEY= # BNB (+ ETH/Polygon/Base/Arbitrum, annars Blockscout utan nyckel)
HELIUS_API_KEY= # Solana (rekommenderas)
SOLSCAN_API_KEY= # Solana (reserv)
COINGECKO_API_KEY= # Historiska priser (demo-nyckel ger högre gränser)
# Säkerhet
COOKIE_SECURE=true # false vid lokal HTTP-utveckling
CORS_ORIGINS=["https://yourdomain.com"]
SECRET_KEY= # krypterar användarnas API-nycklar, krävs för att spara dem
FORWARDED_ALLOW_IPS=127.0.0.1 # reverse proxyns IP
# Juridik & integritet
OPERATOR_NAME= # personuppgiftsansvarig, visas i /integritet och /villkor
OPERATOR_CONTACT= # kontakt-e-post
INACTIVE_ACCOUNT_MONTHS=24 # radera konton som inte använts så här länge
ACCESS_LOG=false # HTTP-åtkomstloggar innehåller IP-adresser och delningstoken
# Övrigt
LOG_LEVEL=INFO
DEBUG_MODE=false
PRICE_HISTORY_DIR=PriceHistory
kryptoskatt --help
# Importera CSV-fil
kryptoskatt import --file export.csv
kryptoskatt import --file export.csv --platform coinbase
# Hämta on-chain-transaktioner
kryptoskatt fetch --all # Alla registrerade plånböcker
kryptoskatt fetch --address 0x... --chain ETHEREUM
# Beräkna skatt för ett år
kryptoskatt calculate 2024
# Generera rapporter
kryptoskatt report 2024 # K4 till stdout
kryptoskatt report 2024 --format csv --output-dir ./rapporter
# SRU-filer för Skatteverkets e-inlämning (INFO.SRU + BLANKETTER.SRU)
kryptoskatt report 2024 --format sru --personnummer ÅÅÅÅMMDDNNNN --namn "För Efternamn"
# År-till-år GAV-överföring (ingående/utgående balans per mynt)
kryptoskatt report 2024 --format carryover
# Starta webbserver
kryptoskatt serve --host 0.0.0.0 --port 8000
# Radera konton som inte använts på INACTIVE_ACCOUNT_MONTHS (körs även vid container-start;
# schemalägg gärna dagligen via cron)
kryptoskatt purge-inactive
# Kontrollera datakvalitet
kryptoskatt issues 2024
# Hantera plånböcker
kryptoskatt wallet add --address 0x... --chain ETHEREUM --label "Metamask"
kryptoskatt wallet list
kryptoskatt wallet remove --address 0x...
kryptoskatt wallet add-xpub zpub6r... # härled alla Bitcoin-adresser från xpub/ypub/zpub
Bas-URL: http://localhost:8000/api/v1
Autentisering via sessionscookie (kryptoskatt_session).
# Hälsokontroll (ingen auth)
curl http://localhost:8000/api/v1/health
# Skapa konto
curl -X POST http://localhost:8000/api/v1/auth/account
# Logga in (sparar cookie)
curl -X POST http://localhost:8000/api/v1/auth/session \
-H "Content-Type: application/json" \
-d '{"account_id": "ord-ord-ord-NNNN"}' \
-c cookies.txt
Komplett API-referens: docs/api.md
CSV/TSV / Blockchain-API
│
[Parsers / Chain Adapters]
│
[Transaction DB]
│
┌────┼────┐
[Dedup] [Match] [Priser]
│
[GAV-motor]
│
[Disposals + GAV Ledger]
│
[K4] [T2] [Audit]
Se docs/arkitektur.md för fullständig beskrivning.
pytest # Alla 600+ tester
pytest tests/test_gav.py # Enskild fil
pytest --cov=kryptoskatt # Med täckning
ruff check src/ # Lint
mypy # Typkontroll (kärnan)
docker compose up -d
docker compose exec app kryptoskatt calculate 2024
# Importera fil i container
docker compose cp export.csv app:/tmp/
docker compose exec app kryptoskatt import --file /tmp/export.csv
| Plattform | Platform-ID | Kommentar |
|---|---|---|
| Bitstamp | bitstamp | Transaktionsexport (v1 och v2) |
| Coinbase | coinbase | Standardexport |
| Coinbase Advanced Trade | coinbase_advanced | Fill statements |
| Crypto.com | crypto_com | |
| MEXC | mexc | Inkl. handelsavgifter |
| Binance | binance | Handelshistorik |
| KuCoin | kucoin | |
| Gate.io | gateio | Kontoutdrag ("my bill") |
| Kraken | kraken | Ledger-export |
| Bybit | bybit | |
| Ledger Live | ledger | NFT-filtrering |
| OKX | okx | Handels- och funding-utdrag |
| Manuell swap | manual_swap | Eget CSV-format |
| NFT-liggare | nft | Eget CSV-format för NFT-köp/-försäljning (se nedan) |
nft)NFT:er kan inte prissättas automatiskt, så köp- och säljbelopp anges i SEK.
Varje NFT blir en unik tillgång (NFT:<samling>#<token-id>) som går genom
genomsnittsmetoden och hamnar på K4 (avsnitt D) precis som annan krypto.
date,action,collection,token_id,chain,amount_sek,fee_sek,tx_hash,notes
2024-03-01,BUY,Bored Apes,1234,ETHEREUM,50000,500,0xabc,mint
2024-09-15,SELL,Bored Apes,1234,ETHEREUM,120000,1000,0xdef,
action är BUY/MINT, SELL, TRANSFER_IN eller TRANSFER_OUT.
amount_sek är NFT:ns totala pris; fee_sek läggs till omkostnaden vid köp
och dras från försäljningspriset vid sälj.
| Kedja | API-nyckel behövs |
|---|---|
| Ethereum / Polygon / Base / Arbitrum | — (Blockscout). Etherscan används om ETHERSCAN_API_KEY finns |
| BNB Smart Chain | ETHERSCAN_API_KEY (gratis) |
| Solana | HELIUS_API_KEY (gratis) eller SOLSCAN_API_KEY |
| Bitcoin | — (Blockstream) |
| TRON | TRONSCAN_API_KEY |
| VeChain | VECHAINSTATS_API_KEY |
| Peaq / Substrate | SUBSCAN_API_KEY |
| XRP | — (XRPL.org) |
| Kadena | — (Chainweb) |
| Anpassad kedja | Konfigureras via inställningar |
Bidrag välkomnas! Se CONTRIBUTING.md för hur du sätter upp dev-miljön, lägger till parsers/kedjor och skapar pull requests.
Säkerhetsproblem rapporteras privat via GitHub Security Advisories — se SECURITY.md.
Apache 2.0 — fri att använda, modifiera och distribuera, med uttryckligt patentskydd. Se även NOTICE.