Run locally to export crypto tx data from crypto exchanges using their api connections, and process into a normalised format.

Overview

CryptoCredible

The missing crypto-exchange data exporter

tldr: run locally to export your crypto tx data from popular exchanges via api connections.

Ever tried to export your crypto transactions from an exchange only to find out there's missing data? πŸ™„
...or that the file format is completely different from every other exchange? πŸ™„
...or that they didn't account for the fees, so your tax is now too high? πŸ™„

Well, this tool is for you...

Install locally, and with a single command, CryptoCredible will safely and securely fetch all your transaction data, and output a csv file with nothing missing, in a single standard format.

What's better is the output is designed to work perfectly with the amazing open source tax software BittyTax.

Supported exchanges

Installation

To run CryptoCredible you will first need to install php locally on your system.

Apple

For Mac users this is easy.

Install HomeBrew using their instructions here, then install php by entering this command into a Terminal window:

brew install php

Windows

Windows is a little more complex.

A few options to get php running on your system:

Install Dependancies

Once you have setup php locally, you now need to download this package and install the required dependancies using composer. If you don't have composer installed go here and follow the instructions.

To install the dependancies, open up a fresh terminal window, change directory to the root of this project, and run:

composer install

You should be ready to move forward now.

Usage

First you need to configure your api connections with your crypto exchange(s) - see below.

Once that's done, open up a terminal window and run the command suitable for your exchange(s):

Coinbase

Login into your Coinbase account to create new api credentials, selecting all the permissions with :read in them. Paste the credentials into the .env file at the root of the project directory using the following structure:

COINBASE_API_KEY=[api key here]
COINBASE_API_SECRET=[api secret here]

Then run this command in a terminal window from the root directory of this project:

php cryptocredible sync:coinbase

Coinbase Pro

Login into your Coinbase Pro account and create new view api credentials. Paste them into the .env file at the root of the project directory:

COINBASE_PRO_API_KEY=[api secret here]
COINBASE_PRO_API_SECRET=[api secret here]
COINBASE_PRO_API_PASSPHRASE=[api passphrase here]

Then run this command in a terminal window from the root directory of this project:

php cryptocredible sync:coinbase-pro

Options

Each command accepts the follow options:

Argument Shortcut Description default
--output-dir -o Provide a dir on local file system to output csv to ./../
--json -j Provide a json file rather than fetch txs via api. n/a
--dump n/a Dump all the transactions fetched via the api into a json file. n/a

Is it safe?

Yes, but you are using it without warranty, and at your own risk. Having said that, here are some strong points which make this safe:

  • It runs locally on your own computer, and you have total control over the data and even the code.
  • The exchange connections are configured via the .env file using read-only api credentials. These credentials never leave your system in a usable format.
  • The code is open-source, so feel free to poke around and ensure it's safe. Other people have probably poked around too. Safety in numbers.

Trust but verify.

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.

You might also like...
Easily anonymize sensitive data through eloquent queries
Easily anonymize sensitive data through eloquent queries

Laravel Encryptable This package allows you to anonymize sensitive data (like the name, surname and email address of a user) similarly to Laravel's En

Obfuscate your data by generating reversible, non-sequential, URL-safe identifiers.

Laravel Hashid Laravel Hashid provides a unified API across various drivers such as Base62, Base64, Hashids and Optimus, with support for multiple con

πŸ”’ Password Exposed Helper Function - Check if a password has been exposed in a data breach.
πŸ”’ Password Exposed Helper Function - Check if a password has been exposed in a data breach.

πŸ”’ Password Exposed Helper Function This PHP package provides a password_exposed helper function, that uses the haveibeenpwned.com API to check if a p

Laravel Security was created by, and is maintained by Graham Campbell, and is a voku/anti-xss wrapper for Laravel, using graham-campbell/security-core
Laravel Security was created by, and is maintained by Graham Campbell, and is a voku/anti-xss wrapper for Laravel, using graham-campbell/security-core

Laravel Security Laravel Security was created by, and is maintained by Graham Campbell, and is a voku/anti-xss wrapper for Laravel, using graham-campb

A PHP utility for managing secrets in the cloud using AWS KMS and DynamoDB

CredStash for PHP This is a PHP port of original CredStash (written in python). Encryption and DynamoDB storage are compatible with python version so

A cryptography API wrapping the Sodium library, providing a simple object interface for symmetrical and asymmetrical encryption, decryption, digital signing and message authentication.

PHP Encryption A cryptography API wrapping the Sodium library, providing a simple object interface for symmetrical and asymmetrical encryption, decryp

Fetches random integers from random.org instead of using PHP's PRNG implementation

TrulyRandom Composer-compatible library to interact with random.org's API in order to generate truly random lists of integers, sequences of integers,

Port scanning using PHP!
Port scanning using PHP!

β €β €β €β €β €β €β €β €β €β €β €β €β €β €β € πŸ’» Scanner Port's πŸ’» πŸ‡ΊπŸ‡Έ Don't forget to leave a star! ⭐ πŸ‡§πŸ‡· NΓ£o se esqueΓ§a de deixar uma estrela! ⭐ 🌳 Credits | CrΓ©d

An experimental object oriented SSH api in PHP

PHP SSH (master) Provides an object-oriented wrapper for the php ssh2 extension. Requirements You need PHP version 5.3+ with the SSH2 extension. Insta

Comments
  • Incorrect notes on Coinbase Pro

    Incorrect notes on Coinbase Pro

    On transfer type, the notes always indicate that the asset is moving to or from Coinbase.

    However this is not always the case. Not sure of the pattern yet, but in some cases deposits go direct to Coinbase Pro, rather than routed via Coinbase.

    The transactions seem fine so its just the notes column that needs adjusted for better records.

    opened by leeovery 0
  • coinbase etc wallet problem

    coinbase etc wallet problem

    Hi Lee,

    when I run cryptocredible for Coinbase I get the errors below with the dump request. Thanks, huggyvilla

    C:\xampp\cryptocredible-main>php cryptocredible sync:coinbase --dump

        Coinbase
    

    • Fetch transactions     *
      

    Open Coinbase connection: βœ” Fetch transactions for: ETH2 Wallet: βœ” XRP Wallet: βœ” BSV Wallet: βœ” BAT Wallet: βœ” Portefeuille en USDC: βœ” Portefeuille en ZRX: βœ” BCH Wallet: βœ” ETC Wallet: failed

    Illuminate\Http\Client\RequestException

    HTTP request returned status code 400: {"errors":[{"id":"validation_error","message":"Unknown currency"}]}

    at C:\xampp\cryptocredible-main\vendor\illuminate\http\Client\Response.php:288 284β–• / 285β–• public function toException() 286β–• { 287β–• if ($this->failed()) { ➜ 288β–• return new RequestException($this); 289β–• } 290β–• } 291β–• 292β–• /*

    1 C:\xampp\cryptocredible-main\vendor\illuminate\http\Client\Response.php:305 Illuminate\Http\Client\Response::toException()

    2 C:\xampp\cryptocredible-main\vendor\illuminate\http\Client\PendingRequest.php:683 Illuminate\Http\Client\Response::throw()

    opened by huggyvilla 2
  • Rebate issue Coinbase Pro

    Rebate issue Coinbase Pro

    Hi Lee,

    when I run the command for coinbase Pro below are the errors. Thanks Huggvilla

    C:\xampp\cryptocredible-main>php cryptocredible sync:coinbase-pro

            Coinbase Pro
    

    • Fetch transactions     *
      

    Open Coinbase Pro connection: βœ” Fetch transactions for: 1INCH Wallet: βœ” AAVE Wallet: βœ” ACH Wallet: βœ” ADA Wallet: βœ” AGLD Wallet: βœ” ALCX Wallet: βœ” ALGO Wallet: βœ” AMP Wallet: βœ” ANKR Wallet: βœ” API3 Wallet: βœ” ARPA Wallet: βœ” ASM Wallet: βœ” ATOM Wallet: βœ” AUCTION Wallet: βœ” AVAX Wallet: βœ” AXS Wallet: βœ” BADGER Wallet: βœ” BAL Wallet: βœ” BAND Wallet: βœ” BAT Wallet: βœ” BCH Wallet: βœ” BICO Wallet: βœ” BLZ Wallet: βœ” BNT Wallet: βœ” BOND Wallet: βœ” BTC Wallet: βœ” BTRST Wallet: βœ” CGLD Wallet: βœ” CHZ Wallet: βœ” CLV Wallet: βœ” COMP Wallet: βœ” COTI Wallet: βœ” COVAL Wallet: βœ” CRO Wallet: βœ” CRV Wallet: βœ” CTSI Wallet: βœ” CVC Wallet: βœ” DAI Wallet: βœ” DASH Wallet: βœ” DDX Wallet: βœ” DESO Wallet: βœ” DNT Wallet: βœ” DOGE Wallet: βœ” DOT Wallet: βœ” ENJ Wallet: βœ” ENS Wallet: βœ” EOS Wallet: βœ” ETC Wallet: βœ” ETH Wallet: βœ” EUR Wallet: βœ” FARM Wallet: βœ” FET Wallet: βœ” FIL Wallet: βœ” FORTH Wallet: βœ” FOX Wallet: βœ” FX Wallet: βœ” GALA Wallet: βœ” GBP Wallet: βœ” GNT Wallet: βœ” GODS Wallet: βœ” GRT Wallet: βœ” GTC Wallet: βœ” GYEN Wallet: βœ” ICP Wallet: βœ” IDEX Wallet: βœ” IMX Wallet: βœ” IOTX Wallet: βœ” JASMY Wallet: βœ” KEEP Wallet: βœ” KNC Wallet: βœ” KRL Wallet: βœ” LCX Wallet: βœ” LINK Wallet: βœ” LOOM Wallet: βœ” LPT Wallet: βœ” LRC Wallet: βœ” LTC Wallet: βœ” MANA Wallet: βœ” MASK Wallet: βœ” MATIC Wallet: βœ” MCO2 Wallet: βœ” MDT Wallet: βœ” MIR Wallet: βœ” MKR Wallet: βœ” MLN Wallet: βœ” MUSD Wallet: βœ” NKN Wallet: βœ” NMR Wallet: βœ” NU Wallet: βœ” OGN Wallet: βœ” OMG Wallet: βœ” ORN Wallet: βœ” OXT Wallet: βœ” PAX Wallet: βœ” PERP Wallet: βœ” PLA Wallet: βœ” POLS Wallet: βœ” POLY Wallet: βœ” POWR Wallet: βœ” QNT Wallet: βœ” QUICK Wallet: βœ” RAD Wallet: βœ” RAI Wallet: βœ” RARI Wallet: βœ” RBN Wallet: βœ” REN Wallet: βœ” REP Wallet: βœ” REQ Wallet: βœ” RGT Wallet: βœ” RLC Wallet: βœ” RLY Wallet: βœ” SHIB Wallet: βœ” SKL Wallet: βœ” SNX Wallet: βœ” SOL Wallet: βœ” SPELL Wallet: βœ” STORJ Wallet: βœ” SUKU Wallet: βœ” SUPER Wallet: βœ” SUSHI Wallet: βœ” TRAC Wallet: βœ” TRB Wallet: βœ” TRIBE Wallet: βœ” TRU Wallet: βœ” UMA Wallet: βœ” UNI Wallet: βœ” USDC Wallet: βœ” USDT Wallet: βœ” UST Wallet: βœ” VGX Wallet: βœ” WBTC Wallet: βœ” WCFG Wallet: βœ” WLUNA Wallet: βœ” XLM Wallet: βœ” XRP Wallet: βœ” XTZ Wallet: βœ” XYO Wallet: βœ” YFI Wallet: βœ” YFII Wallet: βœ” ZEC Wallet: βœ” ZRX Wallet: βœ”


    • Process transactions     *
      

    Normalise data & match up trades: failed

    No matching tx mapper found for coinbase pro tx type 'rebate'.

    C:\xampp\cryptocredible-main>

    opened by huggyvilla 3
  • Error creating dump Coinbase pro

    Error creating dump Coinbase pro

    Hi Lee,

    I tried to get the dump to work with Coinbase Pro and this is what the CMD spat out (hope it helps):

    C:\xampp\cryptocredible-main>php cryptocredible sync:coinbase-pro --dump

            Coinbase Pro
    

    • Fetch transactions     *
      

    Open Coinbase Pro connection: βœ” Fetch transactions for: 1INCH Wallet: βœ” AAVE Wallet: βœ” ACH Wallet: βœ” ADA Wallet: βœ” AGLD Wallet: βœ” ALCX Wallet: βœ” ALGO Wallet: βœ” AMP Wallet: βœ” ANKR Wallet: βœ” API3 Wallet: βœ” ARPA Wallet: βœ” ASM Wallet: βœ” ATOM Wallet: βœ” AUCTION Wallet: βœ” AVAX Wallet: βœ” AXS Wallet: βœ” BADGER Wallet: βœ” BAL Wallet: βœ” BAND Wallet: βœ” BAT Wallet: βœ” BCH Wallet: βœ” BICO Wallet: βœ” BLZ Wallet: βœ” BNT Wallet: βœ” BOND Wallet: βœ” BTC Wallet: βœ” BTRST Wallet: βœ” CGLD Wallet: βœ” CHZ Wallet: βœ” CLV Wallet: βœ” COMP Wallet: βœ” COTI Wallet: βœ” COVAL Wallet: βœ” CRO Wallet: βœ” CRV Wallet: βœ” CTSI Wallet: βœ” CVC Wallet: βœ” DAI Wallet: βœ” DASH Wallet: βœ” DDX Wallet: βœ” DESO Wallet: βœ” DNT Wallet: βœ” DOGE Wallet: βœ” DOT Wallet: βœ” ENJ Wallet: βœ” ENS Wallet: βœ” EOS Wallet: βœ” ETC Wallet: βœ” ETH Wallet: βœ” EUR Wallet: βœ” FARM Wallet: βœ” FET Wallet: βœ” FIL Wallet: βœ” FORTH Wallet: βœ” FOX Wallet: βœ” FX Wallet: βœ” GALA Wallet: βœ” GBP Wallet: βœ” GNT Wallet: βœ” GODS Wallet: βœ” GRT Wallet: βœ” GTC Wallet: βœ” GYEN Wallet: βœ” ICP Wallet: βœ” IDEX Wallet: βœ” IMX Wallet: βœ” IOTX Wallet: βœ” JASMY Wallet: βœ” KEEP Wallet: βœ” KNC Wallet: βœ” KRL Wallet: βœ” LCX Wallet: βœ” LINK Wallet: βœ” LOOM Wallet: βœ” LPT Wallet: βœ” LRC Wallet: βœ” LTC Wallet: βœ” MANA Wallet: βœ” MASK Wallet: βœ” MATIC Wallet: βœ” MCO2 Wallet: βœ” MDT Wallet: βœ” MIR Wallet: βœ” MKR Wallet: βœ” MLN Wallet: βœ” MUSD Wallet: βœ” NKN Wallet: βœ” NMR Wallet: βœ” NU Wallet: βœ” OGN Wallet: βœ” OMG Wallet: βœ” ORN Wallet: βœ” OXT Wallet: βœ” PAX Wallet: βœ” PERP Wallet: βœ” PLA Wallet: βœ” POLS Wallet: βœ” POLY Wallet: βœ” POWR Wallet: βœ” QNT Wallet: βœ” QUICK Wallet: βœ” RAD Wallet: βœ” RAI Wallet: βœ” RARI Wallet: βœ” RBN Wallet: βœ” REN Wallet: βœ” REP Wallet: βœ” REQ Wallet: βœ” RGT Wallet: βœ” RLC Wallet: βœ” RLY Wallet: βœ” SHIB Wallet: βœ” SKL Wallet: βœ” SNX Wallet: βœ” SOL Wallet: βœ” SPELL Wallet: βœ” STORJ Wallet: βœ” SUKU Wallet: βœ” SUPER Wallet: βœ” SUSHI Wallet: βœ” TRAC Wallet: βœ” TRB Wallet: βœ” TRIBE Wallet: βœ” TRU Wallet: βœ” UMA Wallet: βœ” UNI Wallet: βœ” USDC Wallet: βœ” USDT Wallet: βœ” UST Wallet: βœ” VGX Wallet: βœ” WBTC Wallet: βœ” WCFG Wallet: βœ” WLUNA Wallet: βœ” XLM Wallet: βœ” XRP Wallet: βœ” XTZ Wallet: βœ” XYO Wallet: βœ” YFI Wallet: βœ” YFII Wallet: βœ” ZEC Wallet: βœ” ZRX Wallet: βœ”

    Dumping data to ./../coinbase pro-transaction-dump-2022-01-10 11:23:28.json: failed

    ErrorException

    file_put_contents(./../coinbase pro-transaction-dump-2022-01-10 11:23:28.json): Failed to open stream: No such file or directory

    at C:\xampp\cryptocredible-main\app\Commands\AbstractSyncCommand.php:111 107β–• ->append($this->exchangeName.'-transaction-dump-'.now().'.json') 108β–• ->lower(); 109β–• $this->newLine(); 110β–• $this->task("Dumping data to {$outputDir}", function () use ($outputDir, $transactions) { ➜ 111β–• file_put_contents($outputDir, $transactions->toJson()); 112β–• }); 113β–• } 114β–• } 115β–•

    1 C:\xampp\cryptocredible-main\app\Commands\AbstractSyncCommand.php:111 file_put_contents("./../coinbase pro-transaction-dump-2022-01-10 11:23:28.json", "[{"id":"1451715444","amount":"0.0005000000000000","balance":"0.0005000088366767","created_at":"2019-06-15T15:15:41.445782Z","type":"transfer","details":{"transfer_id":"f22363fc-9187-4fc3-bf7c-2556d3f872b6","transfer_type":"deposit"},"currency":"BCH"},{"id":"536157932","amount":"0.0000000088366767","balance":"0.0000000088366767","created_at":"2017-12-19T00:28:30.085466Z","type":"transfer","details":{"source":"fork","source_account_id":"f219b7b7-980d-426b-beb0-1e60e97af48a","ticker":"BCH"},"currency":"BCH"},{"id":"8223379118","amount":"-0.2150367400000000","balance":"0.0000000062311484","created_at":"2021-06-21T21:47:05.052136Z","type":"match","details":{"order_id":"c7d9d739-637a-42e8-bab3-477d08083e42","product_id":"BTC-GBP","trade_id":"19972032"},"currency":"BTC"},{"id":"8223379101","amount":"-0.0250000000000000","balance":"0.2150367462311484","created_at":"2021-06-21T21:47:05.045206Z","type":"match","details":{"order_id":"c7d9d739-637a-42e8-bab3-477d08083e42","product_id":"BTC-GBP","t...")

    2 C:\xampp\cryptocredible-main\vendor\nunomaduro\laravel-console-task\src\LaravelConsoleTaskServiceProvider.php:49 App\Commands\AbstractSyncCommand::App\Commands{closure}()

    C:\xampp\cryptocredible-main>

    opened by huggyvilla 4
Releases(v0.0.3)
Owner
Lee Overy
Web Developer and entrepreneur - not necessarily in that order, but also not necessarily not in that order...
Lee Overy
A modern, portable, easy to use crypto library.

Sodium is a new, easy-to-use software library for encryption, decryption, signatures, password hashing and more. It is a portable, cross-compilable, i

Frank Denis 10.7k Jan 1, 2023
A minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted/decrypted in the browser using 256 bits AES.

Current version: 1.3.5 PrivateBin is a minimalist, open source online pastebin where the server has zero knowledge of pasted data. Data is encrypted a

null 4.6k Jan 7, 2023
Easy to use cryptographic framework for data protection: secure messaging with forward secrecy and secure data storage. Has unified APIs across 14 platforms.

Themis provides strong, usable cryptography for busy people General purpose cryptographic library for storage and messaging for iOS (Swift, Obj-C), An

Cossack Labs 1.6k Jan 6, 2023
SЁCU is a public API to store self-destructing data payloads with url shortener and handle anonymous chat-rooms.

SЁCU Introduction SЁCU is a public API to store self-destructing data payloads. This repository includes only backend part using Laravel framework. Fr

SЁCU 27 Nov 21, 2022
On International Talk Like a Pirate Day (September 19th), this filter changes all appropriate English phrases and words into pirate-speak.

Pirate This module is a simple filter that, when enabled, will change your posts to "Pirate talk" on September 19th for Talk like a Pirate Day Install

Backdrop CMS contributed projects 3 Oct 26, 2021
HTML/PHP/CSS website that tracks two API data

Detailed instructions on how to build and run Step 1: download XAMPP for a live web server XAMPP download 1 XAMP download 2 Step 2: Download all files

Winsor Tse 0 Jun 2, 2022
Automatic Encrypt and Decrypt your database data. Tested and used on Laravel 8

Laravel Encrypt Database Automatic Encrypt and Decrypt your database data. Tested and used on Laravel 8. I'm yet building the tests. Important Note th

Wellington Barbosa 2 Dec 15, 2021
A simple php (lumen) app for sharing sensitive text (basically like onetimesecret), but with full end-to-end AES-256-GCM encryption so even the server has no access to the data, and developed with very simple deployment in mind.

A simple php (lumen) app for sharing sensitive text (basically like onetimesecret), but with full end-to-end AES-256-GCM encryption so even the server has no access to the data, and developed with very simple deployment in mind.

Alan Woo 51 Nov 21, 2022
Pretty Good Privacy (PGP) is an encryption program that provides cryptographic privacy and authentication for data communication.

Pretty Good Privacy (PGP) is an encryption program that provides cryptographic privacy and authentication for data communication. PGP is used for signing, encrypting, and decrypting texts, e-mails, files, directories, and whole disk partitions and to increase the security of e-mail communications. Phil Zimmermann developed PGP in 1991.

[sCRiPTz-TEAM] 3 Dec 31, 2021