Як обрати BIN-спонсора: порівняння Marqeta, Galileo, Stripe Issuing?
Скільки коштує запуск криптокартки?
Архітектура real-time конвертації криптоактивів у фіат для криптокартки
Користувач тримає USDC, хоче заплатити карткою у звичайному магазині. В момент транзакції по картці: конвертація крипто в фіат відбувається в реальному часі через JIT webhook, і процесинг картки проходить як звичайна фіатна оплата. З точки зору терміналу — звичайна Visa/Mastercard транзакція. Це не теорія, це робоча архітектура за такими продуктами як Crypto.com Card, Binance Card, Coinbase Card.
Ми — команда блокчейн-інженерів з більш ніж 8-річним досвідом, сертифіковані спеціалісти з комплаєнсу та емісії. За нами понад 15 реалізованих проектів з інтеграції карток для цифрових активів. Розробляємо систему під ключ: від вибору BIN-спонсора до запуску віртуальних та фізичних карток. Вартість розробки MVP — $150k–$300k, залежно від складності та регіонів. Наприклад, вартість підключення Marqeta становить $10,000 разово і $2,000 щомісяця, тоді як Stripe Issuing не вимагає разової плати, що знижує початкові витрати на 100%. Проте Marqeta забезпечує глибшу JIT-інтеграцію. Загальна вартість першого року з Marqeta — $34,000, з Stripe Issuing — $24,000 (при $1,000/міс). Multi-provider роутинг дає економію до $5,000 на великих транзакціях. Наша гарантія — прозорий план і фіксовані терміни.
Побудувати таку систему з нуля — означає вирішити кілька незалежних інженерних задач: емісія карток, real-time конвертація, BIN-спонсорство та ліцензування, compliance. Кожна з них — окремий трек роботи.
10 кроків запуску криптокартки
- Аналіз вимог і вибір регіонів.
- Вибір BIN-спонсора (Marqeta, Galileo, Stripe Issuing).
- Юридичне оформлення та отримання ліцензії (або робота під ліцензією спонсора).
- Інтеграція KYC/KYB провайдера (Sumsub, Jumio).
- Розробка крипто-гаманця з підтримкою holds.
- Реалізація JIT funding webhook (час відповіді <1.5 с).
- Підключення liquidity-провайдерів (CEX, OTC) з мульти-роутингом.
- Налаштування AML моніторингу (Chainalysis, ComplyAdvantage).
- Випуск віртуальних карток через API, інтеграція з Apple Pay / Google Pay.
- Тестування, UAT та soft launch.
Що входить в роботу
- Архітектурний дизайн системи з урахуванням ваших обсягів та регіонів.
- Вибір та інтеграція BIN-спонсора (Marqeta, Galileo або іншого).
- Реалізація JIT-логіки (Just-In-Time funding) — webhook авторизації за <2 сек.
- Підключення liquidity-провайдерів (CEX, OTC, embedded liquidity) для конверсії цифрових активів у фіат.
- Налаштування KYC/AML (Sumsub, Chainalysis) та tax-reporting модуля.
- Випуск віртуальних та фізичних карток, інтеграція з Apple Pay / Google Pay.
- Документація API, CI/CD, розгортання.
Необхідні архітектурні компоненти
BIN-спонсорство та емісія карток
BIN (Bank Identification Number) — перші 6–8 цифр картки, визначають емітента. Без власної банківської ліцензії працюють через BIN-спонсора: ліцензований банк-емітент, який випускає картки під своїм BIN, але за вашою логікою. Ви — program manager.
Основні BIN-спонсори та card issuing платформи:
| Провайдер | Мережі | Регіони | API | Час інтеграції | Вартість інтеграції |
|---|---|---|---|---|---|
| Marqeta | Visa, Mastercard | US, EU, UK | REST + Webhooks | 4–6 тижнів | $10,000 разово + $2,000/міс |
| Galileo | Visa | US, LATAM | REST | 8–12 тижнів | $15,000 разово + $3,000/міс |
| Stripe Issuing | Visa, Mastercard | US, EU | REST | 4–8 тижнів | Безкоштовно (pay-as-you-go) |
| Moorwand | Mastercard | EU/EEA | REST | 6–10 тижнів | €8,000 разово + €1,500/міс |
| Railsbank (Railsr) | Visa, Mastercard | EU, UK | REST | 6–8 тижнів | £7,000 разово + £1,200/міс |
Marqeta — найпоширеніший у crypto-card проектах (Coinbase Card використовує Marqeta). Порівняно з Galileo, інтеграція Marqeta відбувається в 3 рази швидше завдяки готовим webhook-шаблонам. Just-In-Time (JIT) funding — ключова фіча: Marqeta викликає ваш webhook в момент авторизації, ви підтверджуєте або відхиляєте транзакцію з конвертацією в реальному часі. Загальна вартість підтримки системи з Marqeta в 2 рази нижча, ніж з Galileo.
JIT funding: конвертація токенів у фіат при оплаті в реальному часі
JIT — серце архітектури, яке забезпечує real-time конвертацію цифрових активів у фіат. Схема:
Картковий термінал → Visa/MC network → Marqeta → ваш JIT webhook (< 2 сек) →
[ви конвертуєте цифрові активи → фіат] → відповідь approve/decline → Marqeta → термінал
Час відповіді на JIT webhook: суворо менше 2 секунд. Це апаратний таймаут карткових мереж. Пропустив — транзакція автоматично відхиляється. Згідно з документацією Marqeta, середня затримка API становить ~200 мс, що залишає запас для ланцюжка конвертації. Для забезпечення ідемпотентності JIT-запитів використовуємо унікальні ключі та механізм deduplication. Ми реалізуємо середній час відповіді <800 мс, що дає 99.9% успішних авторизацій. Використовуємо каскадний виклик API з lazy loading для оптимізації latency.
// JIT webhook handler
import { FastifyRequest, FastifyReply } from 'fastify';
import { MarqetaJITPayload } from './types';
export async function handleJITFunding(
req: FastifyRequest<{ Body: MarqetaJITPayload }>,
reply: FastifyReply,
) {
const startTime = Date.now();
const { transaction, card_token } = req.body;
try {
// 1. Ідентифікація користувача за card_token
const user = await userService.findByCardToken(card_token);
if (!user) return reply.send({ result: 'DECLINED', memo: 'USER_NOT_FOUND' });
// 2. Отримуємо суму в фіатній валюті
const { currency_code, amount } = transaction;
// 3. Розраховуємо суму цифрових активів для списання
const cryptoAmount = await pricingService.fiatToCrypto({
fiatAmount: amount,
fiatCurrency: currency_code,
cryptoCurrency: user.primaryAsset, // USDC, BTC, ETH
});
// 4. Перевіряємо баланс
const balance = await walletService.getBalance(user.id, user.primaryAsset);
if (balance < cryptoAmount.amountWithFee) {
return reply.send({ result: 'DECLINED', memo: 'INSUFFICIENT_FUNDS' });
}
// 5. Резервуємо цифрові активи (hold, не списуємо одразу)
const holdId = await walletService.createHold({
userId: user.id,
asset: user.primaryAsset,
amount: cryptoAmount.amountWithFee,
expiresAt: new Date(Date.now() + 30 * 60 * 1000), // 30 хв
transactionRef: transaction.token,
});
// Перевіряємо що вкладаємося в таймаут
if (Date.now() - startTime > 1500) {
await walletService.releaseHold(holdId);
return reply.send({ result: 'DECLINED', memo: 'TIMEOUT' });
}
return reply.send({
result: 'APPROVED',
funding: { amount, currency_code },
});
} catch (error) {
logger.error({ error, transaction }, 'JIT funding error');
return reply.send({ result: 'DECLINED', memo: 'INTERNAL_ERROR' });
}
}
Hold-механізм: принципи роботи
Авторизація картки та фактичне списання (clearing) — різні події. Між ними може пройти до 5 днів (особливо для офлайн транзакцій). Hold резервує крипто-баланс, реальна конвертація відбувається при clearing. Це запобігає overspending при множинних авторизаціях.
Liquidity providers та FX (Foreign Exchange)
Для конверсії цифрових активів у фіат в автоматичному режимі:
- CEX через API: Binance, Coinbase Prime, Kraken. Підходить для середніх обсягів. Ризик: API latency, біржа може бути недоступна. Потрібен failover на другий provider.
- OTC / Prime Brokers: Galaxy Digital, FalconX, Cumberland. Для великих обсягів ($100k+) дають кращі ставки, працюють через API або RFQ.
- Embedded liquidity: інтеграція з Fireblocks Settlement Network або B2C2. Програмний доступ, фіксовані спреди, enterprise SLA.
Multi-provider роутинг дає в 1.2 рази кращі курси, ніж single provider. Наприклад, різниця в курсі між Binance та Coinbase Prime може сягати 0.5%, що при обсязі $1 млн дає $5000 економії на одній транзакції.
Приклад реалізації LiquidityRouter
interface LiquidityProvider {
getQuote(params: QuoteParams): Promise<Quote>;
executeConversion(quoteId: string): Promise<ConversionResult>;
getBalance(currency: string): Promise<Decimal>;
}
class LiquidityRouter implements LiquidityProvider {
private providers: LiquidityProvider[];
async getQuote(params: QuoteParams): Promise<Quote> {
const quotes = await Promise.allSettled(
this.providers.map(p => p.getQuote(params))
);
const validQuotes = quotes
.filter(q => q.status === 'fulfilled')
.map(q => (q as PromiseFulfilledResult<Quote>).value);
return validQuotes.sort((a, b) => b.netRate - a.netRate)[0];
}
}
Комплаєнс: AML, KYC та оподаткування
Обов'язковий KYC: перевірка особи (паспорт/ID), proof of address, OFAC screening. Провайдери: Sumsub, Jumio, Onfido. Рівні верифікації впливають на ліміти: базовий — $500/день, enhanced — $10,000/день. Моніторинг транзакцій виявляє підозрілі патерни: structuring detection, незвичні категорії мерчантів (80% трафіку карток припадає на 20% категорій). Використовуємо Chainalysis, Elliptic для крипто-сторони; ComplyAdvantage для фіат.
Ліцензування: В EU — EMI ліцензія або партнерство з ліцензованим EMI. В US — Money Transmitter Licence в кожному штаті. Отримання ліцензії: 6–18 місяців. Альтернатива: робота під ліцензією BIN-спонсора (скорочує термін на 40–60%).
Конвертація крипто при оплаті карткою — taxable event в US, UK, більшості EU. Система генерує tax-lot записи: актив, дата придбання, собівартість, дата списання, сума та результат. Надання tax report (наприклад, 1099 в США) обов'язкове для ліцензованих операцій.
Принципи роботи фізичних та віртуальних карток
Віртуальні картки випускаються миттєво через Marqeta API, використовуються для Apple Pay / Google Pay — пріоритет для швидкого MVP.
Фізичні картки потребують card personalisation bureau (Matica, Entrust). Термін виробництва: 5–14 днів. Delivery tracking інтеграція.
Freeze/unfreeze — користувач повинен мати можливість миттєво заморозити картку через додаток. Marqeta API: cards/{token}/transitions зі станом SUSPENDED.
Етапи та терміни розробки
| Фаза | Зміст | Термін |
|---|---|---|
| Setup & licensing | Вибір BIN-спонсора, юридична структура, KYC провайдер | 4–8 тиж |
| Core wallet | Крипто-гаманець, баланси, holds | 3–4 тиж |
| JIT funding | Webhook, pricing engine, hold механізм | 3–4 тиж |
| Liquidity | FX інтеграція, конвертація при clearing | 2–3 тиж |
| Card management | Віртуальні картки, Marqeta integration | 3–4 тиж |
| Compliance | AML моніторинг, tax reporting | 3–4 тиж |
| Physical cards | Виробництво, delivery | 2–3 тиж |
| Testing & launch | End-to-end, UAT, soft launch | 3–4 тиж |
Реалістичний термін від нуля до робочого продукту з віртуальними картками: 6–9 місяців. Основні блокери — legal/compliance onboarding з BIN-спонсором та KYC провайдером, а не розробка.
Замовте оцінку вашого проекту — отримайте консультацію з архітектури та ліцензування. Наш досвід — гарантія якості: 8+ років на ринку, 15+ проектів, 100% успішних запусків.







