Інтеграція з TokenTax
TokenTax — сервіс крипто-податків, орієнтований на просунутих користувачів: підтримує DeFi транзакції, маржинальну торгівлю, ф'ючерси та NFT. Підходить для трейдерів з складними портфелями.
Підтримувані формати
TokenTax приймає дані в кількох форматах:
// TokenTax Generic CSV
interface TokenTaxRow {
type: "Trade" | "Income" | "Mining" | "Gift" | "Expense" | "Transfer";
buyAmount: string;
buyCurrency: string;
sellAmount: string;
sellCurrency: string;
feeAmount: string;
feeCurrency: string;
exchange: string;
group: string; // для групування пов'язаних транзакцій
comment: string;
date: string; // "YYYY-MM-DD HH:mm:ss"
}
function exportToTokenTaxCSV(transactions: InternalTransaction[]): string {
const headers = [
"Type", "BuyAmount", "BuyCurrency", "SellAmount", "SellCurrency",
"FeeAmount", "FeeCurrency", "Exchange", "Group", "Comment", "Date"
];
const rows = transactions.map(tx => [
mapToTokenTaxType(tx.taxCategory),
tx.amountIn?.toString() ?? "",
tx.assetIn ?? "",
tx.amountOut?.toString() ?? "",
tx.assetOut ?? "",
tx.feeAmount?.toString() ?? "",
tx.feeCurrency ?? "",
tx.source ?? "",
tx.groupId ?? "", // групуємо LP операції разом
tx.notes ?? "",
format(tx.timestamp, "yyyy-MM-dd HH:mm:ss"),
].join(","));
return [headers.join(","), ...rows].join("\n");
}
function mapToTokenTaxType(category: TaxCategory): string {
const typeMap: Record<TaxCategory, string> = {
[TaxCategory.SWAP]: "Trade",
[TaxCategory.BUY]: "Trade",
[TaxCategory.SELL]: "Trade",
[TaxCategory.STAKING_REWARD]: "Income",
[TaxCategory.AIRDROP]: "Income",
[TaxCategory.MINING_REWARD]: "Mining",
[TaxCategory.TRANSFER]: "Transfer",
[TaxCategory.GAS_FEE]: "Expense",
};
return typeMap[category] || "Trade";
}
Групування DeFi
TokenTax може обробляти складні DeFi операції, якщо їх правильно групувати:
// Для LP депозиту — групуємо пов'язані транзакції
function exportLPOperationAsGroup(
lpDeposit: LiquidityDepositEvent,
groupId: string
): TokenTaxRow[] {
// Два токена віддані → LP токен отриманий
return [
{
type: "Trade",
buyAmount: lpDeposit.lpTokenAmount.toString(),
buyCurrency: `${lpDeposit.token0}-${lpDeposit.token1}-LP`,
sellAmount: lpDeposit.token0Amount.toString(),
sellCurrency: lpDeposit.token0,
feeAmount: "",
feeCurrency: "",
exchange: "Uniswap",
group: groupId,
comment: "LP deposit token0",
date: format(lpDeposit.timestamp, "yyyy-MM-dd HH:mm:ss"),
},
// другий токен в окремому рядку тієї ж групи
{
type: "Trade",
buyAmount: "",
buyCurrency: "",
sellAmount: lpDeposit.token1Amount.toString(),
sellCurrency: lpDeposit.token1,
feeAmount: lpDeposit.gasUSD?.toString() ?? "",
feeCurrency: "USD",
exchange: "Uniswap",
group: groupId,
comment: "LP deposit token1",
date: format(lpDeposit.timestamp, "yyyy-MM-dd HH:mm:ss"),
},
];
}
Інтеграція з TokenTax через CSV експорт з підтримкою групування DeFi — 2-4 робочих дні.







