Виведення криптовалюти на банківську картку — 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-скринінг.
Отримайте оцінку проекту, написавши нам.







