Інтеграція з Accointing

Проєктуємо та розробляємо блокчейн-рішення повного циклу: від архітектури смарт-контрактів до запуску DeFi-протоколів, NFT-маркетплейсів та криптобірж. Аудит безпеки, токеноміка, інтеграція з наявною інфраструктурою.
Показано 1 з 1Усі 1306 послуг
Інтеграція з Accointing
Простий
~2-3 дні
Часті запитання

Напрямки блокчейн-розробки

Етапи блокчейн-розробки

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1285
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1198
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    902
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1122
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    589
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    859

Інтеграція з Accointing

Accointing (тепер частина Glassnode) — сервіс крипто-податків, популярний на німецькомовному ринку ЄС (Німеччина, Австрія, Швейцарія), підтримує німецькі податкові правила (правило Jahresfrist — звільнення від податків після 1 року).

CSV формат Accointing

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

Особливість для німецьких користувачів

Accointing правильно обробляє німецьке правило звільнення від податків після 1 року (Haltefrist). При експорті важливо не втратити timestamp — Accointing сам розраховує період утримання.

// Для німецького ринку: правило щодо стейкингу (може продовжити період утримання)
// При отриманні стейкингу, Німеччина в деяких трактуваннях
// скидає період утримання застейкованих монет — потрібно явно вказати
function markStakingForGermany(tx: InternalTransaction): AccointingRow {
  return {
    ...exportToAccointingRow(tx),
    classification: tx.taxCategory === TaxCategory.STAKING_REWARD ? "staking" : "",
    // Важливо: Accointing розуміє, що стейкинг-нагорода створює новий лот
  };
}

Інтеграція з Accointing через CSV експорт з правильною класифікацією для ринку ЄС — 2-3 робочих дні.