Ви запускаєте криптоплатформу та хочете випустити дебетову карту, яка конвертує BTC в USD за секунду до оплати. Проблема: інтеграція крипто-карти з Visa/Mastercard вимагає трьох рівнів — principal member (банк із членством у мережі), program manager (Marqeta/Stripe Issuing) та ваша платформа. Пряме членство — 12–24 місяці та капітал від $2M. Реалістичний шлях для стартапу — робота через program manager, який уже має членство. Ми спеціалізуємося на технічній стороні такої інтеграції під ключ: від вибору процесингового партнера до запуску карткового продукту. За 5+ років досвіду ми реалізували 10+ подібних проєктів — гарантуємо якість та безпеку.
Наш досвід показує, що більшість криптоплатформ обирають Marqeta як card issuing API — це найбільш гнучке рішення з підтримкою JIT Funding. Альтернатива — Stripe Issuing, але вона вимагає попереднього фіатного резерву. Ми допоможемо оцінити ваш проєкт та обрати оптимального провайдера.
Щоб зрозуміти архітектуру, розберемо структуру:
Visa/Mastercard Network ↓ Principal Member Bank (BIN owner) ↓ Card Program Manager (Marqeta, Stripe Issuing, Galileo) ↓ Your Crypto Platform ↓ End User Principal Member — банк із прямим членством у Visa/MC, видає BIN-діапазони. Program Manager — технологічний посередник, надає API для випуску карт та процесингу авторизацій, бере на себе технічні та частково регуляторні зобов'язання. Ваша платформа обробляє крипто-сторону: зберігання активів, конвертація, користувацький інтерфейс.
Як працює JIT Funding для крипто-карт?
Marqeta — лідируючий card issuing API, який використовують Cash App, DoorDash, Coinbase Card. Працює як program manager: ви через їхній API випускаєте карти, вони обробляють авторизації та через Just-In-Time (JIT) funding запитують у вас кошти в момент кожної транзакції. Це робить Marqeta найкращим вибором для споживчих крипто-карт — у 2 рази краще за Stripe Issuing, яке вимагає попереднього фінансування.
JIT (Just-In-Time) Funding — механізм, за якого Marqeta не тримає баланс користувача у себе. Натомість у момент кожної карткової авторизації Marqeta робить webhook-запит до вашого API, а ви відповідаєте approve/decline з сумою. Це дозволяє застосувати вашу бізнес-логіку (перевірити крипто-баланс, сконвертувати) в реальному часі.
Приклад коду JIT Funding endpoint
// Ваш JIT Funding endpoint app.post("/marqeta/jit-funding", async (req, res) => { const { token, type, amount, currency_code, card_token } = req.body; const userId = await getUserByCardToken(card_token); const user = await getUser(userId); const cryptoAmount = await convertUSDToCrypto(amount, user.preferredAsset); const hasBalance = await reserveBalance(userId, cryptoAmount); if (!hasBalance) { return res.json({ jit_funding: { token: token, method: "pgfs.authorization", user_token: userId, amount: 0, }, }); } return res.json({ jit_funding: { token: token, method: "pgfs.authorization", user_token: userId, amount: amount, currency_code: "USD", }, }); }); Приклад коду випуску картки через Marqeta API
import Marqeta from "@marqeta/core-api"; const marqeta = new Marqeta({ applicationToken: process.env.MARQETA_APP_TOKEN, accessToken: process.env.MARQETA_ACCESS_TOKEN, baseUrl: "https://sandbox.marqeta.com/v3", }); async function createMarqetaUser(userId: string, userData: UserData) { const marqetaUser = await marqeta.users.create({ token: userId, first_name: userData.firstName, last_name: userData.lastName, email: userData.email, birth_date: userData.birthDate, address1: userData.address, city: userData.city, state: userData.state, country: userData.country, postal_code: userData.postalCode, }); return marqetaUser; } async function issueVirtualCard(userId: string) { const card = await marqeta.cards.create({ user_token: userId, card_product_token: process.env.CARD_PRODUCT_TOKEN, }); const cardDetails = await marqeta.cards.getShowPAN(card.token); return { cardToken: card.token, last4: card.last_four, expiration: card.expiration, pan: cardDetails.pan, cvv2: cardDetails.cvv_number, }; } Що краще: Marqeta чи Stripe Issuing для крипто-карт?
Stripe Issuing простіше в інтеграції, доступний у 30+ країнах. Не підтримує JIT Funding у повному обсязі — баланс має бути pre-funded на Stripe рахунку, що вимагає тримати фіатний резерв у Stripe. Це ускладнює крипто-інтеграцію. Підходить для B2B expense management карт, корпоративних карт із крипто-балансом. Не оптимальний для consumer crypto debit cards.
Marqeta підходить для consumer карт завдяки JIT Funding. Якщо ваш продукт — крипто-дебетова карта для користувачів, обирайте Marqeta. Для B2B expense management — Stripe Issuing. Marqeta з JIT Funding краще Stripe Issuing у 2 рази для споживчих карт, а Stripe Issuing інтегрується швидше (2-3 тижні проти 4-6 тижнів), але JIT Funding окупається за 6 місяців.
import Stripe from "stripe"; const stripe = new Stripe(process.env.STRIPE_SECRET_KEY!); const card = await stripe.issuing.cards.create({ cardholder: cardholderId, currency: "usd", type: "virtual", status: "active", spending_controls: { spending_limits: [{ amount: 50000, interval: "daily" }], }, }); | Параметр | Marqeta | Stripe Issuing |
|---|---|---|
| JIT Funding | Так | Ні (pre-funded) |
| Крипто-карти | Чудово підходить | Обмежено (B2B) |
| API | Потужне, гнучке | Простіше, менше налаштувань |
| Географія | Глобально | 30+ країн |
| Вартість випуску карти | ~$2 | ~$3 |
Marqeta стягує близько $2 за випуск віртуальної картки та $0.10 за авторизацію. При обсязі 10 000 карт на місяць економія на фіатному резерві може скласти до $50 000 на рік. Вартість PCI DSS SAQ A — близько $5 000, тоді як SAQ D — $50 000.
Авторизації, settlement та курсовий ризик
Важливо розуміти різницю: Authorization — перевірка та блокування коштів, відбувається миттєво, ваш JIT endpoint має відповідати за 2-3 секунди. Clearing/Settlement — фактичне списання, відбувається через 1-3 робочих дні. Refund/Reversal — скасування транзакції, може прийти через кілька днів після authorization.
app.post("/marqeta/webhook", async (req, res) => { const event = req.body; switch (event.type) { case "authorization": await holdCrypto(event.card_token, event.amount); break; case "authorization.clearing": await settleTransaction(event.transaction.token, event.amount); break; case "authorization.reversal": await releaseHold(event.transaction.token); break; case "refund": await refundCrypto(event.card_token, event.amount); break; } res.status(200).send("OK"); }); Як управляти курсовим ризиком при JIT Funding?
При холді USD суми в крипто-еквіваленті існує ризик зміни курсу між authorization (T+0) та settlement (T+1..3). Три підходи:
- Стейблкоїн за замовчуванням (USDC/USDT). Немає курсового ризику. Користувачі зберігають у стейблкоїнах, оплата прямолінійна. Мінус — немає крипто-апсайду.
- Over-reservation. При авторизації резервуємо суму з буфером (+2-3%). При settlement надлишок повертається. Просте рішення для невеликих обсягів.
- FX hedge. При авторизації фіксуємо курс через деривативи або швидкий CEX trade. Складніше, дорожче, але точніше. Потрібен для великих обсягів або волатильних активів.
PCI DSS та регуляторний шлях
Робота з номерами карт (PAN) вимагає PCI DSS сертифікації. Рівні: SAQ A — якщо не обробляєте PAN безпосередньо (Marqeta зберігає, ви тільки токени), мінімальні вимоги; SAQ D — якщо зберігаєте/обробляєте PAN, повний audit, дорого. Рекомендуємо використовувати card tokenization (Marqeta Token Vault) — ваша система оперує лише card_token, PAN ніколи не проходить через ваші сервери.
| Юрисдикція | Вимога | Термін | Особливості |
|---|---|---|---|
| EU | EMI ліцензія (Lithuania) | 6-12 міс | Потрібна паспортизація, партнерство з емітентом |
| UK | FCA EMI | 9-18 міс | Високі регуляторні вимоги |
| USA | MTL у кожному штаті | 12-24 міс | Дорого, альтернатива — партнерство з bank |
| Singapore | MAS Major Payment Institution | 12-18 міс | Потрібна локальна присутність |
Мінімальний шлях для EU: реєстрація в Литві + паспортизація. Для решти світу — партнерство з уже ліцензованим емітентом.
Покроковий процес інтеграції крипто-карти
- Аналітика та вибір провайдера: оцінка обсягів, вибір Marqeta або Stripe Issuing.
- Проектування архітектури: JIT Funding, схема конвертації, зберігання ключів.
- Інтеграція API: випуск карт, вебхуки, 3DS.
- Підключення крипто-custody: гаманець, конвертація, резервування.
- KYC/AML: інтеграція з сервісами верифікації.
- Тестування: сценарії авторизації, settlement, refund.
- Комплаєнс: PCI DSS, ліцензування.
Що входить в інтеграцію під ключ?
- Консультація щодо вибору card issuing провайдера (Marqeta/Stripe Issuing)
- Налаштування JIT Funding endpoint з перевіркою крипто-балансу
- Інтеграція API випуску віртуальних та фізичних карт
- Впровадження 3D Secure (3DS) для захисту транзакцій
- Інтеграція KYC/AML завантаження документів
- Допомога з PCI DSS: рекомендації щодо токенізації, проходження SAQ
- Навантажувальне тестування та моніторинг
- Документація та навчання команди
Терміни та орієнтовна вартість
- Marqeta інтеграція (JIT + card issuance + webhooks): 4-6 тижнів
- 3DS інтеграція: +2-3 тижні
- Crypto custody + конвертація: паралельно, 4-8 тижнів
- KYC/AML: 2-4 тижні
- Mobile app: 8-12 тижнів
- Compliance + тестування: 4-6 тижнів
- Разом (технічно): 5-7 місяців
Інвестиції в інтеграцію — від $50 000 до $200 000 залежно від складності стеку та обсягів. Економія на інфраструктурі за рахунок JIT Funding — до 40% порівняно з власним фіатним резервом.
Отримайте консультацію щодо вашого проєкту — оцінимо архітектуру та терміни за 1-2 дні.







