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

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

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1450
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1308
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1003
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1269
  • image_logo-advance_0.webp
    Розробка логотипу компанії B2B Advance
    717
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    1008

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

Зазначимо: коли користувач хоче платити криптовалютою у звичайному магазині, виникає складний ланцюжок: конвертація, авторизація, 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 дні.