Интеграция с Accointing

Проектируем и разрабатываем блокчейн-решения полного цикла: от архитектуры смарт-контрактов до запуска DeFi-протоколов, NFT-маркетплейсов и криптобирж. Аудит безопасности, токеномика, интеграция с существующей инфраструктурой.
Показано 1 из 1 услугВсе 1306 услуг
Интеграция с Accointing
Простая
~2-3 рабочих дня
Часто задаваемые вопросы
Направления блокчейн-разработки
Этапы блокчейн-разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1258
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1170
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    873
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1092
  • image_logo-advance_0.png
    Разработка логотипа компании B2B Advance
    563
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    830

Интеграция с Accointing

Accointing (теперь часть Glassnode) — крипто-налоговый сервис популярный в немецкоязычном EU рынке (Германия, Австрия, Швейцария), поддерживает немецкое налоговое законодательство (Jahresfrist rule — освобождение после 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 сам рассчитывает holding period.

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

Интеграция с Accointing через CSV экспорт с правильной классификацией для EU рынка — 2-3 рабочих дня.