Giter VIP home page Giter VIP logo

cointracking-export-converter's Introduction

Cointracking Export File Converter

A converter for CoinTracking export .csv files.

About

CoinTracking is a widely used crypto portfolio tracker. Though it has many integrations for all kinds of crypto exchanges it lacks in my opinion of a good user experience. As I tried out Blockpit, i found that this is much better but it lacks of an import from CoinTracking exports in order to have an easy migration path. This was the reason why I created this tool which takes CoinTracking export files in .csv format and converts it into Blockpit's .xslx files for import.

Currently there is only support for a conversion to Blockpit but it is possible to extend it in the future to other portfolio tracker.

Features

  • Convert trade transaction fees from CoinTracking to Blockpit as they are handled differently (see: Blockpit and CoinTracking documentation)
  • Handle CoinTracking 'swap' transactions either as 'trade' transaction or split it into two non-taxable transactions (out and in)
  • User configuration for custom mapping between CoinTracking and Blockpit transaction types
  • User configuration for timezone of the timestamps in the CoinTracking export file
  • Skipping of empty transactions that don't have an outgoing, incoming or fee amount
  • Generated a transaction ID as CoinTracking does not include the ID in the export file

Documentation

The documentation is available in the wiki.

Live Development

To run in live development mode, run wails dev in the project directory. This will run a Vite development server that will provide very fast hot reload of your frontend changes. If you want to develop in a browser and have access to your Go methods, there is also a dev server that runs on http://localhost:34115. Connect to this in your browser, and you can call your Go code from devtools.

Building

Development dependencies

  • Taskfile

To build a redistributable, production mode package, use wails build.

Known Issues

CoinTracking does not export the transaction IDs in their .csv files. Transaction IDs are used by portfolio trackers to distinguish if a transaction is a duplicate of another one. Therefore, the tool creates a unique transaction ID from the transaction data. This means that Blockpit can see if the transaction was already imported but if you have created another integration in Blockpit that has imported this transaction automatically, the IDs are different and Blockpit won't notice that these transactions are the same.

cointracking-export-converter's People

Contributors

tomvodi avatar

Watchers

 avatar

cointracking-export-converter's Issues

Don't Import duplicate transactions

It may ocure, that a file or some files contain a transactions with the same generated id. This transaction should appear in the blockpit output only once.
_TODO: check if blockpit would allow two transactions with same id _

Handle trades with 0 value on one outgoing side

In rare cases, there may be trades with a zero value on outgoing side.
I've seen it in Kucoin Trading output, where a small amount of a low value coin is bought for a high value coin (BTC). In this case, the 8 digits for BTC won't be enough to show this small amount of incoming BTC.
As the small amount of the bought coin should be counted either way to have a correct balance in the end, these transactions should be changed to a "OtherIncome" as blockpit won't allow a "trade" transaction with a zero value on one side.

In the same way, selling of an low value asset and receiving a zero value in another should result in an "OtherExpense" transaction.

This has to be documented at least in the README.

Handle trading fees accordingly

CoinTracking and Blockpit handle fees in trade-transactions differently. This means, that the values for incoming and outgoing values in a trade transaction are different for these trackers.

Read: Blockpit-Fees and CoinTracking-Fees

The fees, if present, have to be taken into account for the outgoing or incoming tx of a swap. See #2

Handle cointracking swaps for blockpit

There is no 1:1 representation for the "swap" type in CoinTracking for Blockpit.
There may be two ways to deal with swaps:

  1. Non-Taxable: With two non-taxable transactions, one outgoing and on incoming (e.g. BTC out and wBTC in)
  2. Taxable: With a simple trade

So this has to be something like two non-taxable transactions, one outgoing and on incoming or it can be a simple trade.
There should be a setting where the user can choose how to handle CoinTracking swaps in the Blockpit export file.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.