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







