Tchin Docs

Encaisser

Encaisser en crypto

Vos clients peuvent payer en USDT (TRC-20), TRON (TRX), BNB (BNB Smart Chain) ou Solana (SOL). Le prix reste en FCFA : nous le convertissons au cours du moment. La crypto arrive sur votre solde crypto Tchin, dans la crypto payée — d'où vous la retirez, en crypto, quand vous voulez (Retraits en crypto).

À activer dans votre application. Espace Tchin, onglet API, votre application → « Vos clients paient avec… » : cochez Crypto (avec ou sans Mobile Money). L'appel GET /methods vous dit ensuite quelles cryptos sont ouvertes, dans le bloc cryptos.

Comment c'est relié à la commande

Pour chaque commande, nous donnons au client un montant unique — le prix converti, plus quelques millionièmes (par exemple 8.570001 USDT) — et votre adresse sur le réseau choisi. Quand un virement arrive avec exactement ce montant, la commande est payée : vous recevez le webhook completed, comme pour le Mobile Money.

  • Le montant exact, au dernier chiffre. Un autre montant n'est pas relié à la commande : il arrive quand même sur votre solde crypto (comme un dépôt), mais la commande reste en attente.
  • Le bon réseau. De l'USDT envoyé sur un autre réseau que TRON (TRC-20) n'arrive pas.
  • 60 minutes. Le cours bouge : passé ce délai, le paiement passe en expired. Un virement parti à temps qui arrive en retard (jusqu'à 24 h) paie quand même la commande.
  • Minimum : 1 USDT, 1 TRX, 0,0001 BNB, 0,001 SOL. En dessous, la crypto est refusée pour cette commande (proposez le Mobile Money).
  • Confirmé dès le premier bloc (quelques secondes à une minute selon le réseau).

Les frais

Le tarif de l'encaissement en crypto (2 %) suit le réglage de votre application : à votre charge, il est retenu sur ce que vous recevez ; à la charge du client, il s'ajoute au prix qu'il envoie et vous recevez le prix entier. Les frais du réseau de l'envoi sont payés par le client, dans son portefeuille.

Avec redirection : la page de paiement

Rien de plus à coder : si votre application accepte la crypto, notre page de paiement (Page de paiement) propose en haut « Mobile Money · Crypto ». Le client choisit sa crypto, voit le montant exact, l'adresse et un QR code, envoie depuis son portefeuille, et la page le renvoie chez vous dès que le virement arrive.

Sans redirection : votre propre écran

  1. GET /methods — la liste des cryptos ouvertes (cryptos), avec logo et réseau, pour votre écran.
  2. POST /payments — vous créez la commande et gardez le token (voir Paiement direct).
  3. POST /payments/{token}/crypto — le client a choisi sa crypto : vous obtenez le montant et l'adresse.
  4. Vous les affichez (montant, réseau, adresse, QR code de l'adresse), puis vous attendez le webhook.

Obtenir le montant et l'adresse

cURL
curl -X POST https://tchin.tech/api/v1/payments/9d3f7a21c4/crypto \
  -H "TCHIN-PUBLIC-KEY: tchin_pk_xxxxxxxx" \
  -H "TCHIN-PRIVATE-KEY: tchin_sk_xxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "currency": "USDT" }'
ChampObligatoireDétail
currencyouiUSDT, TRX, BNB ou SOL — une crypto ouverte dans /methods.
JSON
{
  "success": true,
  "token": "9d3f7a21c4",
  "payment_id": "edf602f8-a8cf-4d2c-aa74-af11f5715a5c",
  "status": "pending",
  "currency": "USDT",
  "network": "TRON (TRC-20)",
  "address": "TBo4CyWsNb27YGcKq9uySNfMVhwfVCJSBR",
  "amount": "8.570001",        // à envoyer EXACTEMENT
  "amount_xof": 5000,
  "expires_at": "2026-10-02T11:51:57+00:00",
  "txid": null,
  "explorer": null,
  "transaction_token": null,
  "mode": "live"
}

Redemandé pour la même commande et la même crypto, l'appel renvoie le même paiement tant qu'il est valable : un client qui recharge votre page ne reçoit pas un nouveau montant. Une autre crypto remplace la précédente.

JavaScript
// Côté serveur (Node) : le client choisit USDT sur VOTRE page.
async function payerEnCrypto(token, currency) {
  const r = await fetch(`https://tchin.tech/api/v1/payments/${token}/crypto`, {
    method: 'POST',
    headers: {
      'TCHIN-PUBLIC-KEY': process.env.TCHIN_PUBLIC_KEY,
      'TCHIN-PRIVATE-KEY': process.env.TCHIN_SECRET_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({ currency }),
  });
  const d = await r.json();
  if (!d.success) throw new Error(d.message);

  // À afficher au client : le montant EXACT, le réseau, l'adresse (et son QR code).
  return { montant: d.amount, crypto: d.currency, reseau: d.network, adresse: d.address,
           expire: d.expires_at, paymentId: d.payment_id };
}
POST /api/v1/payments/REMPLACEZ_PAR_LE_TOKEN/crypto Essayer
Vos clés se trouvent dans votre espace, onglet API.

Utilisez vos clés de test : en mode test aucun argent ne circule. Vos clés restent dans ce navigateur — elles ne sont ni enregistrées ni transmises à un tiers. Dans votre intégration réelle, les clés doivent rester sur votre serveur, jamais dans une page.

Suivre le paiement

Le webhook vous prévient. Pour mettre à jour votre écran en attendant, interrogez le paiement (au plus toutes les 4 secondes) — chaque appel regarde aussi votre adresse sur le réseau :

cURL
curl https://tchin.tech/api/v1/payments/9d3f7a21c4/crypto/edf602f8-a8cf-4d2c-aa74-af11f5715a5c \
  -H "TCHIN-PUBLIC-KEY: tchin_pk_xxxxxxxx" \
  -H "TCHIN-PRIVATE-KEY: tchin_sk_xxxxxxxx"
JSON
{
  "success": true,
  "token": "9d3f7a21c4",
  "payment_id": "edf602f8-a8cf-4d2c-aa74-af11f5715a5c",
  "status": "completed",
  "currency": "USDT",
  "amount": "8.570001",
  "txid": "a48d83422c878b0d733e8fe73628b7f6aa6194ee28b351729c65e7616b1ba58a",
  "explorer": "https://tronscan.org/#/transaction/a48d8342…",
  "transaction_token": "cryptopay_edf602f8-a8cf-4d2c-aa74-af11f5715a5c",
  "mode": "live"
}

status vaut pending, completed ou expired. GET /payments/{token}/status fonctionne aussi : il renvoie maintenant le moyen (method) et un bloc crypto quand la commande se paie en crypto.

Le webhook

Le même webhook que pour le Mobile Money, signé de la même façon (Webhooks & signature). Les montants principaux restent en FCFA ; le bloc crypto dit ce qui est arrivé, dans la crypto.

JSON
{
  "response_code": "00",
  "status": "completed",
  "reference": "9d3f7a21c4",
  "token": "cryptopay_edf602f8-a8cf-4d2c-aa74-af11f5715a5c",
  "amount": 5000,          // en FCFA
  "fee": 100,
  "net": 4900,
  "currency": "XOF",
  "method": "crypto-usdt",
  "method_name": "USDT (TRC-20)",
  "mode": "live",
  "crypto": {
    "currency": "USDT",
    "amount":   8.570001,  // envoyé par le client
    "credited": 8.398601,  // arrivé sur votre solde crypto
    "txid":     "a48d8342…"
  },
  "timestamp": 1790000000,
  "signature": "…"
}

En mode test

Créez la commande avec "env": "test". Aucun réseau n'est utilisé : vous obtenez un montant et une adresse pour construire votre écran, puis vous déclenchez la réussite vous-même (le webhook part avec "mode": "test", aucun solde n'est crédité). Sur la page de paiement, un bouton Simuler le paiement fait la même chose.

cURL
curl -X POST https://tchin.tech/api/v1/payments/9d3f7a21c4/crypto/edf602f8-…/simulate \
  -H "TCHIN-PUBLIC-KEY: tchin_pk_xxxxxxxx" \
  -H "TCHIN-PRIVATE-KEY: tchin_sk_xxxxxxxx"

Les pièges

  • Affichez le montant tel quel, sans l'arrondir : 8.570001, pas 8.57.
  • Affichez le réseau à côté de l'adresse : « USDT — réseau TRON (TRC-20) ».
  • Une crypto envoyée est définitive. Nous ne pouvons pas la rendre au client à votre place : un remboursement se fait par un retrait (Retraits en crypto).
  • Livrez sur le webhook, pas sur ce que dit votre écran.
Base API https://tchin.tech/api/v1 Retour au sommaire

Bienvenue.

Votre adresse suffit, le compte se crée seul.

Votre code

Six chiffres envoyés à

Vous acceptez nos conditions et politiques.