Інтеграція крипто-payroll з бухгалтерським обліком
Компанія платить зарплату в криптовалюті — це зручно для розподілених команд, але створює бухгалтерську складність: кожна виплата зарплати — це оподаткована операція для компанії, а отримання крипти працівником вимагає належного утримання податку в його юрисдикції.
Оподаткування крипто-зарплат
На стороні компанії: виплата зарплати в крипто = продаж криптовалюти компанією + виплата зарплати. Якщо компанія тримає BTC куплений по 20,000 доларів США і платить зарплату, коли BTC коштує 50,000 доларів США — виникає capital gain 30,000 доларів США на момент виплати.
На стороні працівника: отримання крипто-зарплати оподатковується як звичайний дохід за справедливою вартістю в момент отримання. Подальший продаж крипти — capital gain/loss від вартості в момент отримання.
Інтеграція з бухгалтерією
interface CryptoPayrollTransaction {
employeeId: string;
payPeriod: { from: Date; to: Date };
fiatEquivalent: number; // США доларів сума зарплати
asset: string; // BTC, ETH, USDC
cryptoAmount: number; // розраховується в момент виплати
exchangeRateAtPayment: number; // курс в момент виплати
txHash: string;
costBasisForCompany: number; // за якою ціною компанія купила цей крипто
capitalGain: number; // різниця для компанії
taxWithheld: number; // утримана податки (якщо компанія є агентом утримання)
}
class CryptoPayrollService {
async processPayroll(employeeId: string, fiatAmount: number, asset: string): Promise<void> {
// Отримуємо поточний курс
const rate = await this.priceService.getCurrentPrice(asset, "USD");
const cryptoAmount = fiatAmount / rate;
// Cost basis для компанії
const companyBasis = await this.inventoryService.getCostBasis(asset, cryptoAmount);
const capitalGain = (rate - companyBasis.costPerUnit) * cryptoAmount;
// Виплата через Bitwage / Request Finance / Deel
const tx = await this.paymentProvider.sendPayment({
recipient: employee.cryptoAddress,
asset,
amount: cryptoAmount,
});
// Запис в бухгалтерію
await this.accounting.recordPayrollEntry({
debit: { account: "Salary Expense", amount: fiatAmount },
credit: { account: "Crypto Asset", amount: cryptoAmount, valueUSD: fiatAmount },
capitalGain: capitalGain > 0 ? capitalGain : 0,
capitalLoss: capitalGain < 0 ? Math.abs(capitalGain) : 0,
});
// Інтеграція Xero / QuickBooks
await this.exportToAccounting(tx, { fiatAmount, cryptoAmount, rate, capitalGain });
}
}
Інтеграція з Xero та QuickBooks
// Xero API: записуємо payroll як Manual Journal
async function createXeroPayrollEntry(payroll: CryptoPayrollTransaction) {
const xeroEntry = {
journalDate: payroll.payPeriod.to.toISOString().split("T")[0],
lineAmountTypes: "NoTax",
journalLines: [
{
description: `Crypto salary - ${payroll.employeeId}`,
accountCode: "477", // Wages & Salaries
lineAmount: payroll.fiatEquivalent,
},
{
description: `Crypto asset disposal - ${payroll.asset}`,
accountCode: "090", // Crypto Asset account
lineAmount: -payroll.fiatEquivalent,
},
payroll.capitalGain !== 0 && {
description: "Capital gain/loss on crypto disposal",
accountCode: payroll.capitalGain > 0 ? "260" : "261",
lineAmount: Math.abs(payroll.capitalGain),
},
].filter(Boolean),
};
return xeroClient.accounting.createManualJournals({ manualJournals: [xeroEntry] });
}
Провайдери крипто-payroll
| Провайдер | Особливості | Інтеграція |
|---|---|---|
| Bitwage | Bitcoin payroll, пряма конвертація з фіату | API + webhook |
| Request Finance | Multi-chain, підтримка ERC-20 | API |
| Deel | Глобальний payroll з опцією крипто | API |
| Tresio | Treasury + payroll | API |
Інтеграція крипто-payroll з Xero/QuickBooks, автоматичний розрахунок capital gain та податкові записи — 2-3 тижні розробки.







