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







