尚未偵測到更新。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.