Développeurs · API REST v1

Émettez des cartes depuis votre propre code

Créez, rechargez, gelez et clôturez des cartes Visa et Mastercard virtuelles via HTTPS. Les requêtes sont en JSON, authentifiées par une clé secrète, et puisent dans le même solde USDT que vous rechargez en crypto.

URL de basehttps://usdtcryptocard.com/api/v1
Authentification
Bearer sk_live_…
Format
JSON via HTTPS
Endpoints
15
Webhooks
Signés en HMAC-SHA256

Introduction

L'API fait tout ce que fait le tableau de bord, depuis votre serveur. Chaque carte émise et chaque recharge sont payées depuis le solde de votre compte, que vous alimentez par des dépôts en crypto et qui est toujours conservé en USDT.

Les montants sont en dollars américains, avec deux décimales. Les horodatages sont au format ISO 8601, en UTC. Les endpoints de liste sont paginés avec page et per_page.

  1. Créez une cléOuvrez l'accès API dans votre tableau de bord et générez une clé.
  2. Faites-la activerConfirmez votre e-mail, effectuez un premier dépôt, puis demandez au support d'activer l'API.
  3. Lancez un appelVérifiez votre solde avec la requête ci-contre, puis émettez votre première carte.
Premier appel
Requête
curl https://usdtcryptocard.com/api/v1/wallet/balance \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "balance": 1312.5,
  "currency": "USDT",
  "pending_deposits": 500,
  "cards_active": 8,
  "cards_total_balance": 2450
}

Authentification

Envoyez votre clé secrète comme jeton Bearer dans l'en-tête Authorization de chaque requête. Les clés commencent par sk_live_ et se génèrent dans votre tableau de bord, rubrique Accès API.

Gardez la clé sur votre serveur

Quiconque détient la clé peut déplacer l'argent de votre compte. Chargez-la depuis une variable d'environnement et ne la placez jamais dans du code navigateur ou mobile.

Avant votre première requête

Une nouvelle clé répond 403 tant que le compte n'est pas prêt. Vous recevez onboarding_incomplete tant que vous n'avez pas confirmé votre e-mail et effectué un premier dépôt, puis api_not_enabled jusqu'à ce que le support active l'accès API. Écrivez-nous et nous l'activerons.

En-têtes
Requête
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json
X-Idempotency-Key: 7c1e2f0a-retry-safe

Erreurs

Toute réponse autre qu'un 2xx s'accompagne d'un corps JSON : un code d'erreur stable sur lequel vous pouvez vous appuyer, et un message rédigé pour des humains.

200
Requête réussie
201
Ressource créée
400
Paramètres invalides
401
Clé API manquante ou invalide
403
La clé est valide, mais l'accès API n'est pas encore activé pour ce compte
404
Ressource introuvable
429
Limite de taux dépassée
error.json
Réponse403
{
  "error": "api_not_enabled",
  "message": "Open a support ticket from your dashboard to enable API access."
}

Limites de requêtes

Les limites sont comptées par clé API. Si vous en dépassez une, vous recevez un 429 : patientez un instant et réessayez avec un délai progressif.

Requêtes / Minute
1 000
Cartes / Minute
50
Requêtes / Heure
10 000
Cartes

Gestion des Cartes

Chaque carte a son propre solde, ses limites et son cycle de vie : une campagne, un client ou un abonnement n'empiète jamais sur un autre.

POST/cards

Émettre une nouvelle carte virtuelle

Émet une carte sur le BIN choisi et la recharge depuis votre solde dans le même appel.

Corps de la Requête

bin_idstringrequis
Identifiant BIN (ex. 491653). Utilisez GET /bins pour lister les BINs disponibles.
amountnumberrequis
Recharge initiale en USD, prélevée sur votre solde. Minimum $50 ; les frais d'émission de $1 s'ajoutent.
labelstringoptionnel
Étiquette personnalisée pour la carte (max 64 caractères)
spending_limitnumberoptionnel
Limite mensuelle de dépense en USD. Par défaut : maximum du BIN.
allowed_categoriesstring[]optionnel
Catégories de marchands où la carte peut être utilisée, comme la publicité ou les logiciels. Tout le reste est refusé.
auto_freeze_atnumberoptionnel
Geler automatiquement quand le solde tombe sous ce montant
metadataobjectoptionnel
Paires clé-valeur pour votre suivi interne (max 20 clés)
POST /v1/cards
Requête
curl -X POST https://usdtcryptocard.com/api/v1/cards \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "bin_id": "491653",
    "amount": 500,
    "label": "Meta Ads — Campaign 12",
    "spending_limit": 2000,
    "allowed_categories": [
      "advertising"
    ],
    "metadata": {
      "campaign": "fall_2026"
    }
  }'
Réponse201
{
  "id": "card_8xK2m9Lp4q",
  "bin_id": "491653",
  "network": "visa",
  "last4": "2039",
  "status": "active",
  "balance": 500,
  "spending_limit": 2000,
  "label": "Meta Ads — Campaign 12",
  "allowed_categories": [
    "advertising"
  ],
  "auto_freeze_at": null,
  "metadata": {
    "campaign": "fall_2026"
  },
  "created_at": "2026-09-30T12:00:00Z",
  "expires_at": "2030-10-31"
}
GET/cards

Lister toutes les cartes avec filtres et pagination

Vos cartes, des plus récentes aux plus anciennes.

Paramètres de Requête

statusstringoptionnel
Filtrer par statutactivefrozenterminated
bin_idstringoptionnel
Filtrer par BIN
pageintegeroptionnel
Numéro de page. Par défaut : 1
per_pageintegeroptionnel
Éléments par page (1-100). Par défaut : 25
GET /v1/cards
Requête
curl https://usdtcryptocard.com/api/v1/cards?status=active&per_page=25 \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "data": [
    {
      "id": "card_8xK2m9Lp4q",
      "bin_id": "491653",
      "network": "visa",
      "last4": "2039",
      "status": "active",
      "balance": 500,
      "spending_limit": 2000,
      "label": "Meta Ads — Campaign 12"
    }
  ],
  "page": 1,
  "per_page": 25,
  "total": 1
}
GET/cards/{card_id}

Obtenir le résumé de la carte (sans données sensibles)

La carte sans son numéro ni son CVV. Utilisez l'endpoint des détails si vous en avez besoin.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
GET /v1/cards/{card_id}
Requête
curl https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "id": "card_8xK2m9Lp4q",
  "bin_id": "491653",
  "network": "visa",
  "last4": "2039",
  "status": "active",
  "balance": 500,
  "spending_limit": 2000,
  "label": "Meta Ads — Campaign 12",
  "created_at": "2026-09-30T12:00:00Z"
}
GET/cards/{card_id}/details

Obtenir PAN, CVV et expiration complets

Endpoint Sensible

Renvoie PAN, CVV et expiration complets. Sensible PCI — ne jamais journaliser ni stocker non chiffré. Limité à 30 req/min.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
GET /v1/cards/{card_id}/details
Requête
curl https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q/details \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "id": "card_8xK2m9Lp4q",
  "pan": "4916530000002039",
  "cvv": "123",
  "exp_month": 10,
  "exp_year": 2030
}
POST/cards/{card_id}/freeze

Suspendre temporairement une carte

Suspend toutes les transactions. Le solde est préservé. La carte peut être dégelée ultérieurement.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
POST /v1/cards/{card_id}/freeze
Requête
curl -X POST https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q/freeze \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "id": "card_8xK2m9Lp4q",
  "status": "frozen",
  "balance": 500
}
POST/cards/{card_id}/unfreeze

Réactiver une carte gelée

Réactive les transactions sur une carte gelée. Renvoie l'objet carte avec status: "active".

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
POST /v1/cards/{card_id}/unfreeze
Requête
curl -X POST https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q/unfreeze \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "id": "card_8xK2m9Lp4q",
  "status": "active",
  "balance": 500
}
DELETE/cards/{card_id}

Résilier définitivement une carte

Action Irréversible

Résilier une carte est permanent. Le solde restant est retourné instantanément à votre portefeuille.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
DELETE /v1/cards/{card_id}
Requête
curl -X DELETE https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "id": "card_8xK2m9Lp4q",
  "status": "terminated",
  "returned_to_wallet": 500
}
Recharges

Recharge de Cartes

Ajoutez ou retirez des fonds des cartes individuelles. Les fonds proviennent du solde de votre portefeuille.

POST/cards/{card_id}/fund

Ajouter des fonds à une carte

Transfère de l'argent de votre solde vers la carte. Il est dépensable immédiatement.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.

Corps de la Requête

amountnumberrequis
Montant en USD à transférer de votre solde vers la carte.
POST /v1/cards/{card_id}/fund
Requête
curl -X POST https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q/fund \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 200
  }'
Réponse200
{
  "card_id": "card_8xK2m9Lp4q",
  "card_balance": 700,
  "wallet_balance": 612.5
}
POST/cards/{card_id}/withdraw

Retirer des fonds vers le portefeuille

Renvoie les soldes mis à jour de la carte et du portefeuille.

Paramètres de chemin

card_idstringrequis
L'id de la carte, tel que renvoyé à sa création.
POST /v1/cards/{card_id}/withdraw
Requête
curl -X POST https://usdtcryptocard.com/api/v1/cards/card_8xK2m9Lp4q/withdraw \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "card_id": "card_8xK2m9Lp4q",
  "card_balance": 0,
  "wallet_balance": 1312.5
}
Transactions

Historique des Transactions

Visualisez toutes les transactions de vos cartes. Inclut autorisations, règlements, remboursements et refus.

GET/transactions

Lister toutes les transactions avec filtres

Autorisations, règlements, remboursements et refus sur toutes vos cartes, des plus récents aux plus anciens.

Paramètres de Requête

card_idstringoptionnel
Filtrer par carte
typestringoptionnel
Ne renvoyer que les transactions de ce type.authorizationsettlementrefunddecline
fromstringoptionnel
Date de début (ISO 8601)
tostringoptionnel
Date de fin (ISO 8601)
pageintegeroptionnel
Numéro de page. Par défaut : 1
GET /v1/transactions
Requête
curl https://usdtcryptocard.com/api/v1/transactions?card_id=card_8xK2m9Lp4q \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "data": [
    {
      "id": "txn_3fQ9w1Zk",
      "card_id": "card_8xK2m9Lp4q",
      "type": "settlement",
      "amount": 42.9,
      "currency": "USD",
      "fee": 0.3,
      "merchant": {
        "name": "SPOTIFY",
        "mcc": "4899"
      },
      "created_at": "2026-09-30T14:02:11Z"
    }
  ],
  "page": 1
}
Portefeuille

Portefeuille & Dépôts

Gérez le portefeuille de votre compte. Déposez de la crypto, consultez les soldes et suivez les dépôts entrants.

GET/wallet/balance

Obtenir le solde et les statistiques du portefeuille

Votre solde, conservé en USDT, plus ce qui se trouve sur vos cartes.

GET /v1/wallet/balance
Requête
curl https://usdtcryptocard.com/api/v1/wallet/balance \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "balance": 1312.5,
  "currency": "USDT",
  "pending_deposits": 500,
  "cards_active": 8,
  "cards_total_balance": 2450
}
GET/wallet/deposit-address

Obtenir les adresses de dépôt crypto

Où envoyer vos cryptos. Les dépôts sont convertis en USDT dès que le réseau les confirme.

Paramètres de Requête

currencystringoptionnel
Ne renvoyer que l'adresse de cette crypto. Omettez-le pour les obtenir toutes.btcethsolusdtbnbtrxpolltcavaxarb
GET /v1/wallet/deposit-address
Requête
curl https://usdtcryptocard.com/api/v1/wallet/deposit-address?currency=usdt \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "data": [
    {
      "currency": "usdt",
      "network": "ERC-20 (Ethereum)",
      "address": "0x9c4e…b71a"
    }
  ]
}
BINs

Sélection de BIN

Les 9 BIN sur lesquels vous pouvez émettre, avec leur réseau et la compatibilité wallet.

GET/bins

Lister tous les BINs disponibles

Le catalogue des BIN, avec réseau, catégorie et compatibilité Apple Pay / Google Pay.

GET /v1/bins
Requête
curl https://usdtcryptocard.com/api/v1/bins \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "data": [
    {
      "id": "471938",
      "network": "visa",
      "category": "ads",
      "3ds": true,
      "apple_pay": true,
      "google_pay": true
    },
    {
      "id": "553184",
      "network": "mastercard",
      "category": "ads",
      "3ds": true,
      "apple_pay": true,
      "google_pay": true
    }
  ],
  "total": 9
}
3D Secure

Authentification 3D Secure

Récupérez les défis 3DS et codes OTP. Toutes les cartes sont automatiquement inscrites en 3DS 2.0.

GET/3ds

Lister les défis 3DS en attente

Les défis 3D Secure en attente avec leurs codes à usage unique, pour finaliser un paiement sans téléphone.

GET /v1/3ds
Requête
curl https://usdtcryptocard.com/api/v1/3ds?status=pending \
  -H "Authorization: Bearer sk_live_..."
Réponse200
{
  "data": [
    {
      "id": "3ds_m4n5o6p7",
      "card_id": "card_8xK2m9Lp4q",
      "merchant": "SPOTIFY",
      "amount": 9.99,
      "otp": "847291",
      "status": "pending",
      "expires_at": "2026-09-30T15:05:00Z"
    }
  ]
}
Webhooks

Webhooks & Événements

Recevez des notifications en temps réel lors d'événements. Les payloads sont signés avec HMAC-SHA256.

Événements Disponibles

card.created
Une nouvelle carte a été émise
card.frozen
Une carte a été gelée
card.unfrozen
Une carte a été dégelée
card.terminated
Une carte a été résiliée
card.funded
Fonds ajoutés à une carte
transaction.authorized
Transaction autorisée
transaction.settled
Transaction réglée
transaction.declined
Transaction refusée
transaction.refunded
Remboursement traité
3ds.challenge
Vérification 3DS requise
deposit.pending
Dépôt crypto détecté
deposit.confirmed
Dépôt crypto confirmé

Vérification de Signature

Chaque envoi est signé en HMAC-SHA256 avec le secret de votre endpoint. Recalculez la signature sur le corps brut et comparez-la en temps constant avant de faire confiance au contenu.

verify
Code
# Recalculer la signature d'un contenu brut
echo -n "$RAW_BODY" | openssl dgst -sha256 -hmac "$WEBHOOK_SECRET"
POST/webhooks

Enregistrer un endpoint webhook

Enregistre un endpoint HTTPS et les événements qu'il doit recevoir.

Corps de la Requête

urlstringrequis
URL HTTPS de l'endpoint pour recevoir les événements
eventsstring[]requis
Noms des événements auxquels s'abonner. Utilisez ["*"] pour tout recevoir.
secretstringoptionnel
Secret de signature personnalisé. Auto-généré si omis.
POST /v1/webhooks
Requête
curl -X POST https://usdtcryptocard.com/api/v1/webhooks \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com/hooks/cards",
    "events": [
      "transaction.authorized",
      "3ds.challenge"
    ]
  }'
Réponse201
{
  "id": "wh_5tLr8QaZ",
  "url": "https://example.com/hooks/cards",
  "events": [
    "transaction.authorized",
    "3ds.challenge"
  ],
  "secret": "whsec_…",
  "created_at": "2026-09-30T12:00:00Z"
}
API d'émission de cartes virtuelles | USDT Crypto Card