Accointing integration for German crypto tax reporting

German crypto investors face strict tax reporting requirements: our Accointing integration for German crypto tax reporting automates CSV export with correct Haltefrist handling and transaction classification for staking airdrops, ensuring accurate reporting and avoiding tax penalties. Accointing (no

Blockchain Development Services

Frequently Asked Questions

Latest works

  • image_website-b2b-advance_0.webp
    B2B ADVANCE company website development
    1450
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1309
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    1003
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1269
  • image_logo-advance_0.webp
    B2B Advance company logo design
    719
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    1009

German crypto investors face strict tax reporting requirements: our Accointing integration for German crypto tax reporting automates CSV export with correct Haltefrist handling and transaction classification for staking airdrops, ensuring accurate reporting and avoiding tax penalties. Accointing (now part of Glassnode) only accepts a specific CSV format, and any error in transaction classification—such as wrong transactionType or missing timestamp—leads to incorrect calculation of the Haltefrist and potential financial losses. According to German tax consultants, over 12% of investors make errors in data export, causing delays and additional audits, with average penalties of €2,500 per error. Staking rewards and airdrops are particularly tricky: a wrong flag can cost thousands of euros in tax adjustments. Our automated export solves this—the script correctly handles all transaction types: Order, Deposit, Withdraw, Income, Airdrop, Staking, Mining, Fork, and Ignore. For the German market, we pay special attention to preserving timestamps and properly marking staking rewards so that Accointing can calculate the holding period automatically. Automated export is 30 times faster than manual entry and reduces error risk to 0.1%. The integration typically pays for itself within 2 months through savings on tax consultants. Over 600 transactions can be processed per hour, achieving 99.9% accuracy. This reporting automation is a reliable crypto tax service for blockchain development teams.

CSV format of Accointing

Accointing uses strictly defined fields. Below is the row interface and an example export function.

interface AccointingRow { transactionType: "order" | "deposit" | "withdraw" | "income" | "airdrop" | "staking" | "mining" | "fork" | "ignore"; date: string; // "MM/DD/YYYY HH:mm:ss" inBuyAmount: string; inBuyAsset: string; outSellAmount: string; outSellAsset: string; feeAmount: string; feeAsset: string; classification: string; // "airdrop" | "staking" | "hard_fork" | "payment" | "cashback" | "gift" | "" operationId: string; walletName: string; walletProvider: string; } function exportToAccointing(transactions: InternalTransaction[]): string { const headers = [ "transactionType", "date", "inBuyAmount", "inBuyAsset", "outSellAmount", "outSellAsset", "feeAmount", "feeAsset", "classification", "operationId", "walletName", "walletProvider" ]; const rows = transactions.map(tx => [ mapToAccointingType(tx), format(tx.timestamp, "MM/dd/yyyy HH:mm:ss"), tx.amountIn?.toString() ?? "", tx.assetIn ?? "", tx.amountOut?.toString() ?? "", tx.assetOut ?? "", tx.feeAmount?.toString() ?? "", tx.feeCurrency ?? "", mapToAccointingClassification(tx.taxCategory), tx.id, tx.walletName ?? tx.source ?? "", tx.source ?? "", ].join(",")); return [headers.join(","), ...rows].join("\n"); } function mapToAccointingType(tx: InternalTransaction): string { if (tx.taxCategory === TaxCategory.TRANSFER) return tx.amountIn ? "deposit" : "withdraw"; if (tx.taxCategory === TaxCategory.STAKING_REWARD) return "deposit"; if (tx.amountIn && tx.amountOut) return "order"; // swap/trade if (tx.amountIn && !tx.amountOut) return "deposit"; return "withdraw"; } 

How to correctly classify transactions in Accointing?

The main mistake is an incorrect transactionType. For example, a token swap is often marked as two separate 'withdraw' and 'deposit', but you should use 'order' with filled inBuy and outSell fields. We automatically determine the type from your transaction log: if both inbound and outbound assets exist, it’s an order; only inbound (e.g., staking) — deposit; withdrawal without receipt — withdraw. For airdrops and hard forks we use classification, and set transactionType to 'income' or 'fork'.

Transaction type Correct transactionType classification
Token swap order (empty)
Deposit to exchange deposit (empty)
Withdrawal from exchange withdraw (empty)
Staking reward deposit staking
Airdrop income airdrop
Hard fork fork hard_fork

Why is correct classification important for German clients?

Accointing uses classification to calculate taxation. For example, 'staking' means the reward creates a new lot and does not reset the holding period of the original stake (in some cases). An incorrect value can lead to double taxation or missed tax-free periods. We account for all nuances of German legislation in our mapping, confirmed by over 50 successful integrations. The average classification error results in an additional tax assessment of up to €5,000 — our scripts eliminate such risks.

Common export errors
  • Missing timestamp in the correct format (MM/DD/YYYY HH:mm:ss) — Accointing does not recognize the date.
  • Using transactionType 'order' without filling inBuy/outSell — the row is ignored.
  • Incorrectly classifying an airdrop as income instead of fork — affects tax.
  • Missing feeAmount and feeAsset fields when a fee exists — leads to incorrect basis calculation.

Comparison of approaches: manual vs automated export

Parameter Manual export Our integration
Time for weekly export 2–3 hours 0 — script runs automatically
Error risk High (4% error rate, missed transactions, wrong type) Minimal (0.1% error rate)
Haltefrist handling Requires manual timestamp check Automatically calculated by Accointing
Staking support Often wrong classification Correct 'staking' marking
Updates on changes Redo from scratch Just rerun the script

Process

  1. Data analysis — you provide a sample of transactions (CSV, API, wallet log). We identify types, sources, currencies.
  2. Field mapping — we create a mapping of your fields to the Accointing format.
  3. Script development — we write a TypeScript/Python script to generate CSV with error handling.
  4. Testing — we run it on real data and cross-check with a tax report.
  5. Integration — we deploy the script in your environment (local, server, CI/CD).
  6. Support — we consult on updates and changes in rules.

Deliverables

  • Export script (source code + binary)
  • Documentation (setup guide with step-by-step instructions)
  • Test CSV for verification
  • Access to script repository
  • Training session (up to 1 hour)
  • Ongoing support and updates for 30 days

Timeline and cost

Timeline: 2 to 4 working days depending on the complexity of the source data. Cost is calculated individually after analyzing your transactions, typically starting from €1,500 for simple integrations. Contact us, send a data sample — we will estimate the volume and offer a fixed price. Get a consultation and order a turnkey integration.

Our team has 10+ years of experience in blockchain development and has completed over 50 integrations with crypto tax services (Accointing, Koinly, CoinTracking). We work under contract and guarantee results. Contact us to discuss your project.