CGChristoph Griehl
DEResume
WorkExpertiseWritingAboutContactAuf Deutsch lesen
← All writing
Project · Crypto · Web Development

Chainreport: Automating Crypto Tax Reporting

Turning messy on-chain activity into a one-click tax report — and the stack that keeps it fast under rate limits.

CG
Christoph Griehl
Senior Full-Stack Engineer
Nov 11, 20212 min read
logo of chain.report
logo of chain.report

Crypto is easy to buy and painful to declare. Every trade, swap, and transfer is a taxable event somewhere, and the German tax system is not known for going easy on novel asset classes. Chainreport is the platform we built to make that tractable: connect your wallets and exchanges, and get a defensible tax report with a single click. You can sign up here for free.

The problem: compliance that punishes activity

The more you actually use crypto, the worse the reporting burden gets. Hundreds of transactions across several wallets and exchanges, each with its own format and its own idea of a timestamp, have to be reconciled into something a tax office will accept. Doing that by hand is error-prone and miserable; doing it wrong is expensive.

The system: connect, normalize, report

Chainreport pulls trades from connected wallets and exchanges through their APIs, normalizes them into a single ledger, and gives users one coherent view of holdings and transactions. From there, generating the actual tax report is a click. The hard engineering is not the tax math — it is making heterogeneous, third-party data arrive completely and reliably.

Most of the work in a tax product isn’t the tax. It’s getting external data to show up, in order, every time.

Engineering for rate limits

The frontend is a Next.js React application, which gives an optimized, performant React experience while leaving room to grow — there are few reasons left to start a new app on Create React App instead. The backend is a Node and GraphQL server, a combination I have long favored.

The interesting constraints live at the edges. Exchange and price APIs are aggressively rate-limited, so we put a Redis caching layer in front of coin-price lookups and previous requests, and a queue service to schedule calls against those limits without dropping data. That is what lets a report covering thousands of transactions resolve quickly instead of hammering an upstream API into refusing us.

Where it’s headed

The next steps are a move to a serverless architecture for better scalability and a calmer operational story, and a frontend redesign to match. The goal stays the same: take one of the more dreaded parts of owning crypto and make it a click.

CryptoBlockchainTaxPlatform economy
CG
Christoph Griehl

Senior full-stack engineer in Germany, working across AI/RAG systems, geospatial software, document intelligence, and data-heavy web platforms.

Keep reading
Nov 8, 2021 · Project

Building Roamy: A Native iOS Audio Tour Guide

Read article →
Sep 15, 2023 · Web Development

A Comprehensive Approach to Internationalizing Applications

Read article →