Вывод криптовалюты на банковскую карту — off-ramp сценарий, требующий интеграции с платёжными сетями Visa Direct или Mastercard Send. На практике каждая вторая компания сталкивается с отклонениями транзакций из-за банковских фильтров или некорректной токенизации. За последний год мы реализовали 15 таких интеграций и выработали подход, который поднимает успешность транзакций до 95%. Настройка включает верификацию карты через micro-deposit, AML-скрининг и систему автоматических повторных попыток.
Почему push-to-card — не просто «перевести деньги»?
В отличие от pull-транзакций (списание с карты), push-to-card использует иной API — Visa Direct или Mastercard Send. Это прямой кредит на дебетовую карту через сеть платёжной системы. Провайдеры требуют отдельного разрешения и лицензирования — просто подключить API не выйдет.
Visa Direct — поддерживает мгновенные переводы на дебетовые карты Visa в 200+ странах. Средняя скорость зачисления: 30 минут в США, несколько часов в ЕС. Mastercard Send — аналогичный сервис для карт Mastercard. Доступ к этим API — только через авторизованных технологических партнёров (Marqeta, Stripe Issuing, Checkout.com Payouts, Modulr).
Visa Direct Documentation — официальное описание API и требований.
Как работает токенизация карты для вывода?
Пользователь добавляет карту через API — мы принимаем данные, но не храним PAN. Токенизация через Checkout.com или аналогичного провайдера заменяет номер карты на одноразовый или постоянный токен. Это критично для безопасности и соответствия PCI DSS.
@app.post("/api/withdrawal-cards") async def add_withdrawal_card( card_data: CardData, user: User = Depends(get_current_user) ): # Токенизируем через Checkout.com token_resp = await checkout.tokenize_card({ "type": "card", "number": card_data.number, "expiry_month": card_data.expiry_month, "expiry_year": card_data.expiry_year, "name": card_data.holder_name, }) # Верифицируем карту: небольшой charge + return verify_result = await verify_card_ownership( token=token_resp["token"], user_id=user.id ) if verify_result.verified: await db.save_withdrawal_card( user_id=user.id, token=token_resp["token"], last4=card_data.number[-4:], brand=token_resp["scheme"], ) Интеграция через Checkout.com Payouts
import httpx import uuid class CheckoutPayoutsClient: BASE_URL = "https://api.checkout.com" def __init__(self, secret_key: str): self.session = httpx.AsyncClient( headers={"Authorization": f"Bearer {secret_key}"} ) async def payout_to_card( self, card_token: str, # токенизированная карта amount: int, # в минорных единицах (центы) currency: str, reference: str, recipient_name: str, ) -> dict: payload = { "source": { "type": "currency_account", "id": "ca_xxx", # ваш счёт в Checkout }, "destination": { "type": "token", "token": card_token, }, "amount": amount, "currency": currency, "reference": reference, "instruction": { "purpose": "CRYPTO_WITHDRAWAL", "charge_bearer": "CRED", "funds_transfer_type": "FD", # Fund Disbursement }, "sender": { "type": "instrument", "reference": str(uuid.uuid4()), "first_name": "Platform", "last_name": "Name", }, } resp = await self.session.post( f"{self.BASE_URL}/transfers", json=payload ) return resp.json() Как уменьшить процент отклонений?
Банки часто блокируют входящие push-платежи от криптовалютных компаний. Средний уровень успешных транзакций для off-ramp — 85–95%. Отклонения возникают из-за несовпадения имени держателя карты с KYC-данными, превышения лимитов или внутренних рисковых политик банка. Чтобы минимизировать отказы:
- Проводим micro-deposit verification: списываем $0.01–$1.00 и просим пользователя подтвердить сумму из выписки.
- Настраиваем BIN-фильтрацию: отсекаем карты банков, которые массово отклоняют криптовалютные переводы.
- Реализуем автоматические повторные попытки с экспоненциальной задержкой (до 3 попыток) и fallback на банковский перевод.
Пример: используем очередь RabbitMQ с retry-механизмом. При отклонении транзакция попадает в очередь с задержкой 5 минут, затем 15, затем 60. После третьей попытки — алерт в Slack и перевод на банковский счёт через SEPA/ACH.
Сравнение провайдеров off-ramp
| Провайдер | Тип интеграции | Средняя скорость | Доступность | Комиссия (ориентир) |
|---|---|---|---|---|
| Visa Direct | Push-to-card | 30 мин – 2 ч | 200+ стран | 0.5–1.5% + $0.50 |
| Mastercard Send | Push-to-card | 30 мин – 2 ч | 150+ стран | 0.5–2.0% + $0.50 |
| Checkout.com Payouts | Агрегатор | 1–4 ч | 180+ стран | 1–3% (all-in) |
Visa Direct в 2 раза быстрее Mastercard Send в странах Азии благодаря локальным клиринговым сетям. Однако Mastercard Send часто имеет более низкие комиссии в Европе.
Mastercard Send Developer Portal — детальные спецификации и требования.
Что входит в работу?
| Этап | Длительность |
|---|---|
| Аналитика и выбор провайдера | 3–5 дней |
| Интеграция API (токенизация, отправка) | 5–10 дней |
| Верификация и повторные попытки | 3–5 дней |
| Мониторинг и документация | 2–3 дня |
Мы настраиваем полный пайплайн вывода на карту «под ключ»:
- Выбор и интеграция провайдера (Visa Direct / Mastercard Send / агрегатор)
- Реализация токенизации карт и безопасного хранения
- Настройка верификации (micro-deposit + KYC-матчинг)
- Система повторных попыток и fallback на банковский перевод
- Мониторинг успешности транзакций и алерты при отклонениях (через Tenderly или собственный дашборд)
- Документация API и поддержка на этапе запуска
Сроки: от 2 до 4 недель в зависимости от провайдера и требований. Оценим ваш проект после консультации.
Закажите консультацию по интеграции off-ramp — обсудим ваш стек, лимиты и требования к скорости вывода. У нас более 5 лет опыта в блокчейн-разработке, реализовано 30+ проектов с off-ramp интеграциями. Гарантируем безопасность и прозрачность — все операции проходят AML-скрининг.
Получите оценку проекта, написав нам.







