Accointing Integration

We design and develop full-cycle blockchain solutions: from smart contract architecture to launching DeFi protocols, NFT marketplaces and crypto exchanges. Security audits, tokenomics, integration with existing infrastructure.
Showing 1 of 1 servicesAll 1306 services
Accointing Integration
Simple
~2-3 business days
FAQ
Blockchain Development Services
Blockchain Development Stages
Latest works
  • image_website-b2b-advance_0.png
    B2B ADVANCE company website development
    1238
  • image_web-applications_feedme_466_0.webp
    Development of a web application for FEEDME
    1167
  • image_websites_belfingroup_462_0.webp
    Website development for BELFINGROUP
    867
  • image_ecommerce_furnoro_435_0.webp
    Development of an online store for the company FURNORO
    1080
  • image_logo-advance_0.png
    B2B Advance company logo design
    563
  • image_crm_enviok_479_0.webp
    Development of a web application for Enviok
    829

Accointing Integration

Accointing (now part of Glassnode) is a crypto tax service popular in the German-speaking EU market (Germany, Austria, Switzerland), supports German tax legislation (Jahresfrist rule — exemption after 1 year).

Accointing CSV Format

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";
}

Special Feature for German Users

Accointing correctly handles the German tax exemption rule after 1 year (Haltefrist). When exporting, it is important not to lose the timestamp — Accointing calculates the holding period itself.

// For German market: rule on staking (can extend holding period)
// With staking reward, Germany in some interpretations
// resets holding period of staked coins — need to explicitly indicate
function markStakingForGermany(tx: InternalTransaction): AccointingRow {
  return {
    ...exportToAccointingRow(tx),
    classification: tx.taxCategory === TaxCategory.STAKING_REWARD ? "staking" : "",
    // Important: Accointing understands that staking reward creates a new lot
  };
}

Accointing integration via CSV export with correct classification for EU market — 2-3 business days.