Вы запускаете криптоплатформу и хотите выпустить дебетовую карту, которая конвертирует BTC в USD за секунду до оплаты. Проблема: интеграция с Visa/Mastercard требует трёх уровней — principal member (банк с членством в сети), program manager (Marqeta/Stripe Issuing) и ваша платформа. Прямое членство — 12–24 месяца и капитал от $2M. Реалистичный путь для стартапа — работа через program manager, который уже имеет членство. Мы специализируемся на технической стороне такой интеграции под ключ: от выбора процессингового партнёра до запуска карточного продукта.
Наш опыт показывает, что большинство криптоплатформ выбирают 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 лучшим выбором для потребительских крипто-карт по сравнению со Stripe Issuing, которое требует предварительного финансирования.
JIT (Just-In-Time) Funding — механизм, при котором Marqeta не держит баланс пользователя у себя. Вместо этого в момент каждой карточной авторизации Marqeta делает webhook-запрос к вашему API, а вы отвечаете approve/decline с суммой. Это позволяет применить вашу бизнес-логику (проверить крипто-баланс, сконвертировать) в реальном времени.
// Ваш 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, }; } Когда выбирать Stripe Issuing, а когда Marqeta?
Stripe Issuing проще в интеграции, доступен в 30+ странах. Не поддерживает JIT Funding в полной мере — баланс должен быть pre-funded на Stripe счёте, что требует держать фиатный резерв у Stripe. Это усложняет крипто-интеграцию. Подходит для B2B expense management карты, корпоративные карты с крипто-балансом. Не оптимален для consumer crypto debit cards.
Marqeta подходит для consumer карт в 2 раза лучше Stripe Issuing за счёт JIT Funding. Если ваш продукт — крипто-дебетовая карта для пользователей, выбирайте Marqeta. Для B2B expense management — Stripe Issuing.
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 в год.
Авторизации, 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 дня.







