Ви запускаєте криптоплатформу та хочете випустити дебетову карту, яка конвертує 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 дні.







