CryptoFiscaFacile
Outil (en ligne de commande pour l'instant) vous permettant de rassembler toutes les transactions de vos différents échanges et wallets afin de constituer votre portefeuille global et ainsi vous aider à la déclaration fiscale française.
Install / Use
/learn @fiscafacile/CryptoFiscaFacileREADME
CryptoFiscaFacile v2
Ce projet a évolué, une version 2 est disponible en ligne et le code source est sur Gitlab. Dans la version 2 vous aurez :
- une interface graphique (dans votre navigateur Web)
- une disponibilité online sans même avoir à compiler soi même ! Et pourtant toutes vos infos personnelles resteront chez vous, dans votre navigateur !
- d'autre nouveautés comme des graphiques de stats sur votre portefeuille global crypto
Ce projet sur Github reste ici pour archive de l'historique, mais vous êtes tous invités à venir utiliser la v2 bien plus ergonomique !
CryptoFiscaFacile v1
Cet outil veut vous aider à déclarer vos cryptos aux impôts !
Attention néanmoins : les développeurs de CryptoFiscaFacile ne peuvent pas être tenus pour responsables des éventuelles erreurs ou imprécisions qui pourraient survenir dans vos déclarations fiscales suite à d'éventuels bugs de l'outil. En cas d'erreurs, l'entière responsabilité de ces erreurs vous incombe.
Gardez en tête que la loi n'étant pas encore définie sur tous les points, cet outil peut différer de votre point de vue, c'est pour cela qu'il est en open-source : à vous de modifier (ou faire modifier) à vos besoins.
Gardez aussi en tête le fait qu'il ne supporte pas toutes les plateformes existantes, mais un guide vous est fourni pour vous aider à développer votre propre module.
Tout pull request est le bienvenu, j'essayerai de les intégrer le plus vite possible.
Enfin, le code actuel est en constante évolution, il se peut donc que la documentation ci dessous ne soit pas précise, mais elle vous fournira une bonne base pour utiliser cet outil.
Installation / Mise à jour
Vous aurez besoin de Go dont voici la doc officelle d'installation.
Une fois Go installé sur votre système, ouvrez un terminal (cmd.exe/PowerShell sous Windows, Terminal sous MacOS, un shell sous Linux) et tappez cette commande :
$ go install github.com/fiscafacile/CryptoFiscaFacile
Le binaire de l'outil sera généré sur votre PC, vous pourrez le lancer en ligne de commande (donc dans un terminal) avec les Options nécessaires à vos besoins.
$ CryptoFiscaFacile --help
Pour mettre à jour, il suffit de relancer la commande (pas trop sur de cela) :
$ go get -u github.com/fiscafacile/CryptoFiscaFacile
Utilisation
Principe de fonctionnement
Cet outil a besoin de "Sources" pour établir une liste de transactions qui constituent votre protefeuille global.
Ces "Sources" peuvent être :
-
des fichiers CSV (souvent exportés depuis une plateforme ou établis manuellement)
-
des fichiers JSON (autre formalisme de données structurées)
-
des API de plateforme
Toutes les APIs utilisées par cet outil sont mis en cache dans des fichiers JSON rangés dans le répertoire Cache créé à côté de l'exécutable. Vous pouvez donc vérifier/exporter/modifier ces informations pour rendre votre utilisation cohérente. Pensez aussi à supprimer/déplacer/renommer les fichiers de cache si vous voulez récupérer les dernières informations de la plateforme.
Chaque transaction est composée d'une Date, d'une Note (donnant des informations pour la comprendre), optionellement d'une liste de frais Fee, optionellement d'une liste de sources From et optionellement d'une liste de destinations To.
Les Fee, From et To sont des "Actifs" composés d'un Code et d'un montant Amount.
Tous les montants dans l'outil sont des chiffres décimaux avec précision arbitraire : aucun arrondi n'est fait dans les calculs, seulement à l'affichage à la fin pour plus de clareté.
Une fois toutes les transactions récupérées de toutes les "Sources" que vous avez fournies à l'outil, il va essayer de catégoriser ces TXs.
Catégories de TXs relatives à une "Source"
-
"Dépôts"
Deposits: ce sont des TXs qui ont un ou plusieursTomais n'ont pas deFromet possiblement desFee. -
"Retraits"
Withdrawals: c'est l'inverse des "Dépôts". -
"Frais"
Fees: les TXs qui n'ont que desFee. -
"Echanges"
Exchanges: des TXs qui ont desFromet desTo, et possiblement desFee.
Catégories manuelles et semi-automatiques
Vous pourrez fournir une Source particulière pour rediriger certaines TXs dans des catégories manuelles comme des "Dons" Gifts et autres AirDrops.
Vous pourrez aussi activer la détection de Forks sur certaines cryptos.
Catégories spécifiques à certaines plateformes
Sur certaines plateformes comme Crypto.com il existe aussi des CommercialRebates (cashback de carte, remboursement Netflix, Pay Checkout Reward et Gift Card Reward), Interests (intérêts du programme Earn, intérêts de "Stacking") et autres Referrals. Certaines TXs sont directement catégorisées en CashOut comme les paiements en crypto.
Catégories spécifiques ETH
Pour les sources ETH, il y a d'autres catégories spécifiques : Burns, Claims, Selfs et Swaps.
Catégories de TXs relatives au portefeuille global
Une fois toutes les TXs rangées dans des catégories, l'outil va essayer de rapprocher des TXs de différentes "Sources" pour synthétiser et recatégoriser au niveau du portefeuille global :
-
"Transferts"
Transfers: par fusion d'unDepositsavec unWithdrawalssi lesDateetAmountcorrespondent. -
CashInetCashOut: ce sont respectivement desDepositsetWithdrawalsou desExchangesdont l'"Actif" source ou destination sont des Fiats. -
les
Interestssont transformés enCashInet leurs montant global est affiché. -
les
CommercialRebatessont transformés enCashInsi aucun "reversal" n'est venu les annuler et leurs montant global est affiché. -
les
Referralssont transformés enCashInet leurs montant global est affiché.
Configuration
Vous pouvez utiliser le fichier de configuration config.exemple.yaml, copiez le en config.yaml puis mofidiez le a votre guise. Il sera utilisé pour vos options par défaut (c'est à dire que si vous spécifiez une autre valeur d'une option dans la ligne de commande, elle sera prioritaire sur les valeurs du fichier de configuration).
Options de base
Help
--help
Display all available arguments
Permet d'afficher toutes les options possibles.
Native Currency
--native
Native Currency for consolidation (default "EUR")
Choix de la Fiat pour consolidation. Si vous voulez déclarer aux impôts français, il faut laisser "EUR".
Location
--location
Date Filter Location (default "Europe/Paris")
Permet de choisir le fuseau horaire pour calculer les dates. Si vous voulez déclarer aux impôts français, il faut laisser "Europe/Paris".
Date
--date
Date Filter (default "2021-01-01T00:00:00")
Permet d'afficher votre protefeuille global valorisé en Fiat à une date donnée. Utile pour vérifier l'état du stock et estimer s'il manque des sources.
Options d'aide à l'établissement d'un portefeuille global cohérent
Stats
--stats
Display accounts stats
Permet d'afficher le nombre de transactions par catégorie (toutes cryptos confondues).
Check
--check
Check and Display consistency
Lance des vérifications d'intégrité sur les TXs du portefeuille globale et affiche les TXs KO. Les vérifications sont :
-
tous les
Withdrawalspostérieurs au 1 Janvier 2019 doivent être justifiés, donc catégorisés ailleurs (CashOut,Gifts,...). -
tous les
Transfersdoivent avoir une balance nulle (la balance est la somme desTomoins la somme desFrommoins la somme desFee). Note pour pouvoir aditioner ces montant, ils faut qu'ils soient dans la même devise, ce qui est le cas pour lesTransfers(normalement). -
toutes les TXs doivent avoir des montants positifs. Les montants de
Fromet deFeeseront consédérés négativement par l'outil mais ils doivent être enregistré positivement dans leur TX par la "Source" qui les a produites.
Display
--txs-display
Display Transactions By Catergory : Exchanges|Deposits|Withdrawals|CashIn|CashOut|etc
--currency-filter
Currencies to be filtered in Transactions Display (comma separated list)
Affiche toutes les TXs d'une Catégorie (attention ceci peut être très long...).
Vous pouvez afficher toutes les Catégories avec --txs-display Alls.
Vous pouvez aussi afficher que les TXs concernant certaines cryptos, par exemple pour n'afficher que le BTC et le BCH : --currency-filter BTC,BCH.
Options de "Sources"
Pour chaque Source, je vous indique le taux de support fourni par l'outil (l'exactitude de l'analyse pour cette Source). Si ce taux de support n'est pas bon, c'est sûrement parce que je n'ai pas assez d'exemples de transactions pour bien les analyser. Vous pouvez ouvrir un Ticket Github pour ajouter votre cas qui ne
