CiExchange logo

Documentation de l'API de paiement en cryptomonnaies.

Dernière mise à jour : 31 Janvier 2026

Bienvenue sur la documentation de l'API de paiement en cryptomonnaies de CiExchange.
Cette API permet aux e-commerçants, développeurs d'applications web/mobile, prestataires de services, créateurs de contenu, freelancers ...etc d'accepter des paiements en cryptomonnaies de manière sécurisée et simplifiée.

Processus d'Intégration

L'intégration de CiExchange Pay suit généralement ces trois étapes :

  1. Création du paiement : Votre serveur ou votre application frontend appelle l'API pour créer un paiement et reçoit une URL de page de paiement (checkout).
  2. Paiement du client : Vous redirigez votre client vers l'URL fournie. Il y trouvera les instructions pour effectuer le transfert.
  3. Confirmation et Notification : Une fois la transaction confirmée sur la blockchain, CiExchange notifie votre serveur via un Webhook et redirige le client vers votre site.

URL de base

Toutes les requêtes doivent être envoyées à l'URL suivante :

https://ciexchange.xyz

Clés API

Les clés API servent à authentifier les requêtes adressées à l'API.

Considérez votre clé API comme un mot de passe. Gardez-la en lieu sûr et ne la partagez jamais avec des applications ou des personnes en qui vous n'avez pas confiance.

Types de Clés API

Clé API Publique (Public Key)

Utilisation : Authentification côté client (frontend).

  • Création de paiements
  • Obtenir les détails/informations d'un paiement
  • Vérification du statut des paiements
  • Opérations non sensibles

Sécurité : Peut être exposée publiquement dans le code client.

Clé API Secrète (Secret Key)

Utilisation : Authentification côté serveur (backend) uniquement.

  • Régénération des clés API
  • Modification des paiements
  • Opérations sensibles et administratives

Sécurité : Ne doit JAMAIS être exposée publiquement. Stockez-la de manière sécurisée sur votre serveur.

Environnements

Deux ensembles de clés sont disponibles :

Obtention de la Clé d'API

Pour obtenir vos clés d'API, suivez ces étapes :

  1. Connectez-vous à votre compte CiExchange.
  2. Cliquer sur COMPTES MARCHANDS dans le menu latéral gauche.
  3. Cliquer sur un compte marchand si vous en avez un ou créez-en un si vous n'en avez pas encore.
  4. Cliquez sur "Développeur" dans le menu latéral gauche pour trouver vos clés d'API ou en créer de nouvelles.

Authentification

Toutes les requêtes à l'API doivent être authentifiées à l'aide d'une clé d'API. La clé d'API doit être incluse dans l'en-tête authorization de chaque requête.

"Authorization": "Bearer VOTRE_CLE_API"

Créer un Paiement

Ce point de terminaison permet de créer un paiement. En retour, vous obtiendrez l'URL de la page de paiement vers laquelle rediriger votre utilisateur ou votre client pour effectuer le paiement.

Clé API recommandée : Clé Publique (Public Key)

Requête

POST/api/v1/payments/

Corps de la requête (JSON)

{
  "fiatAmount": 50000,
  "fiatCurrency": "XOF",
  "payoutAddress": "0x39E60373b7A1BE5bf9F4288D58e65C8d9c314F06",
  "redirectUrl": "https://monsite-web.com/success",
  "acceptedCryptoType": "stablecoins",
  "orderId": "ORDER_12345",
  "additionalData": [
    {
      "key": "customer_email",
      "value": "customer@example.com"
    }
  ]
}

Champs du corps de la requête

ChampTypeStatutDescription
fiatAmountnumberObligatoireLe montant du paiement en devise fiduciaire.
fiatCurrencystringObligatoireLa devise fiduciaire (ex: XOF, XAF, USD, EUR, GBP, CAD, CHF).
payoutAddressstringObligatoireL'adresse blockchain (0x...) pour recevoir les fonds.
acceptedCryptoTypestringFacultatifTypes de cryptos acceptés: stablecoins, native_cryptos, ou stablecoins_and_native_cryptos.
redirectUrlstring (url)FacultatifURL de redirection de l'utilisateur après le paiement.
orderIdstringFacultatifVotre identifiant de commande interne.
additionalDataarrayFacultatifTableau d'objets {key, value} pour des métadonnées personnalisées.
merchantIdstring (uuid)FacultatifID du marchand (automatique si vous utilisez un Token API Marchand).
preferredAssetIdForPaymentstring (uuid)FacultatifID d'une cryptomonnaie spécifique si vous souhaitez restreindre le paiement.
expiresAtstring (ISO 8601)FacultatifDate d'expiration du lien de paiement.

Exemple de requête

HTTP

POST /api/v1/payments HTTP/1.1
Content-Type: application/json
Authorization: Bearer test_public_key__80cfb706c4f69d265c2477e4097b144460ef0a49dc229ac4a710b90cf67367fd
Host: https://ciexchange.xyz
Content-Length: 611
{ "fiatAmount": 50000, "fiatCurrency": "XOF", "payoutAddress": "0x39E60373b7A1BE5bf9F4288D58e65C8d9c314F06", "redirectUrl": "https://monsite-web.com/success", "acceptedCryptoType": "stablecoins", "orderId": "ORDER_12345", "additionalData": [ { "key": "customer_email", "value": "customer@example.com" } ] }

Réponse en cas de succès

La réponse contiendra l'ID du paiement et l'URL de la page de paiement.

{
  "data": {
    "payment": {
      "id": "9617ee4d-fb82-4281-9293-d79df20684d4"
    },
    "payment_page_url": "https://app.ciexchange.xyz/pay/9617ee4d-fb82-4281-9293-d79df20684d4"
  },
  "message": "Page de paiement crée avec succès."
}

Réponse en cas d'échec

La réponse contiendra le message ci-dessous.

{
  "error": {
    "message": "Message d'erreur"
  }
}

Modifier un Paiement

Ce point de terminaison permet de modifier les détails d'un paiement existant. Utile pour mettre à jour les informations de commande ou corriger des erreurs.

Clé API requise : Clé Secrète (Secret Key) - Opération sensible

Requête

PUT/api/payments/:paymentId

Paramètres d'URL

  • paymentId (string, requis) - L'ID du paiement.

Corps de la requête (JSON)

{
  "fiatAmount": 100000,
  "fiatCurrency": "XOF",
  "redirectUrl": "https://monsite-web.com/updated-success",
  "payoutAddress": "0x39E60373b7A1BE5bf9F4288D58e65C8d9c314F06"
}

Champs modifiables

Vous pouvez envoyer n'importe lequel des champs utilisés lors de la création pour mettre à jour le paiement. Les règles de caractère obligatoire/facultatif restent les mêmes.

Exemple de requête

HTTP

PUT /api/v1/payments/9617ee4d-fb82-4281-9293-d79df20684d4 HTTP/1.1
Content-Type: application/json
Authorization: Bearer test_secret_key__80cfb706c4f69d265c2477e4097b144460ef0a49dc229ac4a710b90cf67367fd
Host: https://ciexchange.xyz
Content-Length: 612
{ "fiatAmount": 100000, "fiatCurrency": "XOF", "redirectUrl": "https://monsite-web.com/updated-success", "payoutAddress": "0x39E60373b7A1BE5bf9F4288D58e65C8d9c314F06" }

Réponse en cas de succès

La réponse contiendra les détails mis à jour du paiement.

{
  "data": {
    "payment": {
      "id": "9617ee4d-fb82-4281-9293-d79df20684d4"
    },
    "payment_page_url": "https://app.ciexchange.xyz/pay/9617ee4d-fb82-4281-9293-d79df20684d4"
  },
  "message": "Informations de paiement modifié avec succès."
}

Réponse en cas d'échec

La réponse contiendra le message d'erreur.

{
  "error": {
    "message": "Message d'erreur"
  }
}

Restrictions

  • Un paiement ne peut être modifié que s'il est en statut "PENDING" (en attente de paiement).
  • Les paiements "COMPLETED" (paiement terminé) ne peuvent pas être modifiés.

Supprimer un Paiement

Ce point de terminaison permet de supprimer un paiement existant. Cela est utile pour annuler des demandes de paiement qui ne sont plus nécessaires.

Clé API requise : Clé Secrète (Secret Key) - Opération destructive

Requête

DELETE/api/payments/{paymentId}

Paramètres d'URL

  • paymentId (string, requis) - L'ID du paiement à supprimer.

Exemple de requête

HTTP

DELETE /api/v1/payments/9617ee4d-fb82-4281-9293-d79df20684d4 HTTP/1.1
Authorization: Bearer test_secret_key__...
Host: https://ciexchange.xyz

Réponse en cas de succès

{
  "success": {
    "message": "Paiement supprimé avec succès."
  }
}

Réponse en cas d'échec

{
  "error": {
    "message": "Seuls les paiements en attente peuvent être supprimés."
  }
}

Restrictions

  • Seuls les paiements avec le statut PENDING peuvent être supprimés.
  • Les paiements déjà complétés ne peuvent pas être supprimés.

Obtenir les détails d'un Paiement

Ce point de terminaison permet de récupérer tous les détails d'un paiement spécifique, y compris les informations de transaction et les métadonnées.

Clé API recommandée : Clé Publique (Public Key)

Requête

GET/api/payments/:paymentId

Paramètres d'URL

  • paymentId (string, requis) - L'ID du paiement.

Exemple de requête

GET /api/v1/payments/9617ee4d-fb82-4281-9293-d79df20684d4 HTTP/1.1
Content-Type: application/json
Authorization: Bearer test_public_key__80cfb706c4f69d265c2477e4097b144460ef0a49dc229ac4a710b90cf67367fd
Host: https://ciexchange.xyz

Réponse en cas de succès

La réponse contiendra tous les détails du paiement.

{
  "data": {
    "paymentData": {
      "id": "f34394b6-63dc-435e-a5cf-4a7f448b112c",
      "fiat_amount": 50000,
      "fiat_currency": "XOF",
      "redirect_url": "https://monsite-web.com/success",
      "additional_data": [
        {
          "key": "order_id",
          "value": "73b87b0b-9415-4df3-b0dc-9a8047343350"
        },
        {
          "key": "customer_email",
          "value": "prenoms@gmail.com"
        }
      ],
      "status": "PENDING",
      "expires_at": null,
      "type_of_crypto_accepted": "stablecoins",
      "payout_address": "0x39E60373b7A1BE5bf9F4288D58e65C8d9c314F06",
      "created_at": "2025-11-20T12:01:38.881Z",
      "is_test": true,
      "preferred_asset_id_for_payment": null
    },
    "payment_page_url": "https://app.ciexchange.com/pay/PAYMENT_ID"
  },
  "success": {
    "message": "détails du paiement."
  }
}

Champs de la Réponse

  • id: Identifiant unique du paiement
  • fiat_amount: Montant en devise fiduciaire
  • fiat_currency: Devise fiduciaire (code alphabétique de trois lettres ISO 4217), exemple : XOF, XAF, USD, EUR, GBP, CAD, CHF ...etc.
  • redirect_url: URL de redirection de l'utilisateur après le paiement
  • additional_data: Données supplémentaires du paiement
  • order_id: Identifiant unique de la commande dans votre système
  • payout_address: Adresse Ethereum (0x...) sur laquelle vous souhaitez recevoir le paiement en cryptomonnaie
  • type_of_crypto_accepted: Type de cryptomonnaie accepté (stablecoins, native_cryptos)
  • preferred_asset_id_for_payment: ID de l'actif préféré pour le paiement (si vous avez choisir une cryptomonnaie spécifique dans lequel recevoir le paiement)
  • status: Statut actuel du paiement
  • created_at: Date de création
  • updated_at: Dernière mise à jour
  • expires_at: Date d'expiration
  • payment_page_url: URL de la page de paiement

Réponse en cas d'échec

La réponse contiendra le message d'erreur.

{
  "error": {
    "message": "Not found."
  }
}

Statuts possibles des paiements

  • PENDING - Paiement en attente.
  • COMPLETED - Paiement effectué.

Obtenir les détails d'un transaction de paiement

Ce point de terminaison permet de récupérer les détails d'une transaction lorsque le paiement est effectué.

Clé API recommandée : Clé Publique (Public Key)

Requête

GET/api/v1/paiement-transactions/:transactionHash

Paramètres d'URL

  • transactionHash (string, requis) - Le hash de la transaction de paiement.

Exemple de requête

GET /api/v1/payment-transactions/0xd3d23557a930fa511c0b821d75fa83f3a70e98cdef4a426ec929f9829ff5cec2 HTTP/1.1
Content-Type: application/json
Authorization: Bearer test_secret_key__80cfb706c4f69d265c2477e4097b144460ef0a49dc229ac4a710b90cf67367fd
Host: https://ciexchange.xyz

Réponse en cas de succès

La réponse contiendra tous les détails de la transaction.

{
  "id": "4b09a85b-d74b-4147-b497-47e621277130",
  "payment_id": "a98086aa-c744-4eeb-a25f-bef0af7f20c3",
  "asset_id": "5a9387e6-745b-4786-a01b-eeb0ed9306c1",
  "amount_paid": "1000",
  "platform_fee_percentage": 100,
  "platform_fee_amount": "10",
  "amount_to_transfer_to_merchant": "990",
  "blockchain_txn_hash": "0xd3d23557a930fa511c0b821d75fa83f3a70e98cdef4a426ec929f9829ff5cec2",
  "created_at": "2024-01-15T10:05:00Z"
}

Champs de la Réponse

  • id: Identifiant unique de la transaction
  • payment_id: ID du paiement associé
  • asset_id: ID de cryptomonnaie utilisée pour le paiement, Ex: "5a9387e6-745b-4786-a01b-eeb0ed9306c1" (USDT)
  • amount_paid: Montant total payé en cryptomonnaie (Ex: 1000 USDT)
  • platform_fee_percentage: Pourcentage de CiExchange, (100 pour 1%, 100 points de base = 1%).
  • platform_fee_amount: Frais de service CiExchange (Ex: 10 USDT)
  • amount_to_transfer_to_merchant: Montant net transférer au marchand (Ex: 990 USDT)
  • blockchain_txn_hash: Hash de la transaction blockchain
  • created_at: Date de création

Réponse en cas d'échec

La réponse contiendra le message d'erreur.

{
  "error": {
    "message": "Transaction non trouvée"
  }
}

Obtenir les crypto-monnaies supportées pour CiExchange Pay

Ce point de terminaison permet de récupérer la liste des crypto-monnaies spécifiquement supportées pour effectuer des paiements via CiExchange Pay.

Clé API recommandée : Clé Publique (Public Key)

Requête

GET/api/v1/cryptocurrencies/supported/for-pay

Réponse en cas de succès

{
  "data": [
    {
      "id": "5a9387e6-745b-4786-a01b-eeb0ed9306c1",
      "name": "Tether",
      "symbol": "USDT",
      "is_stablecoin": true,
      "current_price": 1
    }
  ],
  "message": "Liste des crypto-monnaies supportées pour CiExchange Pay."
}

Webhooks de Notification

Le système de webhooks permet de recevoir des notifications en temps réel sur le statut des paiements.

Configuration

Pour configurer les webhooks, allez dans votre compte marchand CiExchange Pay, puis cliquez sur Développeur dans le menu latéral gauche et puis cliquez sur URLS Webhook. Cliquez ensuite sur Ajouter un URL Webhook et remplissez le formulaire.

Jeton de Sécurité (Webhook Token)

Après avoir ajouté une URL Webhook avec succès, un modal s'affichera contenant un Token Webhook unique.

Important : Vous devrez copier ce token et l'utiliser côté backend pour vérifier que la requête Webhook provient effectivement de CiExchange Pay. Ce token est envoyé dans le header HTTP X-CiExchange-Pay-Webhook-Token.

Réception d'un Webhook

Lorsqu'un Webhook est envoyé à l'url que vous avez configuré, la requête http POST contient un corps en format JSON détaillant l'événement Webhook. Le header X-CiExchange-Pay-Webhook-Token est également présent pour vous permettre de vérifier l'authenticité de la requête.

Exemple de corps de la requête Webhook.

{
  "event": "payment-completed",
  "data": {
    "paymentId": "9617ee4d-fb82-4281-9293-d79df20684d4",
    "status": "COMPLETED",
    "paymentTransactionHash": "0x1234567890abcdef..."
  }
}

Événements Supportés

  • payment-completed - Paiement réussi
  • payment-failed - Paiement échoué

Bonnes Pratiques

  • Votre endpoint webhook doit répondre avec un statut HTTP 200 dans les 5 secondes
  • Logguez toutes les notifications reçues

Exemple de Réponse Attendue

// Votre endpoint doit retourner HTTP/1.1 200 OK Content-Type: application/json
{ "success": true, "message": "Webhook received successfully" }

Bonnes Pratiques de Sécurité

⚠️ Important : Sécurité des Clés API

  • Clé Publique : Peut être utilisée dans le code frontend
  • Clé Secrète : JAMAIS dans le code frontend. Utilisez-la uniquement dans votre backend sécurisé
  • Ne commitez jamais vos clés secrètes dans des dépôts Git
  • Utilisez des variables d'environnement pour stocker les clés
  • Régénérez vos clés immédiatement en cas de suspicion de compromission

Codes d'État HTTP

URL du serveur

https://ciexchange.xyz/api/v1/

Swagger

Documnentation Swagger de l'API

Demo de page de paiement

Vous pouvez voir une démo d'une page de paiement CiExchange Pay en cliquant sur le lien ci-dessous :

https://app.ciexchange.xyz/pay/5d764429-2a9e-4272-8d7a-7d66d10d4711

Support

Pour toute question technique ou assistance, contactez notre équipe de support :