Інтеграція з 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 робочих дні.







