# dLedger — Complete Documentation > Open-source personal finance application with double-entry bookkeeping, powerful reports, and DeFi/crypto tracking. ## Getting Started ### Getting Started ## Installation Download the latest release from the and follow the instructions for your platform. ## Creating your first ledger When you open dledger for the first time, create a new ledger. This sets up a local database where all your financial data will be stored. ## Adding accounts Set up your account hierarchy using the Accounts section. dledger uses standard double-entry bookkeeping account types: - **Assets**: bank accounts, crypto wallets, investments - **Liabilities**: credit cards, loans - **Income**: salary, interest, staking rewards - **Expenses**: food, rent, fees ## Recording your first transaction Create a new entry in the Journal section. Each transaction has at least two line items that must balance: ## Importing transactions Instead of manual entry, you can import transactions from bank statements, crypto exchanges, or blockchain explorers. See [Importing Transactions](/docs/importing-transactions) for details. ## Next steps - Learn about [Ledger format import & export](/docs/journal-format) - Set up [transaction imports](/docs/importing-transactions) - Explore [reports](/docs/reports) --- ### Importing Transactions ## Supported formats dledger can import transactions from a variety of sources: - **CSV**: Generic CSV files from any bank or institution, with built-in presets for popular banks (N26, Revolut, La Banque Postale, and more) - **OFX/QFX**: Open Financial Exchange format - **PDF**: Bank statements in PDF format (with parsers for supported banks) - **Ledger**: Plain-text Ledger format files from other double-entry tools ## Importing files In dledger, navigate to the Import section, select your file format, and upload your file. For CSV files, you can choose from built-in bank presets or configure a custom mapping. ## Exchange sync dledger supports direct sync with 40+ crypto exchanges via API keys. Connect your exchange account to automatically import your trade history, deposits, withdrawals, and staking rewards. Supported exchanges include Kraken, Binance, Coinbase, Bybit, OKX, Bitstamp, Crypto.com, KuCoin, Gate.io, and many more. ## Blockchain sync Track on-chain transactions by adding your wallet addresses or extended public keys. dledger supports 40+ blockchains including Bitcoin, Ethereum, Solana, Cosmos, Polkadot, and more. ## Smart categorization When you import transactions, dledger automatically categorizes them based on patterns it has learned from your manual entries. You can always override the suggested category. ## Deduplication dledger detects and skips duplicate transactions when importing, so you can safely import overlapping date ranges without creating duplicates. --- ### Ledger Format Import & Export ## What is the Ledger format? The Ledger format is a widely used plain-text format for double-entry bookkeeping. dledger supports importing from and exporting to this format, making it easy to migrate data from other tools or to keep a human-readable backup of your transactions. ## Transaction syntax Each transaction starts with a date and description, followed by two or more postings: ``` 2026-02-01 Coffee shop expenses:food:coffee 4.50 EUR assets:bank:checking ``` The last posting amount can be omitted; dledger will infer it to balance the transaction. ## Accounts Accounts are organized hierarchically using colons as separators: - `assets:bank:checking`: a checking account - `expenses:food:groceries`: grocery expenses - `income:salary`: salary income - `liabilities:credit-card`: credit card balance ## Multi-currency transactions Record transactions in different currencies: ``` 2026-02-15 International transfer assets:bank:eur -500.00 EUR assets:bank:usd 540.00 USD ``` ## Comments Comments use `;` or `#`: ``` ; This is a comment 2026-02-20 Rent payment expenses:housing:rent 800.00 EUR ; Monthly rent assets:bank:checking ``` ## Importing a Ledger file In dledger, go to the import section and select "Ledger file" as the format. Choose your `.ledger` or `.dledger` file and dledger will parse the transactions and add them to your database. ## Exporting to Ledger format You can export your transactions from dledger in Ledger format for use with other tools or as a plain-text backup. --- ## Features ### Reports ## Available reports dledger includes several built-in reports accessible from the Reports section: - **Trial Balance**: account balances as of a specific date - **Income Statement**: revenue and expenses over a period - **Balance Sheet**: assets, liabilities, and equity snapshot - **Gain/Loss Report**: capital gains per disposal with lot tracking - **Unrealized P&L**: mark-to-market positions - **Portfolio**: net worth composition - **DeFi Report**: protocol position summary - **Protocol P&L**: DeFi yield and losses by protocol - **Budget**: expense budgeting and tracking ## Filtering All reports support filtering by: - **Date range**: view any period - **Account**: focus on specific accounts or account types - **Currency**: view in your preferred currency ## Export Export reports as CSV for use in spreadsheets or for sharing with your accountant. --- ### DeFi & Crypto Tracking ## Multi-chain support dledger tracks crypto transactions across 40+ blockchains, including Ethereum and EVM-compatible chains, Bitcoin, Solana, Cosmos, Polkadot, and many more. See the [full list of supported blockchains](/docs/supported-services). ## How it works Add your wallet addresses or extended public keys in the app. dledger imports your on-chain transactions from blockchain explorers and automatically recognizes interactions with DeFi protocols. Over 70 protocol handlers are built in, covering major protocols like Uniswap, Aave, Lido, Curve, Compound, Pendle, EigenLayer, and more. Each handler understands the protocol's contract interactions and categorizes them appropriately. ## What gets tracked - **Swaps** — token exchanges on DEXs and aggregators - **Liquidity positions** — LP deposits, withdrawals, and fee accruals - **Staking and unstaking** — native staking, liquid staking (Lido, Marinade, etc.) - **Lending and borrowing** — supply, borrow, repay, and liquidation events - **Yield farming** — reward claims and compounding - **Airdrops** — token distributions All recognized transactions are categorized into your chart of accounts automatically. ## Price tracking dledger fetches historical prices to compute accurate portfolio valuations in your base currency. --- ### Tax Reporting ## Capital gains computation dledger computes capital gains using the **portfolio-weighted formula** required by French law (Art. 150 VH bis CGI). This method considers the total acquisition cost of your entire crypto portfolio relative to the portfolio's total value at the time of each disposal — it is not the same as FIFO or other lot-based methods used in other countries. ## French tax forms dledger generates the French tax forms required for declaring crypto capital gains: - **Form 2086**: Capital gains from digital asset disposals (Art. 150 VH bis CGI) - **Form 2042-C**: Professional activities declaration - **Form 3916-bis**: Foreign exchange account declaration Navigate to the Reports section in dledger and select the appropriate tax report for your declaration period. ## Lot tracking dledger tracks individual acquisition lots for each asset, providing a complete audit trail of every acquisition and disposal. This allows you to verify computations and trace the origin of each position. ## Export formats Export your tax reports for your accountant or for manual entry: - **CSV**: Spreadsheet-compatible export ## Related guides - [French Crypto Tax Guide](/docs/france-crypto-tax) — complete guide to declaring crypto in France - [Step-by-step: Filling out Form 2086](/docs/france-crypto-tax-form-2086) — walkthrough of every field - [Crypto Tax Declaration Checklist](/docs/france-crypto-tax-checklist) — make sure you don't miss anything --- ### AI in dLedger ## Overview dLedger takes a **local-first, privacy-by-design** approach to AI. Machine learning models run entirely in your browser — no data is ever sent to external servers. This philosophy extends to every AI feature in the app: if it can't run locally with full privacy, it doesn't ship. ## Smart categorization — how it works When you import transactions, dLedger can automatically suggest which accounts to categorize them into. The entire ML pipeline runs in a [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API), isolated from the main thread to keep the UI responsive. ### Embedding model **Model:** `Xenova/all-MiniLM-L6-v2` (~23MB quantized) The primary classification method. It embeds transaction descriptions and account names into a shared 384-dimensional vector space, then uses cosine similarity to find the best-matching account. How it learns from your history: - Combines account label embeddings with historical description embeddings from your existing transactions - The more transactions you have in a given account, the richer its embedding representation becomes - No fine-tuning or training — it works out of the box with your chart of accounts **Performance:** 20–50ms per transaction ### Zero-shot fallback **Model:** `Xenova/nli-deberta-v3-xsmall` (~45MB quantized) When the embedding model's confidence is below threshold, dLedger falls back to zero-shot classification using Natural Language Inference (NLI). This model evaluates each candidate account as a hypothesis against the transaction description. **Performance:** 100–300ms per transaction ### Batch processing When importing large files, the pipeline processes descriptions in batches at approximately 300–500 descriptions per second (embedding path). ### Integration Smart categorization is available in all import dialogs — CSV, OFX, PDF. Look for the **"Classify with AI"** button. Suggestions appear as blue badges next to each transaction. ### User control - Suggestions are **never applied automatically** — you must accept them before import - Manual categorization rules always take priority over AI suggestions - You can accept, reject, or modify any suggestion individually ## Tag suggestions The same ML pipeline powers tag suggestions. Based on patterns in your historical transactions, dLedger suggests relevant tags during import. These follow the same opt-in, suggestion-only approach as account categorization. ## Configuration All ML features are opt-in. Configure them in **Settings > ML Classification**: | Setting | Description | Default | |---------|-------------|---------| | Enable ML classification | Master toggle for all AI features | Off | | Confidence threshold | Minimum score to show a suggestion (0.3–0.9) | 0.5 | | Clear cached models | Remove downloaded models from browser cache (~70MB) | — | ## Privacy guarantees - **Zero network calls** for classification — all processing happens in your browser - Models are **open-source** from [HuggingFace](https://huggingface.co/) (MIT / Apache 2.0 licensed) - Models are cached in the browser's **Cache API** — no external storage - **No training or fine-tuning** — models work as-is with your data, nothing is sent back - The Web Worker is **fully isolated** — it has no access to network APIs ## AI-assisted development dLedger's development process leverages AI tools: - **Claude** for code generation, architecture decisions, and code review - AI-driven **planning and implementation workflow** — from PRD to implementation to testing - **Human oversight** at every step — all code is reviewed, tested, and approved by maintainers - Helps maintain code quality and development velocity as a small project This is documented transparently because we believe users should know how their software is built. ## Future directions - **No remote LLM for now** — the privacy bar is too high for financial data to leave your device - We're monitoring advances in **on-device models**, **confidential computing**, and **privacy-preserving inference** - Open to expanding AI features when privacy can be **fully guaranteed** — not just promised - The current local-only approach provides the **strongest possible privacy guarantee** --- ### Supported Services Missing a service? to let us know. --- ### dLedger vs Paid Alternatives ## dLedger vs paid crypto tax software There are several paid services that help with crypto tax reporting in France. dLedger takes a different approach: it's **open-source**, **free**, and keeps **all your data local**. Here's how they compare. ### At a glance | Feature | dLedger | Paid services | |---------|---------|---------------| | **Price** | Free, forever | 50–300€/year typically | | **Data storage** | 100% local — your machine only | Cloud-based — your data on their servers | | **Open source** | Yes — full source code available | No — proprietary | | **French tax formula** | Portfolio-weighted method (Art. 150 VH bis) | Same formula | | **Form 2086 data** | Generated automatically | Generated automatically | | **Exchange imports** | CSV/OFX/PDF/Ledger file imports + API sync | API connections + file imports | | **Account required** | No | Yes | | **Internet required** | Only for price data | Always | ### Why open source matters With paid crypto tax software, you trust the company with your complete financial history: every transaction, every wallet address, every exchange account. You have no way to verify what happens with your data or how calculations are performed. With dLedger: - **Audit the code yourself** — every calculation is transparent and verifiable - **No vendor lock-in** — export your data in standard Ledger format, not trapped in a proprietary database - **Community-driven** — bugs get found and fixed by users, not hidden behind support tickets - **No subscription fees** — the software doesn't stop working when you stop paying ### Privacy comparison Paid services typically require: - Creating an account with your email - Connecting exchange accounts via API keys (read access to all your trades) - Uploading transaction files to their cloud - Storing your complete crypto financial history on their servers dLedger requires: - Nothing. Download and run. All data stays on your machine. ### What dLedger does well - **French tax compliance** — built specifically for the French portfolio-weighted formula - **Multi-source imports** — CSV, OFX, PDF, Ledger from any exchange or wallet, plus API sync with 40+ exchanges - **Complete calculation** — total acquisition cost, portfolio value tracking, gain/loss per disposal - **Form 2086 output** — all fields pre-calculated and ready to report - **Double-entry accounting** — proper bookkeeping for your entire financial picture, not just crypto taxes - **DeFi and on-chain tracking** — blockchain data import for DeFi positions ### When a paid service might make sense - If you need a broader range of **real-time API sync** with exchanges - If you prefer a **fully managed cloud experience** with no local setup - If you need **professional support** with guaranteed response times ### The bottom line For most individual crypto holders in France, dLedger provides everything you need to file correctly — without paying a subscription or giving up your financial data. It's built on the same tax formulas, produces the same outputs, and you can verify every calculation. ### Related guides - [French Crypto Tax Guide](/docs/france-crypto-tax) — complete guide to declaring crypto in France - [Step-by-step: Filling out Form 2086](/docs/france-crypto-tax-form-2086) — walkthrough of every field - [Crypto Tax Declaration Checklist](/docs/france-crypto-tax-checklist) — make sure you don't miss anything - [Capital Gains Calculator](/docs/france-crypto-tax-calculator) — compute your taxable gain [Get started with dLedger →](/#getting-started) --- ## French Crypto Tax ### French Crypto Tax Guide (2026) ## TL;DR - **Flat tax (PFU) is 31.4%** since January 1, 2025 (up from 30% due to CSG increase from 9.2% to 10.6%). - **Only sales to fiat currency (EUR) or purchases of goods/services are taxable.** Crypto-to-crypto swaps are **not** taxable. - France uses a **unique portfolio-weighted formula** to calculate gains, and you cannot simply subtract purchase price from sale price. - **Losses cannot be carried forward** to future years, and they only offset gains within the same calendar year. - You must file **Form 2086** (disposal details), **Form 3916-bis** (foreign exchange accounts), and **Form 2042-C** (summary in boxes 3AN/3BN). - **Failing to declare foreign accounts** (Binance, Kraken, etc.) carries a penalty of **750€ per account** (1,500€ if balance exceeds 50,000€). - **Mining income** is taxed as BNC (non-commercial profits) at the value received. - **DeFi and staking** have no unified tax doctrine yet. This is the biggest area of uncertainty. - **DAC8 automatic reporting** by platforms started January 1, 2026, and the tax authority now receives your transaction data directly. - The progressive tax scale (**barème progressif**) is available as an alternative to the flat tax and may be cheaper for lower incomes. ## What is taxed? ### Taxable events Two types of transactions trigger a taxable event for cryptocurrency in France: 1. **Sale of crypto for fiat currency**: Selling Bitcoin for euros, withdrawing to your bank account, etc. 2. **Purchase of goods or services with crypto**: Paying for a product or service directly with cryptocurrency. In both cases, you must calculate the capital gain (plus-value) using the portfolio-weighted formula described below. ### Non-taxable events The following are **not** taxable events: - **Crypto-to-crypto swaps**: Trading BTC for ETH, swapping tokens on a DEX, etc. This has been explicitly confirmed as non-taxable since 2023. - **Transferring crypto between your own wallets**: Moving coins from an exchange to a hardware wallet. - **Receiving crypto as a gift**: Though the recipient's acquisition cost becomes the value at the time of the gift. ### Special cases - **Mining**: Income from mining is taxed as **BNC (Bénéfices Non Commerciaux)** at the fair market value of the coins when received. This is separate from capital gains on later sales. - **Staking rewards**: No unified doctrine exists. The most common interpretation is that staking rewards are taxable as BNC when received, similar to mining. However, this remains legally uncertain. - **Airdrops**: Generally considered taxable at receipt value, but treatment varies. Free airdrops with no consideration may be treated differently from airdrops earned through participation. - **DeFi yields** (lending, liquidity provision): This is the **most uncertain area**. No official guidance covers DeFi comprehensively. Conservative approach: treat yields as BNC income at receipt. Consult a tax professional for significant amounts.
## Tax rates ### PFU (Prélèvement Forfaitaire Unique): 31.4% The flat tax is the default option and the simplest to apply: | Component | Rate | |-----------|------| | Income tax | 12.8% | | CSG | 10.6% | | CRDS | 0.5% | | Solidarity levy | 7.5% | | **Total PFU** | **31.4%** | The CSG increased from 9.2% to 10.6%, effective for 2025 income onwards, raising the total PFU from 30% to 31.4%. ### Barème progressif (progressive tax scale) As an alternative, you can opt for the progressive income tax scale. Your crypto gains are added to your other income and taxed according to the 2025 brackets: | Bracket | Rate | |---------|------| | Up to 11,497€ | 0% | | 11,498€ – 29,315€ | 11% | | 29,316€ – 83,823€ | 30% | | 83,824€ – 180,294€ | 41% | | Above 180,294€ | 45% | **Important**: When choosing the barème progressif, social contributions of **18.6%** still apply on the crypto gain (CSG 10.6% + CRDS 0.5% + solidarity 7.5%). Only the income tax portion changes. ### How to choose - **PFU is better** if your marginal tax rate (including crypto gains) would be above 12.8%. - **Barème is better** if your total taxable income (including crypto gains) keeps you in the 0% or 11% bracket. - The choice applies to **all** your capital income for the year (dividends, interest, etc.), not just crypto. - Use the comparison tool to calculate which option saves you more.
## The French calculation method ### Portfolio-weighted formula France does **not** use FIFO, LIFO, or specific identification. Instead, it uses a unique portfolio-weighted average method: **Plus-value = Sale Price − (Total Acquisition Cost × Sale Price ÷ Total Portfolio Value)** Or more formally: ``` PV = Prix_cession − (Prix_total_acquisition × Prix_cession / Valeur_globale_portefeuille) ``` Where: - **Prix_cession** = the amount received from the sale (in EUR) - **Prix_total_acquisition** = the total amount you have ever spent acquiring crypto (cumulative) - **Valeur_globale_portefeuille** = the total value of your entire crypto portfolio at the moment of the sale ### Worked example Suppose: - You bought 1 BTC for **10,000€** and 10 ETH for **5,000€** over time. - Your **total acquisition cost** = 15,000€ - Today your portfolio is worth **40,000€** (total value of all holdings) - You sell some crypto for **8,000€** Calculation: ``` PV = 8,000 − (15,000 × 8,000 / 40,000) PV = 8,000 − 3,000 PV = 5,000€ taxable gain ``` Tax at PFU: 5,000 × 31.4% = **1,570€**
### What counts as acquisition cost - Purchase price paid in fiat (EUR, USD, etc.) - Fees paid to acquire crypto (exchange fees, network fees) - For mined coins: the fair market value at the time of receipt (already taxed as BNC) - For gifted coins: the value at the time of the gift ### What counts as portfolio value The total fair market value of **all** your crypto assets at the exact moment of each sale, across all wallets and exchanges. ## Occasional vs. professional ### Criteria for classification The tax authority considers the following factors to determine if you are a professional trader: - **Frequency** of transactions - **Amount** of capital invested - **Tools and infrastructure** used (bots, APIs, advanced setups) - **Whether trading is your main source of income** - **Time devoted** to trading activities There is no single threshold; it is a bundle of indicators assessed case by case. ### Consequences - **Occasional traders** (most individuals): Gains taxed under **PFU at 31.4%** (or barème progressif). - **Professional traders**: Gains taxed as **BIC (Bénéfices Industriels et Commerciaux)**, subject to income tax + social contributions (~45%+ effective rate). Must register as a business. ## Required tax forms ### Form 2086: Disposal detail For each taxable disposal during the year, you must report: - Date of the disposal - Sale price (prix de cession) - Total acquisition cost at time of sale - Total portfolio value at time of sale - Calculated gain or loss All disposals are listed, and the net result (total gains minus total losses) is carried to Form 2042-C. > **See also**: [Step-by-step guide to filling out Form 2086](/docs/france-crypto-tax-form-2086) ### Form 3916-bis: Foreign account declarations You must declare **every** account held on a foreign platform: - Binance, Kraken, Coinbase, Crypto.com, etc. (any platform headquartered outside France) - This applies even if the account had a **zero balance** during the year - You must provide: platform name, account number, date opened/closed, account holder details ### Form 2042-C: Summary The net gain or loss from Form 2086 is reported in: - **Box 3AN**: Net taxable gain (if positive) - **Box 3BN**: Net loss (if the total is negative, which cannot be carried forward) ## Penalties ### Failure to declare disposals - **10% surcharge** for late filing - **40% surcharge** for deliberate omission - **80% surcharge** for fraudulent concealment - Plus interest on late payments (0.2% per month) ### Failure to declare foreign accounts - **750€ per undeclared account** per year - **1,500€ per account** if the balance exceeded 50,000€ at any point during the year - These penalties apply per account, per year, and they add up quickly ### With DAC8 in effect Since January 1, 2026, platforms automatically report your transactions to tax authorities across the EU. Failing to declare is now much more likely to be detected. ## Key dates ### 2026 regulatory changes | Date | Event | |------|-------| | January 1, 2026 | CSG increases to 10.6% → PFU becomes 31.4% | | January 1, 2026 | DAC8: automatic transaction reporting by platforms | | July 1, 2026 | MiCA regulation fully applicable | ### Declaration timeline (for 2025 income) | Period | Action | |--------|--------| | January–December 2025 | Tax year (transactions to declare) | | April 2026 | Online declaration opens | | May–June 2026 | Filing deadlines (varies by department zone) | | Late 2026 | Tax notice received | ## Automate with dLedger Tracking portfolio value, total acquisition cost, and computing the weighted formula by hand for every disposal is tedious and error-prone. **dLedger** handles this automatically: - **Import from all your exchanges and wallets**: centralize your full transaction history in one place - **Track total portfolio value over time**: dLedger maintains an accurate snapshot of your portfolio value at every disposal, across all accounts - **Compute Form 2086 values automatically**: total acquisition cost, portfolio value at each disposal, and the resulting gain or loss are all calculated for you - **100% local and private**: all data stays on your machine. No cloud, no third-party access, no account required [Get started with dLedger →](/#getting-started) ### Related guides - [Step-by-step: Filling out Form 2086](/docs/france-crypto-tax-form-2086) — walkthrough of every field - [Crypto Tax Declaration Checklist](/docs/france-crypto-tax-checklist) — make sure you don't miss anything - [dLedger vs Paid Alternatives](/docs/dledger-vs-paid-alternatives) — why open-source and local-first matters ## Historical changes (2019–2026) | Year | Key changes | |------|-------------| | 2019 | Initial crypto tax framework established (Art. 150 VH bis CGI). PFU set at 30%. Portfolio-weighted formula introduced. | | 2020–2022 | Framework stable. Guidance refined through BOFiP updates. | | 2023 | **305€ annual exemption threshold abolished.** Crypto-to-crypto swaps explicitly confirmed as non-taxable. | | 2024 | DAC8 directive adopted at EU level. MiCA regulation enters initial phase. | | 2025 | DAC8 transposed into French law. Platforms begin preparation for automatic reporting. | | 2026 | **CSG increased to 10.6% → PFU rises to 31.4%.** DAC8 automatic reporting begins January 1. MiCA fully applicable July 1. | --- ### How to Fill Out Form 2086 (Crypto Tax) ## Step-by-Step: Filling Out Form 2086 Form 2086 (**Déclaration des plus ou moins-values de cessions d'actifs numériques**) is the mandatory French tax form for reporting every crypto disposal during the tax year. Each sale of crypto for fiat or purchase of goods/services with crypto must appear on this form. > This guide walks through Form 2086 in detail. For a broader overview, see the [French Crypto Tax Guide](/docs/france-crypto-tax). For a quick preparation overview, use the [Declaration Checklist](/docs/france-crypto-tax-checklist). ### Before you start Make sure you have the following information for **each taxable disposal** during the year: - **Date of the disposal** - **Sale price** (prix de cession) — the amount in EUR you received - **Total acquisition cost** (prix total d'acquisition) — cumulative amount ever spent buying crypto, at the time of the disposal - **Total portfolio value** (valeur globale du portefeuille) — fair market value of your entire crypto portfolio at the exact moment of the disposal - **Calculated gain or loss** using the [portfolio-weighted formula](/docs/france-crypto-tax#the-french-calculation-method) > **Tip**: Use the [Capital Gains Calculator](/docs/france-crypto-tax-calculator) to compute these values for each disposal. ### Step 1: Access Form 2086 1. Log in to your tax account at [impots.gouv.fr](https://www.impots.gouv.fr). 2. Start your income declaration (déclaration de revenus). 3. In the "Revenus et charges" step, check the box **"Plus-values et gains divers"**. 4. On the detailed page, check **"Plus ou moins-values de cessions d'actifs numériques"** to unlock Form 2086. ### Step 2: Fill in each disposal For each taxable event during the year, fill in one line with: | Field | Description | Example | |-------|-------------|---------| | **Date de la cession** | Date of the sale | 15/03/2025 | | **Prix de cession** | Amount received in EUR | 8,000 € | | **Prix total d'acquisition** | Cumulative acquisition cost at time of sale | 15,000 € | | **Valeur globale du portefeuille** | Total portfolio value at time of sale | 40,000 € | | **Plus-value ou moins-value** | Calculated gain or loss | 5,000 € | The formula used for each line: ``` Plus-value = Prix de cession − (Prix total d'acquisition × Prix de cession / Valeur globale du portefeuille) ``` ### Step 3: Calculate the net result After listing all disposals: - **Sum all gains** (positive plus-values) - **Sum all losses** (negative plus-values) - The **net result** = total gains − total losses This net result is what gets carried over to Form 2042-C. ### Step 4: Report on Form 2042-C Transfer the net result to your main tax declaration: - **Box 3AN**: Enter the net gain if the total is positive - **Box 3BN**: Enter the net loss if the total is negative (this amount is informational only — losses cannot be carried forward) ### Step 5: Don't forget Form 3916-bis For each foreign platform where you held an account during the year (even with a zero balance): - File one **Form 3916-bis** per account - Include: platform name, country, account number, opening/closing dates - Common platforms requiring declaration: Binance, Kraken, Coinbase, Crypto.com, KuCoin, Bybit **Penalty for non-declaration**: 750 € per undeclared account (1,500 € if the balance exceeded 50,000 € at any point). ### Common mistakes to avoid 1. **Forgetting crypto-to-fiat conversions via stablecoins** — Selling BTC for USDT then USDT for EUR creates a taxable event at the USDT → EUR step. 2. **Using purchase price instead of portfolio-weighted formula** — France does not allow FIFO or simple subtraction. 3. **Omitting small disposals** — Every disposal counts, regardless of amount (the 305 € exemption was abolished in 2023). 4. **Wrong portfolio value** — The value must reflect your **entire** crypto portfolio at the moment of each sale, not just the asset being sold. 5. **Missing foreign account declarations** — Each exchange account needs its own Form 3916-bis. ### Choosing between PFU and barème By default, your gains are taxed at the **PFU rate of 31.4%**. You can opt for the **barème progressif** instead, but this choice applies to **all** your capital income for the year. Use the [PFU vs Barème Comparison tool](/docs/france-crypto-tax-pfu-vs-bareme) to determine which option is cheaper for your situation. ### Automate with dLedger Gathering portfolio values, acquisition costs, and computing the weighted formula for every disposal by hand is tedious and error-prone. **dLedger** can: - **Import transactions** from all your exchanges and wallets - **Compute each disposal's values** automatically (acquisition cost, portfolio value, gain/loss) - **Generate Form 2086-ready data** with all fields pre-calculated - **Keep everything local** — your data never leaves your machine [Get started with dLedger →](/#getting-started) --- ### Crypto Tax Declaration Checklist (2026) ## Crypto Tax Declaration Checklist Use this checklist to make sure you don't miss anything when filing your crypto tax declaration for 2025 income (filed in 2026). > For the full tax rules, see the [French Crypto Tax Guide](/docs/france-crypto-tax). Not sure if your transaction is taxable? Try the [Tax Decision Tree](/docs/france-crypto-tax-decision-tree). ### Before you start - [ ] **Gather all exchange account histories** — download CSV exports from every platform you used during 2025 (Binance, Kraken, Coinbase, etc.) - [ ] **List all wallets** — include hardware wallets, software wallets, and DeFi positions - [ ] **Identify all taxable events** — every sale of crypto for EUR (or other fiat) and every purchase of goods/services with crypto - [ ] **Note: crypto-to-crypto swaps are NOT taxable** — do not include them as disposals - [ ] **Collect acquisition costs** — the total cumulative amount spent buying crypto at the time of each disposal - [ ] **Record portfolio values** — the total fair market value of your entire crypto portfolio at each disposal moment ### Forms to file - [ ] **Form 2086** — one line per taxable disposal with: date, sale price, total acquisition cost, portfolio value, gain/loss ([step-by-step guide](/docs/france-crypto-tax-form-2086)) - [ ] **Form 3916-bis** — one per foreign exchange account held during the year (even with zero balance) - [ ] **Form 2042-C** — report the net result in box 3AN (gain) or 3BN (loss) ### Key calculations - [ ] **Apply the portfolio-weighted formula** for each disposal: ``` Gain = Sale Price − (Total Acquisition Cost × Sale Price ÷ Total Portfolio Value) ``` Use the [Capital Gains Calculator](/docs/france-crypto-tax-calculator) to compute each one. - [ ] **Sum all gains and losses** to get the net result - [ ] **Choose between PFU (31.4%) and barème progressif** — use the [PFU vs Barème tool](/docs/france-crypto-tax-pfu-vs-bareme) to compare ### Special situations - [ ] **Mining income** — declare as BNC (non-commercial profits) at fair market value when received - [ ] **Staking rewards** — conservative approach: declare as BNC at receipt value - [ ] **DeFi yields** — no official guidance; conservative approach is BNC treatment. Consider consulting a tax professional - [ ] **NFT sales** — treated as crypto disposals, same formula applies ### Key deadlines (2026 filing season) | When | What | |------|------| | April 2026 | Online declaration opens on impots.gouv.fr | | May–June 2026 | Filing deadlines (varies by department zone) | | Late 2026 | Tax notice received | ### Foreign account penalties - **750€ per undeclared account** per year - **1,500€ per account** if balance exceeded 50,000€ at any point - With DAC8 in effect since January 2026, platforms now report your transactions automatically — omissions are much more likely to be detected ### Final checks - [ ] **All disposals are listed** on Form 2086 (no missing sales) - [ ] **Portfolio values are accurate** at each disposal moment (not just the sold asset, but your entire portfolio) - [ ] **All foreign accounts are declared** on Form 3916-bis - [ ] **Net result correctly transferred** to Form 2042-C (box 3AN or 3BN) - [ ] **Tax regime chosen** — PFU (default) or barème progressif ### Automate with dLedger Instead of tracking all this manually, **dLedger** imports your transactions, computes the weighted formula for every disposal, and generates Form 2086-ready data — all locally on your machine. Looking for a free, open-source alternative to paid crypto tax software? See [dLedger vs Paid Alternatives](/docs/dledger-vs-paid-alternatives). [Get started with dLedger →](/#getting-started) --- ### Crypto Capital Gains Calculator — France ## Capital Gains Calculator This calculator implements France's unique portfolio-weighted average method for computing crypto capital gains, as defined in **Article 150 VH bis** of the Code Général des Impôts. ### How to use 1. Enter the **sale price**: the amount in EUR you received from selling crypto. 2. Enter the **total acquisition cost**: the cumulative amount you have ever spent acquiring crypto. 3. Enter the **total portfolio value**: the fair market value of your entire crypto portfolio at the moment of the sale. The calculator applies the formula: ``` Plus-value = Sale Price − (Total Acquisition Cost × Sale Price ÷ Total Portfolio Value) ``` It then computes the tax owed at the current PFU rate (31.4%). ### Automate with dLedger Instead of entering these values manually, **dLedger** can compute them automatically from your transaction history. It tracks your total acquisition cost and portfolio value across all your exchanges and wallets, with no manual data entry needed. Just import your transactions and let dLedger calculate every disposal's gain or loss. [Get started →](/#getting-started) --- ### Crypto Tax Decision Tree ## Is Your Transaction Taxable? This interactive decision tree helps you determine whether a cryptocurrency transaction triggers a taxable event under French tax law. ### How to use Select your transaction type from the options presented. The tool will guide you through a series of questions to determine whether your specific situation is taxable, and if so, under which regime (capital gains via PFU, or BNC for mining/staking income). ### Automate with dLedger **dLedger** automatically categorizes your transactions and identifies taxable events. Import from exchanges and blockchains, and let dLedger determine what's taxable, with no manual classification needed. [Get started →](/#getting-started) --- ### PFU vs Barème Comparison ## PFU vs Progressive Scale This tool compares the two taxation options available for crypto capital gains in France: - **PFU (flat tax)** at 31.4% (12.8% income tax + 18.6% social contributions) - **Barème progressif** (progressive income tax scale + 18.6% social contributions) ### How to use 1. Enter your **taxable income** (excluding crypto gains), such as your salary, pensions, and other income. 2. Enter your **crypto capital gains** for the year. 3. Enter your **number of tax shares** (parts fiscales): 1 for a single person, 2 for a couple, +0.5 per dependent child. The tool calculates the total tax under each option and recommends the cheaper one. ### Automate with dLedger **dLedger** calculates your total crypto gains across all disposals and can show you which taxation option saves more. Combined with your income data, it helps you make the right choice between PFU and barème progressif. [Get started →](/#getting-started) --- ## News ### Comprehensive French Crypto Tax Guide Now Available (2026-04-06) We've published a comprehensive guide covering everything you need to know about declaring crypto taxes in France for 2025 income (2026 declarations). ### What's covered - **PFU at 31.4%**: how the flat tax works and when the progressive scale (barème progressif) saves you money - **Portfolio-weighted formula**: France's unique calculation method explained with worked examples - **Required forms**: Form 2086, Form 3916-bis, and Form 2042-C, step by step - **DAC8 automatic reporting**: what platforms now report to tax authorities since January 2026 - **Penalties**: what happens if you miss a declaration (up to 750€ per undeclared foreign account) ### Interactive tools The guide includes three interactive tools you can use directly in your browser: a capital gains calculator, a taxable transaction decision tree, and a PFU vs barème comparison. All three run locally with no data sent anywhere. ### Automate with dLedger dLedger can track your portfolio value across all exchanges and wallets privately on your machine, then automatically compute the values needed for Form 2086: total acquisition cost, portfolio value at each disposal, and the resulting gain or loss. [Read the full guide →](/docs/france-crypto-tax) --- ### dLedger Beta is Now Available (2026-04-05) We are excited to announce the public beta of dLedger! dLedger is an open-source personal finance application built around double-entry bookkeeping. Your financial data is stored locally on your machine in a private database. ### What's included in the beta - Double-entry bookkeeping with multi-currency support - DeFi and crypto transaction tracking across 40+ blockchains - Sync with 40+ crypto exchanges via API - Import from CSV, OFX, PDF, and Ledger formats - Capital gains computation with the French portfolio-weighted formula - French tax form generation (2086, 2042-C, 3916-bis) - Balance sheets, income statements, and portfolio reports - Smart categorization that learns from your entries All your data stays on your machine. No cloud accounts, no data sharing, no tracking. Get started by visiting the . --- ### Three Interactive Crypto Tax Tools (2026-03-31) We've released three interactive tools to help you navigate French crypto taxation: ### Capital Gains Calculator Enter your sale price, total acquisition cost, and portfolio value to compute your taxable gain using France's portfolio-weighted formula. See your tax at the current PFU rate of 31.4%. [Try it →](/docs/france-crypto-tax-calculator) ### Taxable Transaction Decision Tree Not sure if your transaction is taxable? Walk through a series of questions to determine whether it triggers a taxable event, and under which regime (capital gains or BNC). [Try it →](/docs/france-crypto-tax-decision-tree) ### PFU vs Barème Comparison Enter your income, crypto gains, and tax shares to see which option, flat tax at 31.4% or the progressive income tax scale, saves you more. [Try it →](/docs/france-crypto-tax-pfu-vs-bareme) ### Privacy first All three tools run entirely in your browser. No data is sent to any server. ### Go further with dLedger dLedger can automate these calculations across your full transaction history: importing from exchanges and wallets, tracking portfolio value over time, and computing every disposal's gain or loss automatically. All 100% local on your machine. --- ### How dLedger Uses AI (2026-03-27) AI is woven into dLedger in two distinct ways: it powers smart features inside the app, and it accelerates how we build the software itself. In both cases, privacy comes first. ## AI in the app — smart categorization dLedger uses machine learning to automatically categorize your transactions during import. What makes it different: **everything runs 100% locally in your browser**. No data ever leaves your device. Under the hood, two models work together: - **Embedding similarity** (`all-MiniLM-L6-v2`, ~23MB) — maps transaction descriptions and your account names into a shared vector space, then finds the best match via cosine similarity - **Zero-shot classification** (`nli-deberta-v3-xsmall`, ~45MB) — kicks in as a fallback when embedding confidence is low, using natural language inference to semantically classify transactions Both models run via [Transformers.js](https://huggingface.co/docs/transformers.js) in a Web Worker, completely isolated from the main thread. They learn from your own transaction history — the more you use dLedger, the better suggestions get. Key points: - **Suggestions only** — you see blue badges during import and must explicitly accept before anything is saved - **Tag suggestions** too — the same ML pipeline suggests tags based on historical patterns - **~70MB total** cached in your browser after first download - **Opt-in** — enable it in Settings, with a configurable confidence threshold - **Manual rules always win** — your explicit categorization rules take priority over AI suggestions ## AI-assisted development We use AI tools (primarily Claude) throughout the development process: - Code generation, architecture decisions, and code review - AI-driven planning and implementation workflow - Helps maintain quality and development velocity as a small project All code is reviewed and tested — AI assists, humans decide. ## Why no remote LLM (yet) Privacy is non-negotiable for a finance app. Sending your transaction data to external APIs is a hard line we won't cross. That said, we're watching advances in on-device models, confidential computing, and privacy-preserving inference. If and when we can expand AI features with full privacy guarantees, we will. For now, the local-only approach gives you the best possible privacy guarantee. --- For a detailed technical deep-dive, see the [AI in dLedger](/docs/ai-in-dledger) documentation page. --- ### Introducing Smart Categorization (2026-03-24) We're happy to introduce Smart Categorization, a new feature that automatically assigns categories to your imported transactions. As you import bank statements and exchange data, dLedger analyzes the transaction descriptions and assigns categories based on patterns it has learned from your previous manual entries. ### How it works - Import your transactions as usual - dLedger suggests categories based on description patterns - Correct any suggestions that need adjustment - The system learns from your corrections and improves over time Smart Categorization is available in the latest beta release. --- ### Multi-Chain DeFi Support (2026-03-15) dLedger now supports tracking DeFi activity across 40+ blockchain networks, including Ethereum and EVM chains (Polygon, Arbitrum, Optimism, Base, and more), Bitcoin, Solana, Cosmos, Polkadot, and others. See the [full list](/docs/supported-services). Add your wallet addresses and dLedger automatically imports your on-chain transactions, recognizing interactions with DeFi protocols — swaps, liquidity positions, staking, lending, and yield farming — and categorizing them into your chart of accounts. Over 70 protocol handlers are built in, covering protocols like Uniswap, Aave, Lido, Curve, Compound, and many more. ---