Розробка системи управління крипто-карткою

Платити криптовалютою у звичайному магазині — завдання, що потребує миттєвої конвертації та надійної авторизації. Ми розробляємо системи управління крипто-картами, які безшовно поєднують блокчейн і традиційний еквайринг. Наша команда реалізує проєкт під ключ — від вибору card issuing провайдера до впровадження та подальшої підтримки, забезпечуючи стабільну роботу й масштабованість рішення.
Часті запитання

Розробка системи управління крипто-карткою

Зазначимо: коли користувач хоче платити криптовалютою у звичайному магазині, виникає складний ланцюжок: конвертація, авторизація, settlement — і все за 1–2 секунди. Ми побудували не одну таку систему і знаємо кожен підводний камінь: від вибору card issuing провайдера до real-time webhook-обробника. У цьому матеріалі — архітектура, яка працює в продакшені.

Крипто-картка — це міст між on-chain активами та традиційною платіжною інфраструктурою. Користувач тримає USDC, платить у звичайному магазині — система конвертує та списує у фоновому режимі. Побудувати це складніше, ніж здається: тут перетинаються card issuing, real-time конвертація, compliance та блокчейн-інфраструктура. Ми реалізували такі системи для neobank-стартапів та crypto-native платформ, зіткнувшись із нюансами batch settlement, форс-мажорами oracle та юридичними вимогами в юрисдикціях ЄС та США. Нижче — деталі, які заощадили місяці розробки. Якщо вам потрібна подібна система — зв'яжіться з нами для консультації.

Card Issuing: з ким працювати

Самостійно отримати BIN спонсора та емітувати картки — довго та дорого: партнерство з Visa/Mastercard вимагає значного депозиту та займає 12–18 місяців. Реалістичний шлях — працювати через card issuing платформи:

  • Marqeta — лідер ринку, програмовані картки через Just-in-Time (JIT) Funding. Ключова фіча: при кожній авторизації Marqeta робить webhook на ваш сервер, ви вирішуєте — схвалити чи відхилити та миттєво фондуєте транзакцію. Ідеально для крипто-карток.
  • Lithic (колишній Privacy) — аналог Marqeta, часто кращий для стартапів через простіший onboarding.
  • Moorwand / Railsr (Європа) — для європейських карток з IBAN.
  • Monavate / Paymentology — альтернативи з більш гнучкими умовами для crypto-native компаній.

Усі ці провайдери дають REST API для випуску карток, керування лімітами, отримання транзакцій.

Механізм JIT Funding

Just-in-Time Funding — це коли баланс на картці завжди нульовий, а гроші з'являються лише в момент авторизації. Для крипто-картки це означає: користувач авторизує покупку → card processor викликає ваш webhook → ви конвертуєте крипту в фіат → підтверджуєте транзакцію — все за 1–2 секунди.

Документація Marqeta: "Just-in-Time Funding дозволяє емітентам контролювати кожну авторизацію в реальному часі."

Ось покрокова послідовність обробки:

  1. Card processor (Marqeta, Lithic) надсилає HTTP-запит на ваш webhook з деталями авторизації.
  2. Сервіс визначає користувача за card_token та перевіряє доступний баланс в USDC через локальний кеш або швидкий запит до блокчейну.
  3. Якщо коштів достатньо (з урахуванням буфера на slippage), система резервує суму (soft lock) і повертає рішення APPROVE.
  4. Після settlement (через хвилини або години) запускається реальна конвертація USDC в фіат через off-ramp провайдера.
  5. Баланс користувача оновлюється, надсилається push-повідомлення.

Webhook має відповідати за 1–2 секунди. Якщо тайм-аут — транзакція автоматично відхиляється. Це жорстка вимога, яка визначає всю архітектуру: жодних синхронних блокчейн-операцій у цьому шляху.

interface AuthorizationWebhook {
  type: "authorization";
  token: string;
  card_token: string;
  amount: number; // в центах
  currency: string; // ISO 4217
  merchant: {
    descriptor: string;
    mcc: string;
    country: string;
  };
  created: string;
}

async function handleAuthorization(
  webhook: AuthorizationWebhook
): Promise<AuthorizationResponse> {
  // 1. Знайти користувача та його крипто-баланс
  const user = await getUserByCardToken(webhook.card_token);
  const requiredUsd = webhook.amount / 100;

  // 2. Перевірити доступний баланс в USDC
  const usdcBalance = await getUsdcBalance(user.walletAddress);
  if (usdcBalance < requiredUsd * 1.01) { // +1% буфер на slippage
    return { decision: "DECLINE", reason: "INSUFFICIENT_FUNDS" };
  }

  // 3. Зарезервувати кошти (soft lock)
  const reservation = await reserveFunds(user.id, requiredUsd, webhook.token);

  // 4. Підтвердити авторизацію
  return {
    decision: "APPROVE",
    amount: webhook.amount,
    reservation_id: reservation.id,
  };
}

Settlement та реальне списання

Після авторизації йде settlement — фактичне переміщення коштів. Це може відбуватися через хвилини або години після авторизації. Тут виконується реальна конвертація крипти.

async function settleTransaction(settlementData: SettlementEvent): Promise<void> {
  const reservation = await getReservation(settlementData.authorization_token);

  // Для USDC — просто перевести на фіатний рахунок через USDC → USD off-ramp
  // (Circle, Stripe Crypto, Bridge.xyz)
  const offRampResult = await circleOffRamp({
    amount: reservation.usdAmount,
    destinationBankAccount: OPERATIONAL_ACCOUNT,
  });

  // Оновити баланс користувача
  await deductUserBalance(reservation.userId, reservation.usdcAmount);

  // Надіслати push-повідомлення
  await sendTransactionNotification(reservation.userId, {
    amount: reservation.usdAmount,
    merchant: settlementData.merchant.descriptor,
    txId: offRampResult.id,
  });
}

Конвертація: USDC vs volatility assets

USDC/USDT — найпростіший випадок. Конвертація тривіальна, оскільки курс прив'язаний. Більшість крипто-карток першого покоління працюють лише зі стейблкоїнами.

ETH/BTC та інші — потрібен real-time price feed та управління ціновим ризиком. Варіанти:

  • Конвертувати в USDC при поповненні картки — користувач явно міняє ETH → USDC, далі все як вище. Найпростіший підхід.
  • Конвертувати в момент транзакції — вищий ризик slippage (зазвичай 0.5–1%) та цінового gap між авторизацією та settlement. Потребує hedging стратегії.
  • Віртуальний баланс + періодичний settlement — агрегуєте транзакції, конвертуєте батчами. Знижує transaction costs, але ускладнює accounting.

Чому важливий правильний вибір card issuing провайдера?

Успіх крипто-картки прямо залежить від здатності провайдера обробляти мільйони JIT Funding запитів з мінімальною затримкою. Marqeta краще для JIT Funding завдяки більш детальним webhook-конфігураціям, але Lithic швидше в інтеграції для стартапів. Для європейського ринку — Moorwand або Railsr з підтримкою SEPA Instant. Помилка на цьому етапі призводить до відмов транзакцій та втрати довіри користувачів.

Як забезпечити compliance при випуску крипто-карток?

Крипто-картка з реальним використанням — це фінансовий продукт, який регулюється як мінімум як електронні гроші. Обов'язкові компоненти:

  • KYC/AML — провайдери: Sumsub, Persona, Onfido. Інтеграція через REST API + webhook на події верифікації. Мінімальний tier: документ + selfie. Для високих лімітів — Enhanced Due Diligence (EDD). Детальніше про KYC та AML.
  • Transaction monitoring — аналіз on-chain історії адрес користувачів. Chainalysis API або Elliptic для перевірки: чи не надходять кошти з санкційних адрес, міксерів, darknet markets.
  • Ліміти за замовчуванням — поки KYC не пройдено: встановлюються відповідно до регуляторних вимог (наприклад, за PSD2 exemption). Після верифікації — стандартні ліміти. Це вимога card schemes, а не ваша вигадка.

Технічний стек

Компонент Варіанти Рекомендація
Card issuing Marqeta, Lithic Marqeta для JIT Funding
Backend Node.js/TypeScript, Go Go для latency-sensitive webhook handler
База даних PostgreSQL + Redis для reservation locks
Блокчейн Viem, ethers.js Viem для EVM
Off-ramp Circle, Bridge.xyz Circle USDC → USD
KYC Sumsub, Persona Sumsub — найкраще охоплення країн
Нотифікації Firebase, Appcenter Firebase для push

Webhook handler для авторизації має працювати окремим високодоступним сервісом з SLA 99.9%+, мінімальною кількістю залежностей та локальним кешем для швидких перевірок балансу.

Терміни розробки

Етап MVP Повний продукт
Архітектура та вибір стеку 2 тижні 1 місяць
Інтеграція card issuing 2–3 тижні 1–2 місяці
Backend (webhook + core) 2 місяці 5–7 місяців
Off-ramp та конвертація 3 тижні 2–3 місяці
KYC/AML модуль 1 місяць 2–3 місяці
Тестування та аудит 2 тижні 1–2 місяці
Юридичні договори паралельно 3–6 місяців

Що входить в розробку

  • Архітектура та вибір стеку під вашу бізнес-модель (B2C або B2B).
  • Інтеграція з card issuing провайдером, налаштування JIT Funding.
  • Backend на Go або Node.js з обробкою webhook-ів (latency < 1 сек).
  • Підключення off-ramp (Circle, Bridge.xyz) для конвертації USDC → фіат.
  • KYC/AML модуль з підтримкою Sumsub або Persona.
  • Transaction monitoring, ліміти, блокування.
  • Документація API та інструкції з експлуатації.
  • Технічна підтримка на етапі запуску та перші 2 місяці після релізу.

Ми гарантуємо відповідність вимогам card schemes та регуляторів. Наш досвід — 5+ років у розробці крипто-сервісів: від гаманців до повноцінних neobank рішень.

Типові помилки при інтеграції JIT Funding:

  • Синхронні блокчейн виклики у webhook-і — гарантований тайм-аут.
  • Відсутність локального кешу балансів — 100мс+ затримка на кожен запит.
  • Неправильний розрахунок комісій — settlement може згоріти через перевищення ліміту.
  • Ігнорування мультивалютних settlement-ів — при конвертації може виникнути від'ємний баланс.

Зв'яжіться з нами, щоб отримати індивідуальну оцінку вашого проєкту. Замовте розробку системи управління крипто-карткою — ми підготуємо пропозицію за 2 дні.

Напрямки блокчейн-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1141