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 :
- 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).
- Paiement du client : Vous redirigez votre client vers l'URL fournie. Il y trouvera les instructions pour effectuer le transfert.
- 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.xyzClé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 :
- Test : Pour les tests en utilisant des cryptomonnaies fictives (test tokens).
- Production : Pour les transactions réelles avec de vrais cryptomonnaies.
Obtention de la Clé d'API
Pour obtenir vos clés d'API, suivez ces étapes :
- Connectez-vous à votre compte CiExchange.
- Cliquer sur COMPTES MARCHANDS dans le menu latéral gauche.
- Cliquer sur un compte marchand si vous en avez un ou créez-en un si vous n'en avez pas encore.
- 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.
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
| Champ | Type | Statut | Description |
|---|---|---|---|
fiatAmount | number | Obligatoire | Le montant du paiement en devise fiduciaire. |
fiatCurrency | string | Obligatoire | La devise fiduciaire (ex: XOF, XAF, USD, EUR, GBP, CAD, CHF). |
payoutAddress | string | Obligatoire | L'adresse blockchain (0x...) pour recevoir les fonds. |
acceptedCryptoType | string | Facultatif | Types de cryptos acceptés: stablecoins, native_cryptos, ou stablecoins_and_native_cryptos. |
redirectUrl | string (url) | Facultatif | URL de redirection de l'utilisateur après le paiement. |
orderId | string | Facultatif | Votre identifiant de commande interne. |
additionalData | array | Facultatif | Tableau d'objets {key, value} pour des métadonnées personnalisées. |
merchantId | string (uuid) | Facultatif | ID du marchand (automatique si vous utilisez un Token API Marchand). |
preferredAssetIdForPayment | string (uuid) | Facultatif | ID d'une cryptomonnaie spécifique si vous souhaitez restreindre le paiement. |
expiresAt | string (ISO 8601) | Facultatif | Date 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.
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.
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.xyzRé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
PENDINGpeuvent ê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.
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.xyzRé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 paiementfiat_amount: Montant en devise fiduciairefiat_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 paiementadditional_data: Données supplémentaires du paiementorder_id: Identifiant unique de la commande dans votre systèmepayout_address: Adresse Ethereum (0x...) sur laquelle vous souhaitez recevoir le paiement en cryptomonnaietype_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 paiementcreated_at: Date de créationupdated_at: Dernière mise à jourexpires_at: Date d'expirationpayment_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é.
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.xyzRé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 transactionpayment_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 blockchaincreated_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.
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.
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éussipayment-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
200- Succès201- Créé avec succès400- requête invalide401- Non autorisé404- Ressource non trouvée422- Entité non traitable500- Erreur interne du serveur
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 :
- Email : support@ciexchange.xyz
- Statut des services : https://ciexchange.xyz/api/v1/status