Розробка автоматичної конвертації крипти в фіат
Завдання звучить просто: отримав крипту — конвертував в фіат — вивів на банківський рахунок. На практиці це ланцюжок з мінімум трьох систем з різними API, затримками, лімітами і точками відмови. Більшість проблем виникає не в блокчейн-частині, а на стику з фіатними рейлами.
Архітектура пайплайну конвертації
Повний пайплайн виглядає так:
On-chain отримання → Детектування → Hot wallet збір
→ Біржа/OTC API → Продаж в USDT/USD
→ Fiat off-ramp → Банківський переказ
Кожен перехід — потенційна точка затримки. Часовий діапазон від on-chain підтвердження до грошей на банківському рахунку: 15 хвилин–24 години залежно від обраного стека.
Біржові інтеграції для конвертації
CEX API (Binance, Kraken, Coinbase Prime)
Найшвидший шлях — продаж через спотовий ринок біржі. Біржі дають програмний доступ:
import Binance from "node-binance-api";
const binance = new Binance().options({
APIKEY: process.env.BINANCE_API_KEY,
APISECRET: process.env.BINANCE_API_SECRET,
});
async function convertToUSDT(symbol: string, amount: number): Promise<string> {
// Отримати поточну ціну
const ticker = await binance.prices(`${symbol}USDT`);
const price = parseFloat(ticker[`${symbol}USDT`]);
// Ринковий ордер — виконується миттєво, але з slippage
const order = await binance.marketSell(`${symbol}USDT`, amount);
return order.orderId;
}
Проблема з ринковими ордерами: slippage на великих сумах. Для конвертації > $10k краще TWAP (Time-Weighted Average Price) або лімітні ордери:
async function twapConvert(
symbol: string,
totalAmount: number,
parts: number,
intervalMs: number
) {
const partAmount = totalAmount / parts;
for (let i = 0; i < parts; i++) {
await binance.marketSell(`${symbol}USDT`, partAmount);
if (i < parts - 1) await sleep(intervalMs);
}
}
Fiat off-ramp провайдери
Після отримання USDT/USD на бірже потрібно вивести в фіат. Основні варіанти:
| Провайдер | API | Швидкість виведення | Регіони | Мін. KYC |
|---|---|---|---|---|
| Kraken | REST + WebSocket | 1–5 робочих днів | EU, US | Intermediate |
| Coinbase Prime | REST | 1–3 дні | US, EU | Business |
| BCB Group | REST | T+1 SWIFT | EU | Business |
| Mercuryo (B2B) | REST | Хвилини (карта) | Global | Basic |
| Transak | REST | 1–3 дні | 75+ країн | Varies |
Для EU-орієнтованих проектів SEPA-переводи через Kraken або BCB Group — стандартний шлях. Для ринку СНГ вибір значно вужчий.
Управління курсовим ризиком
Між отриманням крипти і фіатним выводом є часовий зазор, під час якого курс може змінюватися. Стратегії mitigation:
Немедленна стабілізація в USDT/USDC — одразу після on-chain підтвердження конвертуємо в stablecoin. Прибираємо волатильність ETH/BTC, залишається тільки depeg ризик stablecoin.
Хеджування через фьючерси — для великих сум (>$50k) відкриваємо short на фьючерсному ринку тієї ж біржі одночасно з отриманням крипти. Нейтралізує курсовий ризик до фіатного виведення.
Accept-at-rate модель — фіксуємо курс на момент створення інвойсу (з коротким TTL, наприклад 15 хвилин), приймаємо оплату в цей період. Якщо клієнт платить пізніше — перераховуємо.
interface Invoice {
id: string;
cryptoAmount: bigint;
fiatAmount: number;
lockedRate: number;
expiresAt: Date; // now + 15 min
status: "pending" | "paid" | "expired" | "converting" | "settled";
}
Обробка помилок та edge cases
Біржевий downtime: біржі уходять на maintenance. Потрібен fallback на альтернативну біржу або тимчасова пауза з queue накопленням.
Часткове виконання ордера: для неліквідних пар ордер може виконатися частково. Воркер має відстежувати pending ордери і додавати остачу.
Затримка банківського переказу: SWIFT/SEPA — не real-time. Внутрішній статус awaiting_bank_settlement з таймаутом і алертом, якщо гроші не прийшли через N днів.
KYC/AML перевірки: біржи можуть заморозити вивід при підозрілій активності. Моніторинг статусу withdrawal, алерти на pending > 24h.
Стек та інфраструктура
- Воркери: Node.js з BullMQ для черг (retry logic, delayed jobs, priority queues)
- База даних: PostgreSQL з immutable ledger таблицею всіх конвертацій
- Secrets: приватні ключі біржевих API в AWS KMS або HashiCorp Vault
- Моніторинг: Grafana з алертами на Failed conversions rate, біржевий баланс, час settlement
- Reconciliation: щодобова сверка сум між on-chain підтвердженнями і фіатними виводами
Час розробки: 1–2 тижні. Менше займає сам код, більше — інтеграція з конкретними біржевими API та fiat-провайдерами, отримання API-доступу у них, тестування end-to-end з реальними транзакціями.







