# Get all balances Source: https://docs.fedapay.com/api-reference/balances/get-all get /balances # Get a balance Source: https://docs.fedapay.com/api-reference/balances/get-by-id get /balances/{id} Retrieves a single balance by ID # Get all currencies Source: https://docs.fedapay.com/api-reference/currencies/get-all get /currencies # Get a currency Source: https://docs.fedapay.com/api-reference/currencies/get-by-id get /currencies/{id} # Get all events Source: https://docs.fedapay.com/api-reference/events/get-all get /events # Get a event Source: https://docs.fedapay.com/api-reference/events/get-by-id get /events/{id} Retrieves a single event by ID # Introduction à l’API FedaPay Source: https://docs.fedapay.com/api-reference/introduction-fr Bienvenue dans **la référence de l’API FedaPay**, votre guide complet pour intégrer facilement **une passerelle de paiement** à vos sites web et applications. Cette documentation **API** exhaustive met à disposition des entreprises, développeurs et organisations des outils robustes pour gérer les paiements, les clients et les transactions financières dans les régions prises en charge. Améliorez votre expérience d’intégration grâce à des fonctionnalités telles que le test des endpoints directement dans la documentation et des exemples de code prêts à l’emploi dans plusieurs langages de programmation. Ces ressources simplifient le processus d’intégration et garantissent une mise en œuvre fluide, efficace et adaptée à vos exigences techniques. Plongez dans l’écosystème FedaPay et exploitez tout son potentiel. ## Que pouvez-vous réaliser avec l’API FedaPay ? FedaPay propose un ensemble de fonctionnalités conçues pour répondre aux besoins de secteurs variés : * **Gestion des clients (Customer Management)** : Créez et gérez facilement des profils clients. * **Encaissements (Collects)** : Traitez des encaissements sécurisés sur plusieurs canaux de paiement avec un minimum d’effort. * **Paiements sortants (Payouts)** : Automatisez et suivez vos paiements avec précision. * **Suivi des événements (Event Monitoring)** : Recevez des notifications en temps réel sur les événements clés. * **Balances** : Accédez à une vue financière complète et détaillée. * **Devises (Currencies)** : Gérez plusieurs devises en toute simplicité. * **Logs** : Déboguez et suivez l’activité de l’API. * **Webhooks** : Activez une communication fluide et automatisée entre votre application et les services FedaPay. ## Structure de l’API L’API FedaPay est RESTful, conçue pour être simple, cohérente et performante. Les endpoints sont prévisibles, ce qui facilite leur implémentation et leur montée en charge.Chaque section de cette référence correspond à une fonctionnalité clé de l’API et fournit des exemples de code, des réponses attendues ainsi que des bonnes pratiques de gestion des erreurs. ### Authentication Pour garantir la sécurité des transactions, tous les endpoints de l’API nécessitent une authentification par **token Bearer**.Vos clés API donnent accès aux données de votre compte : elles doivent donc être conservées de manière sécurisée. Utilisez l’environnement approprié (sandbox pour les tests, live pour la production). ```json theme={null} "security": [ { "bearerAuth": [] } ] ``` ## Démarrer avec l’API 1. **Choisissez votre environnement**: Utilisez le mode [sandbox](https://sandbox.fedapay.com/register) pour les tests et [live](https://live.fedapay.com/register) pour la production. 2. **Récupérez vos clés API** : Connectez-vous à votre tableau de bord FedaPay pour obtenir vos clés. 3. **Explorez les endpoints** : Consultez les sections Customer, Collect et Payouts pour commencer à construire votre flux de paiement. ## Pourquoi FedaPay ? FedaPay permet aux entreprises de passer à l’échelle facilement tout en bénéficiant de solutions de paiement sécurisées, fiables et rapides. Que vous gériez des transactions unitaires ou des paiements en masse, l’API FedaPay garantit une expérience fluide et performante.Explorez la documentation et libérez tout le potentiel des paiements digitaux avec FedaPay. Commencez dès maintenant par la [section Customer](/api-reference/customers/get-by-id) pour mettre en place votre premier parcours de paiement. # Get all logs Source: https://docs.fedapay.com/api-reference/logs/get-all get /logs # Get a logs Source: https://docs.fedapay.com/api-reference/logs/get-by-id get /logs/{id} # Create a payout Source: https://docs.fedapay.com/api-reference/payouts/create post /payouts This endpoint creates a new payout. # Delete a payout Source: https://docs.fedapay.com/api-reference/payouts/delete delete /payouts/{id} # Search your payouts Source: https://docs.fedapay.com/api-reference/payouts/get-all get /payouts/search # Get a payout Source: https://docs.fedapay.com/api-reference/payouts/get-by-id get /payouts/{id} # Update a payout Source: https://docs.fedapay.com/api-reference/payouts/update put /payouts/{id} # Start payout Source: https://docs.fedapay.com/api-reference/payouts/update-start put /payouts/start # Create a transaction Source: https://docs.fedapay.com/api-reference/transactions/create post /transactions # Get the payment link for a transaction Source: https://docs.fedapay.com/api-reference/transactions/create-token post /transactions/{id}/token # Delete a transaction Source: https://docs.fedapay.com/api-reference/transactions/delete delete /transactions/{id} # Search your transactions Source: https://docs.fedapay.com/api-reference/transactions/get-all get /transactions/search # Get a transaction Source: https://docs.fedapay.com/api-reference/transactions/get-by-id get /transactions/{id} # Send payment to user Source: https://docs.fedapay.com/api-reference/transactions/send-payment post /transactions/{mode} # Update a transaction Source: https://docs.fedapay.com/api-reference/transactions/update put /transactions/{id} # Get all webhooks Source: https://docs.fedapay.com/api-reference/webhooks/get-all get /webhooks # Get a webhook Source: https://docs.fedapay.com/api-reference/webhooks/get-by-id get /webhooks/{id} # API, Évènements, Logs et Webhooks Source: https://docs.fedapay.com/dashboard/fr/api-fr Cette section regroupe les outils avancés permettant d’intégrer votre compte à des systèmes tiers, suivre les collectes en temps réel et inspecter les activités via les journaux (logs). Elle s’adresse autant aux utilisateurs techniques qu’aux gestionnaires souhaitant garder un œil sur leurs opérations. ### API – Gestion des Clés d’Intégration Les **clés API** vous permettent d'intégrer vos services externes à la plateforme. Deux types de clés sont disponibles : * **Clé publique** : à utiliser côté client (navigateur ou application). * **Clé secrète** : à conserver uniquement côté serveur. Pour générer ou renouveler vos clés : 1-Accédez à la section **API**. 2-Cliquez sur “**Régénérer les clés API**” pour générer de nouvelles clés. **Note de sécurité** : Ne partagez jamais votre clé secrète. Elle donne un accès total à votre compte via l’API. ### Évènements – Suivi en Temps Réel des Collectes La **section Évènements** permet de consulter tous les événements générés par les paiements et collectes, par exemple : * Paiement réussi * Paiement échoué * Collecte en attente Chaque événement contient des détails précis sur l’opération concernée. Pour y accéder : * Cliquez sur **Évènements** depuis le menu latéral ou depuis [la page Webhooks & Évènements](https://docs.fedapay.com/integration-api/fr/webhooks-fr). ### Logs – Historique des Activités La **section Logs** fournit un historique complet des opérations liées à vos collectes, incluant : * Le **statut** de chaque action * Une **description claire** de ce qui s’est passé * La **date et l’heure** de l’opération 1- Cliquez sur **Logs** dans le menu pour consulter l’activité. 2- Utilisez les filtres pour rechercher un log spécifique ou un intervalle de temps. ### Webhooks – Connexion avec vos Systèmes Externes Les **Webhooks** vous permettent de recevoir des notifications automatiques lorsqu’un événement spécifique se produit (paiement réussi, échec, etc.). Pour configurer un webhook : 1- Accédez à **Webhooks** depuis le menu ou la section Évènements. 2- Cliquez sur **Ajouter un Webhook**. 3- Renseignez l’**URL de destination** et sélectionnez les types d’événements à surveiller. # Paramètres d'entreprise Source: https://docs.fedapay.com/dashboard/fr/business-fr Les Paramètres d'entreprise de votre compte FedaPay vous permettent de configurer et valider vos informations pour recevoir des virements vers vos comptes bancaires, mobile money, ou cartes prépayées. Voici un guide structuré pour vous aider à naviguer dans cette section. **Accéder aux Paramètres d'Entreprise** Depuis le tableau de bord de votre compte FedaPay, rendez-vous dans l'onglet **Paramètres d'entreprise**. Une interface avec cinq onglets principaux apparaîtra pour configurer différents types de comptes. ![images montrant la page des paramètres d'entreprise](https://res.cloudinary.com/dvilp6td2/image/upload/v1731366833/company-settings_page_tzjsfo.png) #### Compte Cet onglet vous permet de gérer les détails généraux de votre compte FedaPay. * **Intitulé du compte** : Modifiez le nom de votre compte FedaPay. * **Pays et Fuseau horaire** : Sélectionnez le pays où est enregistré votre entreprise ainsi que votre fuseau horaire. **Astuce** : N'oubliez pas de cliquer sur Enregistrer pour sauvegarder vos modifications. #### Entreprise Dans cet onglet, renseignez les informations nécessaires pour identifier votre entreprise et valider votre compte FedaPay. * Nom de l'entreprise * Adresse de l'entreprise * Numéro d'enregistrement de l'entreprise **Astuce** : Complétez tous les champs et cliquez sur Enregistrer pour que votre compte soit validé avec succès. ### Comptes Bancaires Cet onglet vous permet d'ajouter les informations des comptes bancaires vers lesquels vous souhaitez récupérer vos gains par virements bancaires. **Ajouter un Compte Bancaire :** 1. Cliquez sur Ajouter un compte bancaire. 2. Remplissez le formulaire avec les informations suivantes : * **Nom de la banque** * **Pays de la banque (où votre compte est domicilié)** * **Intitulé du compte (comme indiqué sur votre RIB)** * **Numéro de compte (IBAN) et Code SWIFT** ![Ajouter un Compte Bancaire](https://res.cloudinary.com/dvilp6td2/image/upload/v1731367514/add-Bank-account_form_paoyaa.png) Après avoir renseigné ces informations, cliquez sur Suivant pour passer à l'étape des documents. **Étape Documents :** * Type de document d'identité (carte d'identité ou passeport) * Document d'identité : Chargez une copie du document choisi. * Relevé d'Identité Bancaire (RIB) : Chargez une copie de votre RIB. Cliquez sur Envoyer pour soumettre les informations pour vérification. Votre compte bancaire aura le statut Non vérifié jusqu'à ce que les informations soient validées. #### Comptes Mobile Money Dans cet onglet, configurez les numéros de mobile money vers lesquels vous souhaitez récupérer vos gains.Actuellement, les méthodes de versement prises en charge pour les dépôts sont : MTN Bénin, MTN Cote d’ivoire, Moov Bénin, Moov Togo et Togocel **Ajouter un Compte Mobile Money :** * Cliquez sur Ajouter un compte mobile. * Remplissez le formulaire avec les informations suivantes : * Titulaire du compte mobile money (Nom et prénoms) * Indicatif du pays et numéro mobile money ![le formulaire de comptes mobile money](https://res.cloudinary.com/dvilp6td2/image/upload/v1731367958/mobile-money-account_form_ynys3j.png) * Cliquez sur M'envoyer le code de vérification. * Renseignez le code de vérification reçu par SMS dans l'espace dédié et cliquez sur Vérifier. Une fois validé, votre compte mobile money sera marqué comme Vérifié. ### Préférences Pour configurer vos préférences, accédez à **Paramètres d'entreprise>préférences** dans le tableau de bord. Vous verrez une interface avec cinq onglets principaux qui permettent de personnaliser différents aspects de votre compte : **Méthodes de Paiement**, **Frais**, **Devises**, **Notifications** et **Page de Paiement**. * **Méthodes de Paiement** : Consultez la liste des modes de paiement disponibles via FedaPay et activez ceux que vous souhaitez proposer à vos clients. * **Frais** : Choisissez comment gérer les frais de transaction. Cochez les cases des moyens de paiement pour lesquels vous voulez que les frais soient pris en charge par le client. Décochez les cases si vous préférez assumer ces frais. * **Devises** : Activez les devises que vous souhaitez proposer. Les options disponibles incluent l'Euro (EUR), le Franc Guinéen (GNF), et le Franc CFA (XOF). * **Notifications** : Personnalisez les notifications que vous souhaitez recevoir concernant les transactions. Vous pouvez choisir d'être notifié lorsque qu'une transaction est : * Approuvée * Annulée * Déclinée * Transférée * **Page de Paiement** : Personnalisez l'apparence et le contenu de votre page de paiement en cliquant sur le bouton **"Modifier"** disponible pour chaque élément de la page. Ajustez les couleurs, textes et autres éléments pour que votre page de paiement reflète votre marque. Ces préférences vous permettent de configurer FedaPay selon vos besoins commerciaux spécifiques et d’améliorer l'expérience de paiement de vos clients. # Collectes : Consultation et Gestion Source: https://docs.fedapay.com/dashboard/fr/collects-fr La **section Collectes** vous permet de **visualiser, organiser et gérer** l’ensemble de vos transactions, en temps réel. ### Vue d’ensemble des collectes Les collectes sont automatiquement classées en trois catégories : * **Tout** : toutes les transactions enregistrées * **Réussies** : collectes complétées avec succès * **En attente** : collectes créées, mais non encore réglées ### Créer une nouvelle collecte Pour enregistrer une transaction manuellement : 1- Cliquez sur “**Ajouter une collecte**”. 2- Renseignez les champs requis * **Client** (sélection à partir des clients enregistrés) * **Montant** à collecter * **Devise** * **Description** (facultatif) 3- Cliquez sur “**Ajouter**” pour valider. Une fois ajoutée, la collecte apparaît avec le statut “**En attente**”. Vous pouvez ensuite **générer un lien de paiement** pour cette collecte et l’envoyer au client: [Comment générer un lien de paiement](https://support.fedapay.com/portal/fr/kb/articles/comment-g%C3%A9n%C3%A9rer-un-lien-de-paiement-20-3-2025) ### Consulter les collectes existantes Pour accéder à vos transactions enregistrées : 1- Cliquez sur “**Collectes**” dans le menu principal. 2- Une liste de toutes les collectes s’affiche, avec : * Le **montant** * Le **nom du client** * Le **statut** * La **date de création** Un aperçu rapide permet d’identifier les collectes à relancer ou à analyser. **Modifier ou supprimer une collecte** Pour une **collecte en attente**, vous pouvez : * Cliquer sur “**Modifier les détails**” pour ajuster les champs (montant, description, etc.) * Cliquer sur “**Supprimer**” pour l’effacer définitivement Une fois la collecte **payée ou échouée**, elle ne peut plus être modifiée. ### Filtres et exportation Utilisez les **filtres intelligents** pour trier vos collectes selon : * **ID** * **Référence** * **Montant** * **Statut** * **Méthode de paiement** Vous pouvez également **exporter vos collectes** au **format CSV**, pour un usage en comptabilité ou une analyse dans Excel **À retenir** * Créez et gérez vos collectes manuellement ou automatiquement. * Surveillez l’évolution de vos transactions en temps réel. * Personnalisez vos analyses avec les **filtres** et exports **CSV**. # Clients : Gestion et Historique Source: https://docs.fedapay.com/dashboard/fr/customer-fr La section **Clients** de votre tableau de bord FedaPay vous permet de centraliser, consulter et gérer efficacement toutes les informations liées à vos clients. ### Ajouter un nouveau client Pour enregistrer un client dans votre système : 1. Cliquez sur le bouton “Nouveau client”. 2. Remplissez le formulaire avec les informations demandées : * Nom * Adresse e-mail * Numéro de téléphone 3. Cliquez sur **Créer** pour finaliser l’ajout. Cette fonctionnalité est utile pour anticiper des collectes récurrentes ou pour préremplir les pages de paiement personnalisées. ### Modifier ou supprimer un client Chaque client affiché dans la liste peut être : * **Modifié** : cliquez sur l’icône en forme de crayon pour ajuster ses informations. * **Supprimé** : cliquez sur la corbeille pour le retirer de votre base. Une suppression est définitive et supprime également les liens directs avec les collectes. Utilisez avec précaution. ### Historique des collectes d’un client En cliquant sur un client, vous accédez à son **historique détaillé** : * Collectes associées * Statuts des transactions * Dates des événements * Montants concernés Cette vue est idéale pour suivre la fidélité d’un client ou résoudre des litiges liés à des paiements. ### Filtrage et exportation Pour mieux organiser vos données : * Utilisez le bouton “Filtrer” pour trier par : * **Nom** * **Adresse e-mail** * **Date de création** Exportez la liste complète de vos clients en **CSV** pour analyse ou intégration à vos outils de reporting. L’exportation est disponible en un clic via le menu **Plus d’actions** (ou icône dédiée). **Note:** * La section **Clients** permet un **suivi individuel** précis de chaque utilisateur. * Toutes les données peuvent être **modifiées, filtrées ou exportées** facilement. * L’accès à l’historique aide à la **prise de décision commerciale** et au support client. # Récupérer et gérer vos fonds FedaPay Source: https://docs.fedapay.com/dashboard/fr/funds-fr Cette section vous guide à travers le processus pour retirer vos fonds disponibles, les règles relatives aux devises, et la gestion de vos demandes de paiement via FedaPay. Voici comment accéder à vos fonds et effectuer un retrait, étape par étape. #### Accéder aux Fonds Disponibles Sur FedaPay, toutes les transactions marquées comme **"transférées"** sont disponibles sur votre balance FedaPay en fonction de la méthode de paiement utilisée (Mobile Money, carte bancaire, etc.).Pour retirer vos fonds, vous devez d'abord ajouter un compte bancaire ou un numéro Mobile Money. **1-Ajouter un compte bancaire ou un numéro Mobile Money** * Ajouter un compte bancaire : [Suivez ce guide](https://docs.fedapay.com/dashboard/fr/business-fr#comptes-bancaires) * Ajouter un numéro Mobile Money : [Suivez ce guide](https://docs.fedapay.com/dashboard/fr/business-fr#comptes-mobile-money) Une fois votre méthode de retrait ajoutée, vous pouvez initier un retrait. **2-Effectuer un retrait depuis votre balance** * Connectez-vous à votre tableau de bord FedaPay. * Accédez à "Balance" pour voir les fonds disponibles: * Sélectionnez la méthode de paiement et la devise. * Cliquez sur "Demander un paiement". ![Image sur la demande de paiement ](https://res.cloudinary.com/dvilp6td2/image/upload/v1771236294/Screenshot_From_2026-02-09_09-38-50_c0ocl2.png) * Remplissez le formulaire avec les informations suivantes : ![Image du formulaire](https://res.cloudinary.com/dvilp6td2/image/upload/v1771236295/Screenshot_From_2026-02-09_09-40-01_jey2oo.png) * ✅ Montant (compris entre 1 000 et 500 000 XOF) * ✅ Mode de paiement (Mobile Money ou compte bancaire) * ✅ Description du retrait (facultatif) * Cliquez sur "Créer" pour valider la demande. ![Demmande effectuée](https://res.cloudinary.com/dvilp6td2/image/upload/v1771236294/Screenshot_From_2026-02-09_09-40-19_zdn5nd.png) **Informations importantes** * Chaque balance est indépendante → Vous ne pouvez pas combiner plusieurs modes de paiement en un seul retrait. * Les paiements par carte bancaire ne sont pas encore disponibles pour les retraits. * Un délai de 72 heures est nécessaire avant qu’une transaction approuvée soit transférée sur votre balance ### Informations complémentaires sur les retraits FedaPay Une fois que vous avez ajouté et vérifié un **numéro Mobile Money** ou un **compte bancaire** à votre compte FedaPay, vous pouvez initier des retraits. **Vérification de sécurité lors du premier retrait :** * Si vous initiez un retrait **dans les 10 jours suivant la vérification** de votre moyen de retrait, vous recevrez un **email de confirmation** afin de valider que l’opération est bien initiée par vous. * Si le retrait est initié **après 10 jours**, vous ne recevrez pas d’email de confirmation supplémentaire. **Conditions pour les retraits par virement bancaire :** * Le montant du retrait doit être **supérieur ou égal à 53 500 XOF**. * Si le montant est inférieur à ce seuil, **l’opération échouera automatiquement**. ⚠️ **Bonnes pratiques :** * Vérifiez toujours que vos informations de retrait (numéro Mobile Money ou RIB bancaire) sont correctement saisies et à jour. * Planifiez vos retraits en tenant compte des délais de vérification et des plafonds imposés par les opérateurs bancaires ou Mobile Money. #### Gestion des Balances Multidevises FedaPay crée une balance distincte pour chaque devise utilisée dans vos transactions (par exemple, une balance pour les transactions en Euro et une autre pour les transactions en Franc CFA). Cela signifie qu'il est impossible de fusionner les fonds de plusieurs balances pour une demande de virement. **Note** : Bien que vous ne puissiez pas fusionner les fonds de différentes devises pour un virement, vous pouvez recevoir tous les virements sur un même compte bancaire, peu importe la devise, et votre banque effectuera la conversion nécessaire. #### Suivi des Demandes de Paiement Après avoir effectué votre demande de paiement, vous pouvez suivre son statut dans la section **Demandes de Paiement** de votre tableau de bord. Vous pouvez filtrer vos demandes par : * ID de la demande * Montant * Statut * Description * Date de création * Date d’approbation Il existe également un bouton **Exporter en CSV** pour télécharger l’historique des demandes de paiement sous forme de fichier. #### Procédure de Retrait Voici les étapes à suivre pour retirer vos fonds : Accédez à votre balance dans la devise correspondant à votre demande de retrait (par exemple, Euro ou Franc CFA). Depuis votre tableau de bord, émettez une demande de virement vers le compte bancaire ou Mobile Money associé. FedaPay vérifiera la demande et validera le retrait sous réserve de l’absence de contentieux liés aux transactions de la semaine précédente. Une fois validée, la demande sera traitée et le virement sera effectué vers le compte ou portefeuille spécifié. **Détails Importants à Retenir :** * **Toutes les transactions marquées comme "Transférée" sont disponibles** sur la balance de votre compte marchand. * **Un délai de 72 heures est requis** pour que les transactions approuvées soient transférées sur votre balance. * **Les virements peuvent être effectués vers un compte bancaire, Mobile Money**. ## Devises Actuellement Disponibles Pour le moment, FedaPay prend uniquement en charge le Franc CFA (XOF) pour les transactions. Une mise à jour progressive des devises disponibles est prévue. Si vous avez besoin d’une devise spécifique non disponible actuellement, contactez FedaPay pour en faire la demande. **Devises supportées** XOF 952 Franc CFA (UEMOA) Communauté Financière Africaine BCEAO # Vue Générale de vos Collectes Source: https://docs.fedapay.com/dashboard/fr/home-fr Dès votre connexion à votre tableau de bord FedaPay, la page Accueil vous offre une vue d’ensemble instantanée de votre activité financière. Cette interface est conçue pour vous permettre de suivre vos performances en un coup d’œil grâce à des indicateurs clairs et dynamiques. ### Statistiques clés En haut de page, vous trouverez trois indicateurs principaux qui résument votre activité récente : * **Volume brut des collectes**: Affiche le montant total collecté sur la période sélectionnée. * **Nombre de remboursements**: Indique le nombre total de remboursements effectués sur la période. * **Collectes réussies**: Montre le volume des transactions finalisées avec succès.. **Astuce** : Utilisez les filtres de période (jour, semaine, mois, année) en haut à droite pour visualiser l’évolution de vos performances dans le temps. ### Informations sur les Paiements Un peu plus bas, l’interface présente une analyse détaillée de vos paiements, ventilés **par méthode de paiement** (carte bancaire, mobile money, etc.). Vous avez accès à : * **Volume par méthode de paiement**: Comparez les montants collectés via chaque méthode. Idéal pour identifier les canaux les plus performants. * **Nombre de paiements par méthode**: Visualisez la fréquence d’utilisation de chaque méthode de paiement. Les données peuvent être filtrées sur différentes périodes : **Hier, 7 derniers jours, mois dernier, ou année en cours.** **Note** * La page Accueil est votre hub de pilotage quotidien. * Les données sont mises à jour en temps réel. * Des filtres dynamiques permettent une analyse rapide par période. * Toutes les sections incluent des représentations graphiques pour une meilleure lisibilité. # Page de Paiement Source: https://docs.fedapay.com/dashboard/fr/page-fr La **section Page de Paiement** permet de créer et de gérer des pages de paiement personnalisées pour vos produits, services ou dons. Chaque page créée contiendra des informations essentielles telles que le nom, le montant, le statut et la date de la collecte. ### Créer une Nouvelle Page de Paiement Pour ajouter une nouvelle page de paiement : 1-Cliquez sur “Ajouter une page”. 2-Remplissez les informations suivantes : * **Nom de la page** : Donnez un titre à votre page de paiement. * **Description** : Décrivez brièvement l’objet de la collecte. * **Image** : Ajoutez une image pour personnaliser la page (facultatif). 3-Choisissez l'option de collecte : * **Montant fixe** : Si vous souhaitez fixer un montant pour le paiement. * **Numéros de téléphone** : Si vous préférez recueillir des numéros de téléphone des payeurs. ![Formulaire de création de page de paiement](https://res.cloudinary.com/dvilp6td2/image/upload/v1731333724/Payment-page-creation_form_t7zilg.png) ### Options Avancées Pour personnaliser davantage votre page, vous avez accès à des **options avancées :** * **Lien personnalisé** : Créez un lien unique pour partager votre page de paiement. * **Message de paiement réussi** : Personnalisez le message qui apparaîtra après un paiement réussi. * **Lien de retour** : Fournissez un lien de retour vers votre site ou une page spécifique après le paiement. * **Informations supplémentaires** : Choisissez des informations supplémentaires à recueillir sur la page (par exemple, un code de réduction, une adresse, etc.). Personnalisez également le type de collecte en fonction de vos besoins, tels que : * **Créer votre propre modèle** : Pour un format personnalisé. * **Événements et billets** : Organiser des paiements pour des événements spécifiques. * **Accepter des dons** : Créer une page dédiée à la collecte de dons. * **Vente de produits et services** : Mettre en place une page pour la vente en ligne. ### Gestion des Pages de Paiement Une fois vos pages créées, vous pouvez facilement **trier** et **organiser** vos pages grâce à : * Le **bouton Filtrer** qui vous permet de trier les pages par **Nom, Description, ou Lien personnalisé.** **À retenir** * Créez des **pages de paiement personnalisées** pour gérer vos collectes. * Personnalisez chaque page avec des **options avancées** pour répondre à vos besoins. * Organisez et filtrez **vos pages de collecte** pour un suivi optimal. # Paiement : Programmer des Dépôts Source: https://docs.fedapay.com/dashboard/fr/payout-fr Avec FedaPay, vous pouvez non seulement recevoir des dépôts de vos clients, mais également en effectuer des dépôts vers ceux-ci depuis votre compte FedaPay. Ce service est conçu pour automatiser les opérations financières de votre entreprise, quelle que soit sa taille ou son secteur d'activité, qu'il s'agisse de régler des salariés, des fournisseurs ou des partenaires via des virements ponctuels ou programmés. ### Activer la fonctionnalité Payout sur votre compte FedaPay La fonctionnalité Payout vous permet d’effectuer des dépôts (versements) directement vers des comptes Mobile Money depuis votre solde FedaPay. **Comment activer Payout ?** Pour activer cette fonctionnalité, vous devez envoyer une demande par email à [support@fedapay.com](mailto:support@fedapay.com) incluant : 1- Les informations de votre compte FedaPay : * Nom du compte * Référence du compte * Adresse email associée 2- La raison pour laquelle vous souhaitez activer Payout (obligatoire). Notre équipe examinera votre demande et vous notifiera une fois l’activation effectuée. Pour plus de détails, vous pouvez consulter l’article de notre base de connaissances : [**Comment effectuer un dépôt (Payout) avec FedaPay**](https://support.fedapay.com/portal/fr/kb/articles/comment-effectuer-un-d%C3%A9p%C3%B4t-payout-avec-fedapay-20-3-2025) **Règles importantes à connaître** * Vous ne pouvez pas effectuer plus de 3 dépôts (Payouts) vers un même numéro Mobile Money en l’espace de 24 heures. * Le montant d’un dépôt ne peut pas excéder 1 000 000 XOF. **⚠️ Bonnes pratiques :** * Assurez-vous que le numéro Mobile Money destinataire est actif et valide avant d’initier un Payout. * Tenez compte des plafonds journaliers fixés par les opérateurs Mobile Money pour éviter tout rejet. ### Accéder à la Section Paiements Rendez-vous dans le menu Paiements de votre tableau de bord pour consulter la liste des transactions ordonnées avec vos fonds disponibles, le statut des différents dépôts, ainsi que les dates de dépôt et de création. ![Image de la section Paiements](https://res.cloudinary.com/dvilp6td2/image/upload/v1732298041/section-paiements-fr_uxbfbz.png) Vous pouvez utiliser des filtres pour trier et rechercher facilement les dépôts effectués ou planifiés. **Ajouter un Dépôt** Pour ordonner un dépôt, deux options s'offrent à vous : 1. **Paiement unique** * Cliquez sur **Ajouter un dépôt**. * Indiquez le **bénéficiaire** et le **montant** à transférer. * Validez en cliquant sur **Ajouter**. 2. **Paiement multiple** * Idéal pour gérer plusieurs dépôts vers un même destinataire ou différents destinataires, à la même date ou à des dates différentes. * Préparez un fichier CSV contenant les informations des dépôts, avec les colonnes suivantes : * Nom, prénom, e-mail, numéro de téléphone, montant. * Téléchargez un exemple de fichier [ici](https://dev-api.fedapay.com/assets/payouts_sample_fr.csv). * Une fois le fichier CSV rempli, cliquez sur **Importer un CSV** et sélectionnez votre fichier pour charger la liste des dépôts. ### Envoi de Dépôt Une fois les dépôts importés, ils apparaîtront avec le statut **En attente**. Utilisez les filtres pour afficher uniquement les dépôts en attente d'envoi. ***Options d'Envoi de Dépôt*** **Envoi unique** * Cliquez sur **Envoyer** à côté d'un dépôt spécifique. * Choisissez entre **Envoyer maintenant** ou **Programmer l'envoi** à une date et heure spécifiques. ![Image montrant les options d'envoi "Envoyer maintenant" et "Programmer l'envoi du paiement"](https://res.cloudinary.com/dvilp6td2/image/upload/v1732298046/programmer-payement-fr_gybmhk.png) **Envoi multiple** * Sélectionnez plusieurs dépôts en cochant les cases correspondantes ou cochez **Tout sélectionner** pour inclure tous les dépôts d'une page. * Cliquez sur **Envoyer** pour initier l'envoi des dépôts sélectionnés. **Vous aurez les options suivantes pour les dépôts sélectionnés :** * **Envoyer maintenant** : pour un envoi immédiat. * **Envoyer tous les paiements à une même date** : idéal pour organiser un versement global à une date précise. * **Envoyer tous les paiements à des dates différentes** : programmez chaque dépôt selon les dates assignées dans le fichier CSV. # Gestion du Profil et Sécurité Source: https://docs.fedapay.com/dashboard/fr/profile-fr Cette section vous permet de configurer votre compte utilisateur et de renforcer la sécurité de vos accès. Elle se divise en deux onglets principaux : **Profil** et **Activités de connexion**. ### Profil – Personnalisation et Sécurité du Compte Depuis votre interface, cliquez sur votre **nom ou avatar** en haut à droite de l’écran, puis sélectionnez **Paramètres**. Dans l’onglet **Profil**, vous pouvez : * Modifier vos **informations personnelles** : prénom, nom, langue d’affichage. * Changer votre **mot de passe**. * Activer la **vérification en deux étapes (2FA)** pour sécuriser vos connexions. **Astuce sécurité** : Activez 2FA pour recevoir un code de confirmation par SMS ou via une application (comme Google Authenticator). ### Activités de Connexion – Suivi des Accès au Compte L’onglet **Activités de connexion** vous donne un aperçu complet des dernières tentatives de connexion à votre compte. Pour chaque activité, vous verrez : * **Statut de la tentative** : ✅ Succès (vert) / ⚠️ Échec (jaune) * **Ville / Région / Pays** * **Date et heure** Vous pouvez affiner votre recherche avec les filtres intégrés : * **IP** * **Localisation** (ville, région, pays) **Bon à savoir** : En cas de tentative suspecte, changez immédiatement votre mot de passe et activez la 2FA si ce n’est pas encore fait. # Remboursements : Suivi et Filtrage Source: https://docs.fedapay.com/dashboard/fr/refunds-fr Dans la session **Remboursements**, retrouvez toutes les informations concernant vos remboursements, telles que : * **Montant remboursé** * **Bénéficiaire** * **Statut** * **Date de remboursement et Date de création** #### Comment initier un remboursement ? Pour effectuer un remboursement depuis votre tableau de bord FedaPay, suivez ces étapes : Si le statut est **Approuvé/transféré**, vous pouvez procéder au remboursement. * L'adresse e-mail du client * Une description du remboursement ***Note importante*** : Le remboursement est uniquement possible via **MTN Mobile Money**. Vous pouvez également filtrer vos remboursements selon vos besoins en cliquant sur **Filtrer**, en sélectionnant vos critères (ID, référence, montant, statut, numéro de paiement, etc.), puis en cliquant sur **Envoyer**. Il est aussi possible d’**exporter les données en CSV** pour des analyses ultérieures. # Retenues et Exports Source: https://docs.fedapay.com/dashboard/fr/retenue-fr ### Retenue – Gestion des Fonds Bloqués La section **Retenue** du tableau de bord permet de visualiser les transactions dont les fonds ont été temporairement bloqués à la suite d’une réclamation client (ex. : produit non reçu, service non conforme, etc.). **Détails affichés pour chaque retenue** : * **ID** : identifiant unique de la transaction concernée par la retenue. * **Montant** : somme bloquée suite à la plainte du client. * **Balance** : montant disponible restant sur le compte du marchand après application de la retenue. * **Date de création** : date à laquelle la retenue a été appliquée. La **retenue** est une mesure préventive de sécurité mise en place pour protéger les intérêts des clients. Elle est levée manuellement ou automatiquement après résolution du litige, conformément aux politiques de médiation de FedaPay. ### Exports – Historique des Fichiers de Transactions La section **Exports** vous permet d’accéder à l’historique des exports de transactions générés à partir de la section Transactions du tableau de bord. **Informations disponibles pour chaque export** : * **Nom** : nom attribué au fichier exporté (nom par défaut ou personnalisé). * **Progression** : état du fichier en % * **Date** : date et heure exactes de la demande d’export. **Téléchargement** : Une fois l'exportation finalisée, le fichier peut être téléchargé directement depuis cette section. Vous pouvez filtrer les exports par date et nom pour retrouver facilement un fichier spécifique. # Gestion des utilisateurs Source: https://docs.fedapay.com/dashboard/fr/user-fr Dans cette section, nous vous expliquons comment configurer et gérer les utilisateurs sur votre compte FedaPay. L'objectif est de vous permettre d'attribuer des rôles et des permissions spécifiques à vos collaborateurs pour sécuriser l'accès à votre compte et protéger vos données sensibles. Voici les étapes à suivre pour ajouter des utilisateurs, définir leurs rôles, et gérer leurs permissions. Pour commencer, accédez à votre tableau de bord FedaPay et dirigez-vous vers la section **Paramètres d’Entreprise>Équipe** Dans cette section, vous trouverez deux onglets : **Utilisateurs** et **'Invitations en attente'**. Dans la section **Équipe**, cliquez sur **Ajouter un utilisateur**. Vous pourrez alors inviter vos collaborateurs à rejoindre votre compte FedaPay. ![une image montrant la page Équipe dans le dashboard](https://res.cloudinary.com/dvilp6td2/image/upload/v1731370484/team-page-dashboard_kk1xcd.png) Chaque utilisateur doit avoir un rôle défini, en fonction de ses responsabilités. Voici les trois rôles disponibles, chacun avec des niveaux d'accès spécifiques : * **Analyste**: Ce rôle est destiné aux membres de l'équipe chargés de suivre les performances financières de votre business. Ils peuvent consulter les rapports et évaluer les transactions. * **Développeur** : Ce rôle est dédié aux membres techniques, tels que les programmeurs, responsables de l'intégration de l'API FedaPay ou de la configuration des paiements sur votre plateforme. * **Administrateur** : Ce rôle vous est attribué en tant que propriétaire du compte. L'administrateur a un accès complet pour gérer tous les aspects du compte. ![image montrant les différentes catégories d'utilisateurs](https://res.cloudinary.com/dvilp6td2/image/upload/v1731370484/different-user-categories_stuudl.png) Entrez l’adresse e-mail du collaborateur que vous souhaitez ajouter à votre équipe, sélectionnez son rôle, puis cliquez sur **"Inviter"**. ![une image montrant l'invitation d'un utilisateur](https://res.cloudinary.com/dvilp6td2/image/upload/v1731370484/user-invitation_pc3vcg.png) Vous pouvez suivre les invitations en attente dans la section **Invitations en attente**. Une fois qu’un collaborateur accepte votre invitation, il apparaîtra dans la liste des utilisateurs dans la section **Équipe**. ![une image montrant la page d'invitation avec les collaborateurs en instance](https://res.cloudinary.com/dvilp6td2/image/upload/v1731370483/invitation-page_kjxjft.png) Avec cette gestion des rôles et permissions, vous pouvez facilement attribuer des accès sécurisés à vos collaborateurs et protéger les données sensibles de votre entreprise. # Gestion des clés API FedaPay Source: https://docs.fedapay.com/integration-api/fr/api-manage-fr Les clés API FedaPay sont des identifiants sensibles qui permettent d’accéder à votre compte et d’effectuer des opérations critiques (création de transactions, paiements, remboursements, payouts, etc.).À ce titre, elles doivent être protégées avec le même niveau d’exigence qu’un mot de passe administrateur.Une mauvaise gestion de vos clés API peut exposer votre entreprise à des risques majeurs : paiements frauduleux, fuite de données, pertes financières ou non-conformité réglementaire. **Comprendre les risques liés aux clés API** * Les clés publiques peuvent être utilisées côté client (front-end) et ne permettent que des actions limitées. * Les clés secrètes, en revanche, donnent un accès complet à l’API FedaPay.Toute personne disposant de cette clé peut agir au nom de votre compte. **FedaPay ne vous demandera jamais votre clé API secrète, que ce soit par e-mail, téléphone ou support client.** ## Bonnes pratiques pour protéger vos clés API secrètes **1. Stockez vos clés dans un environnement sécurisé** Les clés API secrètes doivent être stockées exclusivement dans : * des variables d’environnement ; * des services de gestion de secrets (Key Management System – KMS, vaults, secrets managers, etc.). Évitez absolument : * de les enregistrer en clair dans votre code source ; * de les placer dans des fichiers locaux non sécurisés ; * de les copier dans des outils collaboratifs non chiffrés. Une fois générée, votre clé doit être immédiatement stockée de manière sécurisée et ne plus être exposée. **2. Limitez strictement l’accès aux clés** L’accès aux clés API secrètes doit être : * réservé uniquement aux personnes et systèmes qui en ont réellement besoin ; * encadré par une politique interne claire (qui peut créer, consulter ou remplacer une clé). Nous recommandons de : * revoir régulièrement les accès ; * retirer les permissions inutiles ; * auditer les usages internes en cas de doute. **3. Ne partagez jamais vos clés de manière non sécurisée** Ne partagez jamais vos clés API secrètes : * par e-mail ; * via des applications de messagerie instantanée ; * dans des tickets de support ou captures d’écran. Toute demande de clé API est un signal d’alerte potentiel. **4. N’enregistrez jamais vos clés dans des dépôts de code** Les dépôts Git (publics ou privés) sont une source fréquente de fuite de clés. Même un dépôt privé peut être exposé : * via les machines des développeurs ; * par des outils tiers compromis ; * ou par des erreurs de configuration. Utilisez toujours des variables d’environnement et des fichiers ignorés par le versionnement (.env, secrets, etc.). **5. N’intégrez jamais de clés secrètes dans des applications clientes** Les clés API secrètes ne doivent jamais être intégrées dans : * des applications mobiles ; * du JavaScript côté navigateur ; * des SDK distribués à des tiers. Pour les usages côté client, utilisez exclusivement : * les clés publiques prévues à cet effet ; * ou des endpoints serveur intermédiaires sécurisés. **6. Renouvelez régulièrement vos clés API** La rotation des clés est une bonne pratique essentielle.Nous vous recommandons de : * renouveler vos clés périodiquement, même sans incident ; * mettre en place un processus clair de remplacement (ancienne → nouvelle clé). Cela permet : * d’identifier précisément où vos clés sont utilisées ; * de réagir rapidement en cas de compromission ; * de réduire l’impact d’un accès non autorisé. **7. Surveillez les usages et comportements anormaux** Surveillez régulièrement : * les requêtes API effectuées avec vos clés ; * l’utilisation des clés live dans des contextes inattendus (ex. environnement de test). Assurez-vous notamment que : * les clés sandbox sont utilisées uniquement en environnement de test ; * les clés live ne sont pas exposées inutilement. **8. Réagir en cas de clé API compromise** Si vous pensez qu’une clé API a été exposée (publication accidentelle, fuite de code, activité suspecte) : * Régénérez immédiatement la clé concernée depuis votre tableau de bord FedaPay. * Remplacez la clé dans toutes vos intégrations. * Désactivez l’ancienne clé dès que la nouvelle est opérationnelle. * Analysez la cause de l’incident pour éviter qu’il ne se reproduise. En cas de doute, il est toujours préférable de procéder à une rotation proactive des clés. ## Maintenir un haut niveau de sécurité dans le temps La sécurité des clés API n’est pas une action ponctuelle, mais un processus continu. Nous vous recommandons de : * maintenir une documentation interne à jour ; * former régulièrement vos équipes techniques ; * revoir vos pratiques à chaque évolution de votre intégration. ## À retenir Les clés API secrètes donnent un accès total à votre compte FedaPay. Toute exposition peut entraîner des conséquences financières et réglementaires. Une bonne gestion des clés protège à la fois votre entreprise et vos clients. # Authentification Source: https://docs.fedapay.com/integration-api/fr/authentication-fr L'API de FedaPay vous permet d'intégrer facilement des solutions de paiement sur votre site web ou application. Elle vous offre des outils puissants pour gérer les transactions, suivre les paiements et interagir avec les clients de manière fluide et sécurisée, que vous soyez développeur ou chef d'entreprise. Pour vous aider à profiter pleinement de nos services, l'intégration de FedaPay dans votre plateforme se déroule en trois étapes principales : 1. **Obtenez vos clés API** pour authentifier vos requêtes. 2. **Installez une librairie API** pour interagir avec FedaPay. 3. **Effectuez un test de requête API** pour valider l'intégration. ## Aperçu de l'API FedaPay La solution de FedaPay vous permet de : * **Créer des transactions** : gérez vos paiements et suivez leur statut. * **Administrer les clients** : enregistrez les informations de vos clients pour des paiements récurrents ou des suivis faciles. * **Configurer des notifications** : recevez des alertes en temps réel sur les changements d'état des transactions. L'API de FedaPay prend en charge deux modes de collecte distincts : * **Mode test** : pour simuler des transactions et tester votre intégration sans effectuer de paiements réels. * **Mode live** : une fois votre intégration validée, vous pouvez passer en production pour gérer de véritables transactions. Les objets créés en mode test (clients, transactions) sont totalement distincts de ceux créés en mode live. Il n'y a donc pas de risque de mélanger les données des deux environnements. #### Voici les étapes à suivre pour intégrer FedaPay à votre application et commencer à effectuer des opérations en toute sécurité : Chaque compte FedaPay est associé à deux clés API : * **Clé de test** : pour effectuer des requêtes en mode test. * **Clé live** : pour gérer les transactions réelles. Ces clés sont essentielles pour que FedaPay authentifie vos requêtes. Sans clé ou avec une clé incorrecte, vos requêtes échoueront. Vous pouvez récupérer vos clés API depuis le **tableau de bord** de votre compte FedaPay. Une fois que vous avez obtenu vos clés et installé la librairie, il est temps d’effectuer un test pour valider votre intégration. Voici un exemple de requête pour créer une opération de collecte de test au niveau de [L'API Reference](/api-reference/transactions/create) FedaPay répondra avec un objet transaction contenant les détails de l'opération. ## Guide rapide d'intégration 1. **Créer un compte** sur FedaPay (test ou live). 2. **Obtenez vos clés API** depuis votre tableau de bord. 3. **Installez la librairie** correspondant à votre environnement de développement (PHP, Node.js, etc.). 4. **Effectuez une première requête** pour créer une transaction test et vérifier que tout fonctionne. ## Authentification de l’ API de FedaPay L'authentification via l'API de FedaPay est une étape clé pour assurer la sécurité et l'intégrité de vos requêtes lors de l'interaction avec notre plateforme. Chaque requête envoyée à FedaPay doit être authentifiée avec vos clés API. Cela permet à FedaPay de vérifier que les requêtes proviennent d'une source autorisée. #### Clés API : Types et Fonctionnement Chaque compte FedaPay est fourni avec deux modes de clés API : 1. **Clés de test** : Utilisées dans les environnements de développement pour simuler des transactions sans répercussions financières. Elles vous permettent de vérifier que votre intégration fonctionne correctement. 2. **Clés en live** : Utilisées dans l'environnement de production pour gérer les transactions réelles. Il est essentiel de ne pas mélanger ces deux modes de clés (clés de test et clés en live). Les objets (comme les collectes et les clients) créés en mode test ne peuvent pas être manipulés en mode live, et vice-versa. En outre, il existe deux types de clés API dans chaque mode : * **Clé publique** : Utilisée pour identifier votre compte FedaPay dans des environnements front-end (comme les applications mobiles ou les interfaces JavaScript). Elle ne donne pas accès à des actions critiques, mais permet de créer des tokens. * **Clé secrète** : Doit rester confidentielle. Cette clé donne accès à toutes les fonctionnalités de l'API et permet d'exécuter des actions sensibles comme la création de transactions ou l'émission de remboursements. Assurez-vous de ne jamais exposer cette clé dans des environnements publics. #### Obtenir vos Clés API Vos clés API sont accessibles depuis votre tableau de bord FedaPay : * Pour les tests, utilisez uniquement les **clés de test**. Cela permet de sécuriser vos clients réels en évitant toute modification accidentelle de leurs données pendant vos phases de développement. * En production, passez aux **clés en live** une fois votre intégration validée. #### Sécurisation des Clés API La sécurité des clés API est primordiale pour protéger vos transactions et les informations de vos clients. Voici quelques bonnes pratiques à suivre : * **Confidentialité des clés secrètes** : Ne partagez jamais vos clés secrètes et limitez leur accès uniquement aux systèmes et aux utilisateurs qui en ont besoin. * **Stockage sécurisé** : Assurez-vous que vos clés API ne sont jamais incluses dans des systèmes de contrôle de version (comme Git), ou dans des fichiers qui pourraient être accessibles publiquement. * **Régénération des clés** : Si vous soupçonnez qu'une de vos clés API a été compromise, régénérez-la immédiatement depuis le tableau de bord FedaPay. La clé compromise sera rendue inutilisable, et une nouvelle sera générée. # Gestion des collectes Source: https://docs.fedapay.com/integration-api/fr/collects-management-fr L'API de FedaPay permet d’intégrer facilement des solutions de paiement sécurisées dans votre site web ou application. Ce guide vous expliquera en détail comment configurer et gérer la collecte de paiements à l’aide de l’API, de la création initiale à la finalisation du processus, en passant par les fonctionnalités avancées comme les paiements sans redirection. Que vous soyez développeur ou responsable de produits, vous trouverez ici tout le nécessaire pour utiliser FedaPay de manière optimale. ### Étapes pour Créer et Gérer une Collecte de Paiement Les étapes de configuration d’une collecte se divisent en plusieurs processus essentiels. La première étape consiste à envoyer une requête de création de collecte via l’API. Cette requête nécessite certains paramètres obligatoires : * **description** : une brève description de l’objet de la collecte * **amount** : le montant, toujours en nombre entier * **currency** : la devise, indiquée par son numéro ou code ISO (référez-vous au Tableau des Devises FedaPay pour les détails) * **callback\_url** : un lien de retour facultatif pour rediriger le client après le paiement * **customer** : le client concerné par la collecte Si le client n’est pas encore enregistré dans votre système, vous pouvez créer simultanément son profil en ajoutant des informations comme le nom, prénom, email, et numéro de téléphone. #### Exemple de requête pour créer une collecte ```java Curl highlight={10,19} theme={null} curl -X POST \ https://sandbox-api.fedapay.com/v1/transactions \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "description" : "Transaction for john.doe@example.com", "amount" : 2000, "currency" : {"iso" : "XOF"}, "callback_url" : "https://maplateforme.com/callback", // Si le client n'existe pas encore "customer" : { "firstname" : "John", "lastname" : "Doe", "email" : "john.doe@example.com", "phone_number" : { "number" : "+22997808080", "country" : "bj" } //Si le client existe déjà "customer": { id: 1 } } }' ``` ```javascript NodeJs highlight={9,18} theme={null} const { FedaPay, Transaction } = require('fedapay'); FedaPay.setApiKey('YOUR_SECRET_API_KEY'); FedaPay.setEnvironment('sandbox'); const transaction = await Transaction.create({ description: 'Payment for order #1234', amount: 1000, currency: { iso: 'XOF' }, callback_url: 'https://example.com/callback', // Si le client n'existe pas encore customer : { firstname : "John", lastname : "Doe", email : "john.doe@example.com", phone_number : { number : "+22997808080", country : "bj" } //Si le client existe déjà customer: { id: 1 } }); ``` ```php PHP highlight={8,18} theme={null} \FedaPay\Fedapay::setApiKey('YOUR_API_KEY'); \FedaPay\Fedapay::setEnvironment('sandbox'); $transaction = \FedaPay\Transaction::create([ 'description' => 'Payment for order #1234', 'amount' => 1000, 'currency' => ['iso' => 'XOF'], 'callback_url' => 'https://example.com/callback', // Si le client n'existe pas encore 'customer' => [ 'firstname' => 'John', 'lastname' => 'Doe', 'email' => 'john.doe@example.com', 'phone_number' => [ 'number' => '+22997808080', 'country' => 'bj' ] ] //Si le client existe déjà 'customer' => ['id' => 1] ]); ``` ```Ruby Ruby highlight={9,19} theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' transaction = FedaPay::Transaction.create( description: 'Payment for order #1234', amount: 1000, currency: { iso: 'XOF' }, callback_url: 'https://example.com/callback', #Si le client n'existe pas encore : customer: { firstname: 'John', lastname: 'Doe', email: 'john.doe@example.com', phone_number: { number: '+22997808080', country: 'bj' } } #Si le client existe déjà customer: { id: 1 }, ) puts "Transaction successfully created : #{transaction.inspect}" ``` [Retrouvez plus d’informations dans notre Reference API](/api-reference/transactions/create) Remplacez **YOUR\_SECRETE\_API\_KEY** par votre clé API et utilisez l’URL du serveur approprié (**sandbox** ou **live**). Si le client est déjà enregistré, utilisez simplement son ID ou email pour l’associer à la collecte. **Attention :** Le paramètre **customer** n’est pas obligatoire. Cependant, lorsque vous créer une transaction avec un customer, assurez-vous que l’adresse email est unique. En effet, FedaPay considère qu’il s’agit du meme customer si les emails sont identique. Si vous envoyer la meme adresse email et que vous renseignez des nom, prénom et numéros de téléphone différents, FedaPay mettra simplement à jour le customer avec les nouvelles informations. Une fois la requête envoyée, l'API renvoie un identifiant unique pour la collecte. Utilisez cet identifiant pour demander un lien et un token de paiement pour rediriger le client vers la page de paiement sécurisée. ```java cURL theme={null} curl -X POST \ https://sandbox-api.fedapay.com/v1/transactions/ID/token \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' ``` ```javaScript NodeJS theme={null} const transaction = await Transaction.create({...}) const token = await transaction.generateToken(); return redirect(token.url); ``` ```PHP PHP theme={null} $transaction = \FedaPay\Transaction::create(array(...)) $token = $transaction->generateToken(); return header('Location: ' . $token->url); ``` ```Ruby Ruby theme={null} require 'fedapay' # Configure FedaPay API credentials FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' # Créer une transaction transaction = FedaPay::Transaction.create( amount: 1000, currency: { iso: 'XOF' }, customer: { id: 1 }, description: 'Payment for order #1234', callback_url: 'https://example.com/callback' ) puts "Transaction successfully created: #{transaction.id}" # Générer un token de paiement token = transaction.generate_token #Afficher le lien sécurisé de paiement puts "Redirect user to: #{token.url}" ``` Le lien ainsi généré peut être utilisé pour rediriger les utilisateurs vers la page de paiement de FedaPay. Ce lien redirige votre client vers une page de paiement sécurisée, où il pourra finaliser la collecte. Si vous avez spécifié un **callback\_url**, votre client sera redirigé automatiquement à l’issue du paiement. Le **callback\_url** permet de rediriger le client vers une page spécifique à la fin du paiement, avec le statut et l'ID de la collecte en paramètres. Par exemple : * **Paiement approuvé** : `https://www.monsite.com/?id=258&status=approved` * **Paiement annulé** : `https://www.monsite.com/?id=259&status=canceled` **Attention** : Pour des raisons de sécurité, ne vous fiez pas au statut renvoyé par l'URL. Effectuez toujours une vérification directe auprès de l’API pour obtenir le statut réel. Pour récupérer les informations complètes d’une collecte, effectuez une requête avec l'ID de cette collecte. #### Exemple de requête pour récupérer les détails d’une collecte ```java cURL theme={null} /*Remplacez YOUR_SECRETE_API_KEY par la clé API secrète de votre compte sandbox ou live. Si vous utilisez votre compte live, vous devez remplacer le lien par https://api.fedapay.com/v1/transactions/ID */ curl -X GET \ https://sandbox-api.fedapay.com/v1/transactions/ID \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' ``` ```javascript NodeJs theme={null} const { FedaPay, Transaction } = require('fedapay'); /* Remplacez YOUR_SECRETE_API_KEY par votre véritable clé API */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Indiquez si vous souhaitez exécuter votre requête en mode test ou en mode live */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Afficher les clients */ const transaction = await Transaction.retrieve(ID, params = {}, headers = {}); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); $customer = \FedaPay\Transaction::retrieve(ID, params = {}, header = {}); ``` ```Ruby Ruby theme={null} require 'fedapay'; # configurer la bibliothèque FedaPay FedaPay.api_key = '' # Votre clé API secrète FedaPay.environment = '' # sandbox or live transactions = FedaPay::Transaction.retrieve(ID); ``` [Retrouvez plus d’informations dans notre Reference API](/api-reference/transactions/get-by-id) ### Paiements sans Redirection Pour offrir une expérience fluide sans redirection, vous pouvez intégrer directement le formulaire de paiement dans votre application pour certaines méthodes spécifiques (MTN Bénin, Moov Bénin, Moov Togo, et MTN Côte d’Ivoire). Ce mode de paiement est particulièrement utile pour les sites e-commerce qui souhaitent garder l'utilisateur sur leur plateforme tout au long du processus, sans redirection vers une autre page. **Envoi d’un Paiement Mobile Sans Redirection** Le processus de paiement mobile sans redirection se divise en deux étapes principales dans l'environnement **Live** ou **Sandbox** : La première étape consiste à créer une collecte via l'API de FedaPay. Cela génère un **token** qui est nécessaire pour effectuer la transaction. Une fois que vous avez le token de paiement, vous devez envoyer une requête à l'API FedaPay pour traiter le paiement. La requête se fait en utilisant une des [méthodes de paiement](/payment-methods/fr/payment-methods-fr) spécifiques ***Voici un exemple de code pour envoyer un paiement mobile sans redirection*** ```java curl theme={null} curl -X POST \ https://sandbox-api.fedapay.com/v1/METHODE_PAIEMENT \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' -d '{ "token" : "TOKEN_DE_PAIEMENT", "phone_number" = { "number": "64000001", "country":"bj" } }' ``` ```javascript Node.js theme={null} const { FedaPay, Transaction } = require('fedapay'); /* Configure your API key and environment */ FedaPay.setApiKey('YOUR_SECRET_API_KEY'); FedaPay.setEnvironment('sandbox'); // or 'live' /* Create a transaction */ const transaction = await Transaction.create({ description: 'Payment for order #5678', amount: 1000, currency: { iso: 'XOF' }, callback_url: 'https://example.com/callback', customer: { id: 1 } }); console.log('Transaction created:', transaction.id); /* Generate a payment token */ const token = transaction.generateToken().token; /* Define payment method */ const mode = 'mtn'; // or 'moov', 'mtn_ci', 'moov_tg' /* Optional phone number for the transaction */ const phone_number = { number: '64000001', country: 'bj' }; /* Trigger payment using the token */ await transaction.sendNowWithToken(mode, token, phone_number); console.log(`Payment initiated via ${mode} for transaction ${transaction.id}`); /* Or trigger the payment in one step */ await transaction.sendNow(mode, phone_number); ``` ```php PHP theme={null} // Configure your API key and environment \FedaPay\FedaPay::setApiKey('YOUR_SECRET_API_KEY'); \FedaPay\FedaPay::setEnvironment('sandbox'); // or 'live' // Create a transaction $transaction = \FedaPay\Transaction::create([ "description" => "Payment for order #5678", "amount" => 1000, "currency" => ["iso" => "XOF"], "callback_url" => "https://example.com/callback", "customer" => ["id" => 1] ]); // Generate a payment token $token = $transaction->generateToken()->token; // Définir la méthode de paiement $mode = 'METHODE_PAIEMENT'; // 'mtn', 'moov', 'mtn_ci', 'moov_tg' // (Optional) Phone number linked to payment $phone_number = [ "number" => "64000001", "country" => "bj" ]; // Trigger payment with token $transaction->sendNowWithToken($mode, $token, $phone_number); // Or, trigger the payment in one step $transaction->sendNow($mode, $phone_number); ``` ```Ruby Ruby theme={null} require 'fedapay' # Configure FedaPay API credentials FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' # Create a transaction transaction = FedaPay::Transaction.create( amount: 1000, currency: { iso: 'XOF' }, customer: { id: 1 }, description: 'Payment for order #5678', callback_url: 'https://example.com/callback' ) puts "Transaction created: #{transaction.id}" # Generate a payment token token_data = transaction.generate_token token = token_data.token # Define the payment method mode = 'mtn' # or 'moov', 'mtn_ci', 'moov_tg' # (Optional) Phone number for the payment phone_number = { number: '64000001', country: 'BJ' } # Trigger immediate payment with the token transaction.send_now_with_token(mode, token, phone_number) puts "Payment initiated via #{mode} for transaction #{transaction.id}" # Or trigger the payment in one step transaction.send_now(mode, phone_number) ``` **Attention :** Remplacez **METHODE\_PAIEMENT** par la [méthode de paiement](https://docs.fedapay.com/payment-methods/fr/payment-methods-fr#modes-de-paiement-disponibles-sans-redirection) choisie (par exemple **mtn\_open**, **moov**, etc.). **VOTRE\_CLE\_API\_SECRETE** doit être remplacée par votre clé API secrète (en mode **sandbox** pour les tests ou en mode **live** pour les transactions en production). Lorsque vous êtes prêt à passer en production, remplacez l'URL de **sandbox** par l'URL en mode **Live** : * **Sandbox** : `https://sandbox-api.fedapay.com` * **Live** : `https://api.fedapay.com/v1/transactions/ID` ***Important** : Veillez à tester minutieusement vos intégrations dans l'environnement **sandbox** avant de les déployer en production* **Attention :** Le paramètre ***phone\_number*** n’est pas obligatoire pour la requête d’envoie de notification de paiement. Cependant, s’il n’est pas mentionné, FedaPay essaiera d’envoyer la notification au numéro lié au client associé à la transaction lors de sa création. **Remarque** : Le paiement sans redirection ne prend pas en charge tous les opérateurs. Consulter la section [Méthodes de Paiement](/payment-methods/fr/payment-methods-fr) pour en savoir un peu plus. ### Récupération Automatique du Statut d’une Collecte Pour vérifier le statut final d’une collecte, surtout lors d’un paiement sans redirection : * Envoyez une requête pour obtenir les détails de la collecte. * **Implémentez un webhook** pour recevoir des notifications automatiques. [Consultez la section Webhooks pour plus de détails](/integration-api/fr/webhooks-fr). ### Cycle de Vie d’une Collecte : Les Statuts ![Cycle de vie d'une collecte sur FedaPay](https://res.cloudinary.com/dvilp6td2/image/upload/v1773402181/Cycle_vie_statut_fedapay_french28_r6ryzl.jpg) Le diagramme ci-dessus illustre le cycle de vie complet d'une Collecte, de sa création jusqu'à son statut final. Chaque collecte passe par différents statuts : * **pending** : En attente (statut par défaut à la création) * **approved** : Approuvée (paiement réussi) * **declined** : Déclinée (interruption volontaire ou accidentelle par le client) * **canceled** : Annulée (solde insuffisant ou autre problème de paiement) * **refunded** : Remboursée (somme reversée au client) * **transferred** : Transférée (montant transféré sur le compte marchand) * **expired** : la collecte n’a pas été finalisée dans le délai imparti Les statuts **canceled** et **declined** ne sont pas des statuts finaux une nouvelle tentative de paiement peut être relancée. Une collecte **pending** non finalisée expire automatiquement après 24 heures. Un remboursement peut être initié depuis **approved** ou **transferred** via une tentative de remboursement. Pour consulter le statut en temps réel, rendez-vous dans le tableau de bord FedaPay sous la section **Collectes** ou utilisez l’API pour vérifier avec l'ID de la collecte. ### Ajouter des données personnalisées à vos transactions : merchant\_reference et custom\_metadata Lorsque vous créez une transaction via l’API de FedaPay, il est souvent nécessaire d’y associer des informations propres à votre application. Cela vous permet de mieux suivre, analyser ou relier une transaction à un utilisateur ou une commande spécifique sur votre plateforme. FedaPay vous offre deux champs très utiles pour cela : **merchant\_reference** et **custom\_metadata**. **merchant\_reference : Votre identifiant unique pour chaque transaction** Le champ **merchant\_reference** vous permet d’attribuer à chaque transaction un identifiant unique défini par vous-même (par exemple : un ID de commande, un numéro de facture ou le code d’une session d’achat). Cet identifiant est stocké par FedaPay et peut ensuite être utilisé pour retrouver facilement la transaction via une API dédiée. **Pourquoi l’utiliser ?** * Vous avez une plateforme e-commerce ou une application mobile et souhaitez lier une transaction FedaPay à un paiement interne. * Vous souhaitez retrouver rapidement une transaction en utilisant vos propres références, sans avoir à stocker l’ID généré par FedaPay. * Vous voulez tracer plus facilement les paiements effectués par vos clients. **Exemple : Créer une transaction avec merchant\_reference** ```java Curl theme={null} curl -X POST \ https://sandbox-api.fedapay.com/v1/transactions \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "description" : "Transaction for john.doe@example.com", "amount" : 2000, "currency" : {"iso" : "XOF"}, "callback_url" : "https://maplateforme.com/callback", "customer" : { "email" : "john.doe@example.com", }, "merchant_reference": "CMD-20250701-001" }' ``` ```javascript NodeJs theme={null} const { FedaPay, Transaction } = require('fedapay'); // Configurer la clé API et l'environnement FedaPay.setApiKey('YOUR_SECRET_API_KEY'); FedaPay.setEnvironment('sandbox'); // ou 'live' // Créer une transaction avec merchant_reference et custom_metadata const transaction = await Transaction.create({ description: 'Transaction for john.doe@example.com', amount: 2000, currency: { iso: 'XOF' }, callback_url: 'https://maplateforme.com/callback', customer: { email: 'john.doe@example.com' }, merchant_reference: 'CMD-20250701-001', custom_metadata: { order_type: 'online', promo_code: 'SUMMER2025' } }); console.log('Transaction created:', transaction.id); ``` ```php PHP theme={null} $transaction = \FedaPay\Transaction::create([ "description" => "Transaction for john.doe@example.com", "amount" => 2000, "currency" => ["iso" => "XOF"], "callback_url" => "https://maplateforme.com/callback", "customer" => [ "email" => "john.doe@example.com" ], "merchant_reference" => "CMD-20250701-001", "custom_metadata" => [ "order_type" => "online", "promo_code" => "SUMMER2025" ] ]); echo "Transaction created: " . $transaction->id; ``` ```Ruby Ruby theme={null} require 'fedapay' # Configurer la clé API et l'environnement FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # ou 'live' # Créer une transaction avec merchant_reference et custom_metadata transaction = FedaPay::Transaction.create( description: 'Transaction for john.doe@example.com', amount: 2000, currency: { iso: 'XOF' }, callback_url: 'https://maplateforme.com/callback', customer: { email: 'john.doe@example.com' }, merchant_reference: 'CMD-20250701-001', custom_metadata: { order_type: 'online', promo_code: 'SUMMER2025' } ) puts "Transaction created: #{transaction.id}" ``` Dans cet exemple, CMD-20250701-001 est la référence propre au marchand pour cette commande. **Récupérer une transaction avec la référence marchand** ```java Curl theme={null} curl -X GET \ https://sandbox-api.fedapay.com/v1/transactions/merchant/{reference} \ -H 'Authorization: Bearer VOTRE_CLE_API_SECRETE' \ -H 'Content-Type: application/json' ``` ```javascript NodeJs theme={null} const { FedaPay, Transaction } = require('fedapay'); /* Replace YOUR_SECRET_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRET_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); // or 'live' /* Merchant reference to search */ const reference = 'CMD-20250701-001'; /* Retrieve transaction by merchant reference */ const transaction = await Transaction.retrieveByMerchantReference(reference); console.log("Transaction found:", transaction.id); ``` ```php PHP theme={null} $merchant_reference = 'CMD-20250701-001'; $transaction = \FedaPay\Transaction::retrieveByMerchantReference($merchant_reference); echo "Transaction found: " . $transaction->id; ``` ```Ruby Ruby theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' reference = 'CMD-20250701-001' transaction = FedaPay::Transaction.retrieve_by_merchant_reference(reference) puts "Transaction found: #{transaction.id}" ``` **custom\_metadata : Ajouter des données personnalisées à vos transactions** Avec le champ **custom\_metadata**, vous pouvez enregistrer des informations supplémentaires directement dans la transaction. Il peut s’agir, par exemple : * Le numéro de la commande * Du type de service acheté * De l’identifiant de l’agent vendeur * Ou toute autre donnée utile pour vous. Ces données sont stockées sous forme de paires clé-valeur et restent attachées à la transaction, sans affecter son traitement. **Pourquoi l’utiliser ?** * Pour enrichir vos rapports internes ou automatiser certains traitements en récupérant vos propres données. * Pour éviter de stocker des informations sensibles côté client. * Pour gagner du temps lors du rapprochement comptable ou des vérifications manuelles. **Exemple : Créer une transaction avec custom\_metadata** ```java Curl theme={null} curl -X POST https://sandbox-api.fedapay.com/v1/transactions \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "description": "Abonnement premium", "amount": 10000, "currency": {"iso": "XOF"}, "callback_url": "https://votreapp.com/callback", "customer": { "email": "utilisateur@votreapp.com" }, "custom_metadata": { "client_id": "USER-14567", "forfait": "premium", "langue": "fr" } }' ``` ```javascript NodeJs theme={null} const { FedaPay, Transaction } = require('fedapay'); /* Replace YOUR_SECRET_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRET_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); // or 'live' /* Create a transaction with custom_metadata */ const transaction = await Transaction.create({ description: "Abonnement premium", amount: 10000, currency: { iso: "XOF" }, callback_url: "https://votreapp.com/callback", customer: { email: "utilisateur@votreapp.com" }, custom_metadata: { client_id: "USER-14567", forfait: "premium", langue: "fr" } }); console.log("Transaction created:", transaction.id); ``` ```php PHP theme={null} // Configurer la clé API et l'environnement \FedaPay\FedaPay::setApiKey('YOUR_SECRET_API_KEY'); \FedaPay\FedaPay::setEnvironment('sandbox'); // ou 'live' // Créer une transaction avec custom_metadata $transaction = \FedaPay\Transaction::create([ "description" => "Abonnement premium", "amount" => 10000, "currency" => ["iso" => "XOF"], "callback_url" => "https://votreapp.com/callback", "customer" => [ "email" => "utilisateur@votreapp.com" ], "custom_metadata" => [ "client_id" => "USER-14567", "forfait" => "premium", "langue" => "fr" ] ]); echo "Transaction created: " . $transaction->id; ``` ```Ruby Ruby theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' transaction = FedaPay::Transaction.create( description: 'Abonnement premium', amount: 10000, currency: { iso: 'XOF' }, callback_url: 'https://votreapp.com/callback', customer: { email: 'utilisateur@votreapp.com' }, custom_metadata: { client_id: 'USER-14567', forfait: 'premium', langue: 'fr' } ) puts "Transaction created: #{transaction.id}" ``` **Bonnes pratiques** : * Assurez-vous que la valeur de merchant\_reference est unique pour chaque transaction. Si la valeur de l’identifiant existe déjà, la création de la transaction échouera. * Utilisez custom\_metadata uniquement pour des données non sensibles (évitez les mots de passe, données de carte, etc.). * Ces champs sont facultatifs, mais très utiles pour automatiser vos flux métier et faciliter l’intégration avec vos outils internes. # Gestion des clients Source: https://docs.fedapay.com/integration-api/fr/customer-management-fr La **gestion des clients** est une étape essentielle pour effectuer des transactions via la plateforme FedaPay. Chaque transaction est liée à un client, c’est pourquoi vous devez enregistrer et gérer vos clients dans le système avant de pouvoir initier une transaction. ## Création des clients La création d’un client dans FedaPay se fait via une requête API qui permet d'ajouter les informations nécessaires sur votre client. Ces données sont utilisées lors des transactions pour identifier clairement l'utilisateur. ### Paramètres nécessaires Lors de la création d’un client, vous devez fournir les informations suivantes : * **Prénom (firstname)** : le prénom du client. * **Nom (lastname)** : le nom de famille du client. * **Email (email)** : l’adresse email du client, qui servira pour toute communication et confirmation. * **Numéro de téléphone (phone\_number)** : facultatif, mais utile pour des transactions avec certains services (doit inclure l’indicatif du pays, ex. +229 pour le Bénin). Ces informations sont obligatoires à l'exception du numéro de téléphone, mais il est conseillé de les fournir pour améliorer le suivi des interactions avec le client et les paiements. **Exemple de requête API pour la création d’un client** Vous pouvez ajouter un nouveau client en envoyant une requête à l’API FedaPay. Voici des exemples dans différents langages de programmation : ```java Curl theme={null} curl --request POST \ --url https://sandbox-api.fedapay.com/v1/customers \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "email": "jsmith@example.com", "phone_number": { "number": 123, "country": "" }, "firstname": "", "lastname": "" }' ``` ```javascript NodeJs theme={null} const { FedaPay, Customer } = require('fedapay'); /* Replace YOUR_SECRETE_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Create customer */ const customer = await Customer.create({ firstname: 'John', lastname: 'Doe', email: 'john@doe.com', phone_number: { number: '90090909', country: 'BJ' } }); ``` ```Php PHP theme={null} /* Replace YOUR_SECRETE_API_KEY with your secret API key */ \FedaPay\FedaPay::setApiKey("YOUR_SECRETE_API_KEY"); /* Specify whether you want to run your query in test or live mode */ \FedaPay\FedaPay::setEnvironment('sandbox'); //or setEnvironment('live'); /* Create customer */ \FedaPay\Customer::create(array( "firstname" => "John", "lastname" => "Doe", "email" => "John.doe@gmail.com", "phone_number" => [ "number" => "+22966666600", "country" => 'bj' // 'bj' Benin code ] )); ``` ```ruby Ruby theme={null} require 'fedapay'; # configure FedaPay library FedaPay.api_key = '' # Your secret api key FedaPay.environment = '' # sandbox or live phone = { country: 'bj', number: '66000001' }; customer = FedaPay::Customer.create( firstname: 'firstname', lastname: 'lastname', email: 'email@test.com', phone_number: phone ); ``` ### Points importants * Assurez-vous de remplacer **YOUR\_SECRETE\_API\_KEY** par votre clé API secrète. * Le lien d'API peut changer selon l'environnement. Utilisez **[https://api.fedapay.com/v1/customers](https://api.fedapay.com/v1/customers)** pour l'environnement live. ## Suivi des transactions des clients Une fois vos clients créés, il est possible de contrôler leurs informations et d’effectuer des modifications ou des suppressions en fonction des besoins. ### Récupérer la liste des clients Vous pouvez obtenir la liste complète des clients enregistrés sur votre compte FedaPay en envoyant une simple requête à l’API. Cela permet d’avoir un aperçu de tous les clients disponibles, de consulter leurs détails et de suivre leurs transactions. **Exemple de requête pour récupérer les clients** ```java Curl theme={null} curl --request GET \ --url https://sandbox-api.fedapay.com/v1/customers/{id} \ --header 'Authorization: Bearer ' ``` ```javascript NodeJs theme={null} const { FedaPay, Customer } = require('fedapay'); /* Replace YOUR_SECRETE_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Show customers */ const customer = await Customer.all( params = {}, headers = {} ); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); /** * @var \FedaPay\FedaPayObject */ $response = \FedaPay\Customer::all(); $customers = $response->customers; $meta = $response->meta; ``` ```ruby Ruby theme={null} require 'fedapay'; # configure FedaPay library FedaPay.api_key = '' # Your secret api key FedaPay.environment = '' # sandbox or live customers = FedaPay::Customer.list; ``` ### Mise à jour des informations client Il peut arriver que vous ayez besoin de mettre à jour les informations d’un client (par exemple, une adresse email ou un numéro de téléphone incorrect). Pour ce faire, vous devez fournir l'identifiant du client et les nouvelles informations. **Exemple de mise à jour** ```java Curl theme={null} curl --request PUT \ --url https://sandbox-api.fedapay.com/v1/customers/{id} \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data '{ "email": "jsmith@example.com", "phone_number": { "number": 123, "country": "" }, "firstname": "", "lastname": "" }' ``` ```javascript NodeJs theme={null} const { FedaPay, Customer } = require('fedapay'); /* Replace YOUR_SECRETE_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Modify customer */ const customer = await Customer.update(ID, params = {}, headers = {}); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); $customer = \FedaPay\Customer::retrieve(ID); $customer->firstname = "Eric"; $customer->save(); // Or $customer = \FedaPay\Customer::update(ID, [ "firstname" => "Eric" ]); ``` ```ruby Ruby theme={null} require 'fedapay'; # configure FedaPay library FedaPay.api_key = '' # Your secret api key FedaPay.environment = '' # sandbox or live customer.firstname = 'My Firstname'; customer.save; # or use this method below customer.save fistname: 'My Firstname', lastname: 'My Lastname'; # Update a customer by id customer = FedaPay::Customer.update ID, email: 'myemail@test.com'; ``` ### Suppression d’un client Si un client n'est plus actif ou que vous souhaitez supprimer ses données de votre compte FedaPay, vous pouvez utiliser une requête API pour retirer ses informations. **Exemple de suppression** ```java Curl theme={null} curl --request DELETE \ --url https://sandbox-api.fedapay.com/v1/customers/{id} \ --header 'Authorization: Bearer ' ``` ```javascript NodeJs theme={null} const { FedaPay, Customer } = require('fedapay'); /* Replace YOUR_SECRETE_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Delete customer */ const customer = await Customer.delete(ID, params = {}, headers = {}); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); \FedaPay\Customer::delete(ID); ``` ```ruby Ruby theme={null} require 'fedapay'; # configure FedaPay library FedaPay.api_key = '' # Your secret api key FedaPay.environment = '' # sandbox or live customer.delete; ``` # Librairies de FedaPay : Installation et Configuration Source: https://docs.fedapay.com/integration-api/fr/librairies-fr FedaPay offre une suite de librairies pour plusieurs langages de programmation populaires, facilitant l’intégration des solutions de paiement pour différents types de projets. Ces librairies permettent d'optimiser les paiements et de simplifier la gestion des transactions dans vos applications. Voici un guide d’installation et d’utilisation des librairies de FedaPay. ## Choisissez votre langage de programmation/framework FedaPay propose des librairies dédiées pour les langages suivants, chaque librairie étant adaptée à des environnements spécifiques : * **PHP** : Parfait pour les applications back-end, et s'intègre facilement aux frameworks comme Laravel ou Symfony. * **Node.js** : Adapté aux applications côté serveur et aux API en JavaScript. * **Ruby** : Conçu pour les applications Ruby, notamment avec le framework Ruby on Rails. * **React.js** : Idéal pour les applications front-end interactives. * **Angular** : Recommandé pour les projets d’applications front-end robustes. **Conseil** : Assurez-vous de choisir la librairie qui correspond au langage de votre projet pour garantir une intégration optimale. ## Installation de la Librairie Chaque librairie de FedaPay s'installe via un gestionnaire de paquets standard pour le langage choisi. Voici un aperçu des commandes d’installation pour PHP et Node.js : ```Typescript NodeJs theme={null} npm install fedapay --save ``` ```Php PHP theme={null} composer require fedapay/fedapay-php ``` ```Ruby Ruby theme={null} $ gem install fedapay-ruby ``` ```Javascript ReactJs theme={null} npm install fedapay-reactjs --save ``` ```Angular Angular theme={null} npm install fedapay-angular --save ``` Pour les instructions complètes d'installation, consultez [les dépôts GitHub de chaque librairie FedaPay](https://github.com/fedapay). ## Utilisation des librairies avec les Clés API Après l'installation, configurez la librairie avec vos clés API, qui permettent d’authentifier vos requêtes. Vous pouvez obtenir ces clés dans le tableau de bord FedaPay. **Bonnes pratiques** : Utilisez des clés API distinctes pour les environnements de développement et de production. Cela garantit la sécurité de vos transactions et réduit le risque d’erreurs en production. ## Tester et Valider l'Intégration Après la configuration, réalisez des tests dans un environnement de développement pour valider l'intégration. Par exemple, testez la création de transactions ou la récupération d’informations clients. Ceci permet de vérifier que votre intégration est correcte avant le déploiement en production. **Astuce** : Testez toutes les fonctionnalités, et validez chaque étape pour éviter les erreurs. Pour des détails sur chaque fonction, consultez la [référence API FedaPay](/api-reference/introduction), où vous pouvez explorer les paramètres et la structure des réponses pour chaque requête. Vous y trouverez également un environnement de test intégré, vous permettant d'essayer directement les requêtes et de voir les résultats en temps réel. ## Librairies Disponibles pour FedaPay Pour intégrer facilement les solutions de paiement FedaPay dans vos applications, explorez nos [SDKs](/sdks/fr/overview-fr) disponibles pour divers langages et frameworks. Consultez la documentation complète pour chaque SDK sur la page SDKs dédiée pour plus d’informations # Gestion des dépôts Source: https://docs.fedapay.com/integration-api/fr/payouts-management-fr Un dépôt est une opération qui permet de transférer de l'argent directement à partir de votre balance vers le compte d'un client. Cette fonctionnalité est conçue pour les entreprises qui ont besoin de gérer des paiements vers des clients spécifiques. ### Étapes pour la Création d’un Dépôt La création d’un dépôt via l’API se déroule en plusieurs étapes. Chaque dépôt passe par différents processus qui doivent être respectés pour garantir le bon déroulement du transfert. Pour commencer, vous devez envoyer une requête de création de dépôt via notre API. Les informations essentielles à fournir lors de cette requête incluent : * **amount** : Le montant du dépôt, toujours indiqué en nombre entier. * **currency** : La devise à utiliser pour le dépôt. Vous pouvez indiquer le code ISO de la devise choisie (par exemple, XOF pour le franc CFA). * **customer** : Le client concerné par le dépôt. Si le client n'existe pas encore dans votre base de données, vous pouvez le créer en même temps que le dépôt en fournissant les informations suivantes : nom, prénom, adresse e-mail, et numéro de téléphone. * **description (optionnel)** :Champ libre permettant de décrire l’objet ou l’usage du dépôt.Ce champ peut notamment servir à : * préciser la nature de la transaction (ex. : aide familiale, paiement de service, achat de biens, etc.) ; * répondre aux exigences réglementaires, notamment celles de la BCEAO relatives à la justification de l’usage des fonds ; * faciliter le suivi, l’identification et l’analyse des transactions dans le dashboard et via l’API. Le champ description est facultatif côté API, afin de garantir la compatibilité avec les intégrations existantes. Toutefois, il peut être requis dans certaines interfaces du dashboard pour améliorer la traçabilité des opérations. #### Exemple de requête pour la création d’un dépôt ```java Curl theme={null} curl -X POST \ https://sandbox-api.fedapay.com/v1/payouts \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "amount" : 2000, "currency" : {"iso" : "XOF"}, "mode": "mtn_open" , "description" : "paiement de service", // Non obligatoire "customer" : { // obligatoire. "firstname" : "John", "lastname" : "Doe", "email" : "john.doe@example.com", "phone_number" : { "number" : "+22997808080", "country" : "bj" } } }' ``` ```javascript NodeJs theme={null} const { FedaPay, Payout } = require('fedapay'); FedaPay.setApiKey('YOUR_API_KEY'); FedaPay.setEnvironment('sandbox'); const payout = await Payout.create( { amount: 2000, currency: { iso: "XOF" }, mode: "mtn_open", // Non obligatoire. FedaPay détectera l'operateur sinon. description : "paiement de service", // Non obligatoire customer: { // obligatoire. firstname: "John", lastname: "Doe", email: "john.doe@example.com", phone_number: { number: "+22997808080", country: "bj", }, }, }); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); \FedaPay\Payout::create([ "amount" => 2000, "currency" => ["iso" => "XOF"], "mode" => "mtn_open", // Non obligatoire. FedaPay détectera l'operateur sinon. "description" => "paiement de service", // Non obligatoire "customer" => [ // Non obligatoire. "firstname" => "John", "lastname" => "Doe", "email" => "john.doe@example.com", "phone_number" => [ "number" => "+22997808080", "country" => "bj", ], ], ]); ``` ```Ruby Ruby theme={null} require 'fedapay'; FedaPay.api_key = ''; FedaPay.environment = 'sandbox'; currency = { iso: 'XOF' }; payout = FedaPay::Payout.create({ amount: 1000, currency: currency, mode: "mtn_open", // Non obligatoire. description: "paiement de service", // Non obligatoire customer: { // Non obligatoire. firstname: "John", lastname: "Doe", email: "john.doe@example.com", phone_number: { number: "+22997808080", country: "bj", }, }, }); ``` [Retrouvez plus d’informations dans notre Reference API](/api-reference/payouts/create) Un exemple de code est disponible pour simplifier la création d’un dépôt via l'API. Assurez-vous de remplacer **YOUR\_SECRETE\_API\_KEY** par votre clé privée sandbox ou live. **Attention :** Le paramètre **customer** n’est pas obligatoire. Cependant, lorsque vous créer une transaction avec un customer, assurez-vous que l’adresse email est unique. En effet, FedaPay considère qu’il s’agit du meme customer si les emails sont identique. Si vous envoyer la meme adresse email et que vous renseignez des nom, prénom et numéros de téléphone différents, FedaPay mettra simplement à jour le customer avec les nouvelles informations. Après avoir créé un dépôt, il sera marqué comme "en attente". Vous devez ensuite procéder à son envoi. Deux options s’offrent à vous : * Envoyer le dépôt immédiatement * Planifier l'envoi pour plus tard ```java Curl theme={null} curl -X PUT \ https://sandbox-api.fedapay.com/v1/payouts/start \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' -d '{ "payouts" : [ { "id": 23 }, // Envoie le dépôt instantanément { "id": 23, "phone_number": { "number": "66000001", "country": "BJ" } }, // Envoie le dépôt instantanément avec numéro de téléphone { "id": 24 , "scheduled_at": "2024-11-18 18:8:43"} // Envoie le dépôt plus tard ] }' ``` ```javascript NodeJs theme={null} const payout = await Payout.create({...}); // Envoi du dépôt maintenant await payout.sendNow(); // Envoi d'un dépôt sur numéro de téléphone autre que celui du customer await payout.sendNow({ phone_number: { number: "64000001", country: "BJ" } }); // Envoi du dépôt plus tard await payout.schedule("2024-11-18 18:8:43"); // Programmer un dépôt pour plus tard mais sur un autre numéro autre // que celui du customer await payout.schedule("2024-11-18 18:8:43", { phone_number: { number: "64000001", country: "BJ" } }); // Programmer plusieurs envois await Payout.scheduleAll([ { id: 23, // Envoie le dépôt instantanément scheduled_at: "2024-11-18 18:8:43" // Envoie le dépôt plus tard }, { id: 24, // Envoie le dépôt instantanément scheduled_at: "2024-11-18 18:8:43" // Envoie le dépôt plus tard }, { id: 25, scheduled_at: "2024-11-18 18:8:43", phone_number: { number: "64000001", country: "BJ" } } ]); // Envoyer tous les dépôts instantanément await Payout.sendAllNow([ { id: 23 }, { id: 24 }, { id: 24, phone_number: { number: "64000001", country: "BJ" } } ]); ``` ```php PHP theme={null} $payout = \FedaPay\Payout::create(array(...)); // Envoi du dépôt maintenant $payout->sendNow(); // Envoi d'un dépôt sur numéro de téléphone autre que celui du customer $payout->sendNow([ "phone_number" => [ "number" => "64000001", "country" => "BJ" ] ]); // Programmer un dépôt pour plus tard $payout->schedule("2024-11-18 18:8:43"); // Programmer un dépôt pour plus tard mais sur un autre numéro autre // que celui du customer $payout->schedule("2024-11-18 18:8:43", [ "phone_number" => [ "number" => "64000001", "country" => "BJ" ] ]); // Programmer plusieurs envoies Payout::scheduleAll([ [ "id" => 23 // Envoie le dépôt instantanément ], [ "id" => 24, "scheduled_at" => "2024-11-18 18:8:43" // Envoie le dépôt plus tard ], [ "id" => 25, "scheduled_at" => "2024-11-18 18:8:43", "phone_number" => [ "number" => "64000001", "country" => "BJ" ] ] ]); // Envoyer tous les paiements instantanément Payout::sendAllNow([ [ "id" => 23 ], [ "id" => 24 ], [ "id" => 24, "phone_number" => [ "number" => "64000001", "country" => "BJ" ] ] ]); ``` ```ruby Ruby theme={null} payout = FedaPay::Payout.create({...}); # Envoi du dépôt maintenant payout.sendNow(); # Envoi d'un dépôt sur numéro de téléphone autre que celui du customer payout.sendNow({ phone_number: { number: "64000001", country: "BJ" } }); # Envoi du dépôt plus tard payout.schedule("2024-11-18 18:8:43"); # Programmer un dépôt pour plus tard mais sur un autre numéro autre # que celui du customer payout.schedule("2024-11-18 18:8:43", { phone_number: { number: "64000001", country: "BJ" } }); # Programmer plusieurs envois FedaPay::Payout.scheduleAll([ { id: 23, # Envoie le dépôt instantanément scheduled_at: "2024-11-18 18:8:43" # Envoie le dépôt plus tard }, { id: 24, # Envoie le dépôt instantanément scheduled_at: "2024-11-18 18:8:43" # Envoie le dépôt plus tard }, { id: 25, scheduled_at: "2024-11-18 18:8:43", phone_number: { number: "64000001", country: "BJ" } } ]); # Envoyer tous les dépôts instantanément FedaPay::Payout.sendAllNow([ { id: 23 }, { id: 24 }, { id: 24, phone_number: { number: "64000001", country: "BJ" } } ]); ``` Une fois le dépôt créé et/ou envoyé, vous pouvez consulter ses détails pour obtenir des informations spécifiques, telles que le statut ou l’historique du dépôt. #### Exemple de requête pour récupérer les détails d'un dépôt ```java Curl theme={null} /*Remplacez VOTRE_CLE_API_PRIVEE par la clé privée de votre compte sandbox ou live. Si vous utilisez votre compte live, vous devez remplacer le lien par https://api.fedapay.com/v1/payouts/ID */ curl -X GET \ https://sandbox-api.fedapay.com/v1/payouts/ID \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' ``` ```javascript NodeJs theme={null} const { FedaPay, Payout } = require('fedapay'); /* Remplacez YOUR_SECRETE_API_KEY par votre véritable clé API */ FedaPay.setApiKey("YOUR_SECRETE_API_KEY"); /* Indiquez si vous souhaitez exécuter votre requête en mode test ou en direct */ FedaPay.setEnvironment('sandbox'); //or setEnvironment('live'); /* Afficher un depot */ const payout = await Payout.retrieve(params = {}, headers = {}); ``` ```php PHP theme={null} \FedaPay\Fedapay::setApiKey(MY_API_KEY); $customer = \FedaPay\Payout::retrieve(ID, params = {}, header = {}); ``` ```Ruby Ruby theme={null} require 'fedapay'; # configurer la bibliothèque FedaPay FedaPay.api_key = '' # Votre clé API secrète FedaPay.environment = '' # sandbox or live payouts = FedaPay::Payout.retrieve(ID); ``` [Retrouvez plus d’informations dans notre Reference API](/api-reference/payouts/get-by-id) Récupérez les informations d’un dépôt spécifique en utilisant son identifiant unique (ID). Remplacez **ID** dans l'URL par l'identifiant du dépôt que vous souhaitez consulter. ### Cycle de Vie des Dépôts Lorsqu'un dépôt est créé, il passe par plusieurs statuts : * **pending (En attente)** : Statut initial après la création du dépôt. * **started (Démarré)** : Le dépôt a été validé et l’envoi est en cours de démarrage. * **processing (En cours d'envoi)** : Le dépôt est en cours de traitement et d’envoi vers le destinataire. * **sent (Envoyé)** : Le dépôt a été envoyé avec succès au destinataire. * **failed (Échoué)** : L’envoi du dépôt a échoué, pour des raisons qui peuvent varier (erreur technique, problème avec la méthode de versement, etc.). Vous pouvez suivre l'évolution du statut de vos dépôts à partir du tableau de bord FedaPay dans le menu Dépots. ### Méthodes de Versement Disponibles Actuellement, [les méthodes de versement](/payment-methods/fr/payment-methods-fr) prises en charge pour les dépôts sont disponibles dans plusieurs pays de la sous-région Ces méthodes permettent d'envoyer facilement des fonds vers différents pays d'Afrique de l'Ouest. ### Ajouter des données personnalisées (custom\_metadata) à vos dépôts Lorsque vous effectuez un **dépôt** à partir de votre solde FedaPay vers un compte Mobile Money (MTN Bénin, MTN Cote d’ivoire, Moov Bénin, Moov Togo et Togocel), vous pouvez y joindre des informations personnalisées grâce au champ **custom\_metadata**. Cela vous permet d’associer à chaque opération des éléments utiles pour votre activité, comme un identifiant utilisateur, le motif du transfert, une référence de service. **À quoi sert custom\_metadata dans un dépôt ?** Que vous soyez une plateforme de services, un opérateur de cashback, une marketplace ou une solution de paiement pour marchands, le champ **custom\_metadata** vous permet de : * Garder une trace précise de l’opération du côté de votre système. * Automatiser vos processus internes, en rattachant un dépôt à un utilisateur, un événement ou une commande. * Faciliter les audits et les rapprochements comptables grâce à des données personnalisées stockées au bon endroit. * Gagner du temps : plus besoin de croiser manuellement les ID FedaPay avec ceux de votre système. **Exemple : effectuer un dépôt avec des métadonnées personnalisées** Voici une requête de dépôt (payout) avec un champ custom\_metadata renseigné : ```java Curl theme={null} curl -X POST \ -H 'Authorization: Bearer TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "amount": 3000, "currency": {"iso": "XOF"}, "description": "Paiement de la commission d’un agent terrain", "receiver": { "name": "Koffi Kodjo", "phone_number": "+22961234567", "provider": "mtn" }, "custom_metadata": { "agent_id": "AGT-0032", "mois": "Juillet", "type": "commission" } }' ``` ```javascript NodeJs theme={null} const { FedaPay, Payout } = require('fedapay'); /* Replace YOUR_SECRET_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRET_API_KEY"); /* Specify whether you want to run your query in test or live mode */ FedaPay.setEnvironment('sandbox'); // or 'live' /* Create a payout with custom metadata */ const payout = await Payout.create({ amount: 3000, currency: { iso: "XOF" }, description: "Paiement de la commission d’un agent terrain", receiver: { name: "Koffi Kodjo", phone_number: "+22961234567", provider: "mtn" }, custom_metadata: { agent_id: "AGT-0032", mois: "Juillet", type: "commission" } }); console.log("Payout created:", payout.id); ``` ```php PHP theme={null} // Configurer la clé API et l'environnement \FedaPay\FedaPay::setApiKey('YOUR_SECRET_API_KEY'); \FedaPay\FedaPay::setEnvironment('sandbox'); // ou 'live' // Créer un dépôt avec des métadonnées personnalisées $payout = \FedaPay\Payout::create([ "amount" => 3000, "currency" => ["iso" => "XOF"], "description" => "Paiement de la commission d’un agent terrain", "receiver" => [ "name" => "Koffi Kodjo", "phone_number" => "+22961234567", "provider" => "mtn" ], "custom_metadata" => [ "agent_id" => "AGT-0032", "mois" => "Juillet", "type" => "commission" ] ]); echo "Payout created: " . $payout->id; ``` ```Ruby Ruby theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' payout = FedaPay::Payout.create( amount: 3000, currency: { iso: 'XOF' }, description: 'Paiement de la commission d’un agent terrain', receiver: { name: 'Koffi Kodjo', phone_number: '+22961234567', provider: 'mtn' }, custom_metadata: { agent_id: 'AGT-0032', mois: 'Juillet', type: 'commission' } ) puts "Payout created: #{payout.id}" ``` **À savoir** * Le champ custom\_metadata accepte une structure JSON (paires clé-valeur). * Utilisez des clés simples et explicites (ex. : type, mois, client\_id). * Il est totalement facultatif, mais fortement recommandé pour une gestion structurée. * Évitez d’y mettre des informations sensibles ou confidentielles (comme des mots de passe ou des numéros de carte). ### Merchant\_reference : votre identifiant unique pour chaque payout Le champ merchant\_reference vous permet d’attribuer à chaque opération de payout (transfert d’argent du compte marchand FedaPay vers un numéro Mobile Money) un identifiant unique défini par vous-même. Cet identifiant est enregistré par FedaPay et peut ensuite être utilisé pour retrouver ou tracer facilement un payout via une API dédiée. **Pourquoi l’utiliser ?** * **Suivi précis des transferts sortants** : Idéal si vous gérez de nombreux paiements vers des fournisseurs, partenaires, livreurs ou utilisateurs. * **Traçabilité interne** : Permet de lier un payout FedaPay à un paiement interne (par exemple un remboursement, une commission ou un versement). * **Recherche simplifiée** : Vous pouvez retrouver un payout à tout moment via son merchant\_reference, sans avoir à stocker l’ID généré par FedaPay. * **Audit & reporting** : Très utile pour générer des rapports ou assurer la conformité comptable et financière de vos flux sortants. **Exemple : Créer un payout avec merchant\_reference** ```java Curl theme={null} curl -X POST https://sandbox-api.fedapay.com/v1/payouts \ -H 'Authorization: Bearer YOUR_SECRET_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "amount": 5000, "currency": {"iso": "XOF"}, "description": "Paiement fournisseur Mars 2025", "recipient": { "name": "Kossi Agbo", "phone_number": { "number": "97000001", "country": "bj" } }, "merchant_reference": "PAY-20250315-002" }' ``` ```javascript NodeJs theme={null} const { FedaPay, Payout } = require('fedapay'); /* Replace YOUR_SECRET_API_KEY with your real API key */ FedaPay.setApiKey("YOUR_SECRET_API_KEY"); /* Set environment */ FedaPay.setEnvironment('sandbox'); // or 'live' /* Create a payout with merchant_reference */ const payout = await Payout.create({ amount: 5000, currency: { iso: 'XOF' }, description: 'Paiement fournisseur Mars 2025', recipient: { name: 'Kossi Agbo', phone_number: { number: '97000001', country: 'bj' } }, merchant_reference: 'PAY-20250315-002' }); console.log("Payout created:", payout.id); ``` ```php PHP theme={null} \FedaPay\FedaPay::setApiKey('YOUR_SECRET_API_KEY'); \FedaPay\FedaPay::setEnvironment('sandbox'); // ou 'live' $payout = \FedaPay\Payout::create([ "amount" => 5000, "currency" => ["iso" => "XOF"], "description" => "Paiement fournisseur Mars 2025", "recipient" => [ "name" => "Kossi Agbo", "phone_number" => [ "number" => "97000001", "country" => "bj" ] ], "merchant_reference" => "PAY-20250315-002" ]); echo "Payout created: " . $payout->id; ``` ```Ruby Ruby theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' payout = FedaPay::Payout.create( amount: 5000, currency: { iso: 'XOF' }, description: 'Paiement fournisseur Mars 2025', recipient: { name: 'Kossi Agbo', phone_number: { number: '97000001', country: 'bj' } }, merchant_reference: 'PAY-20250315-002' ) puts "Payout created: #{payout.id}" ``` **Récupérer un payout avec la référence marchand** ```java Curl theme={null} curl -X GET \ https://sandbox-api.fedapay.com/v1/payouts/merchant/PAY-20250315-002 \ -H 'Authorization: Bearer YOUR_SECRET_API_KEY' \ -H 'Content-Type: application/json' ``` ```javascript NodeJs theme={null} const { FedaPay, Payout } = require('fedapay'); FedaPay.setApiKey("YOUR_SECRET_API_KEY"); FedaPay.setEnvironment('sandbox'); const reference = 'PAY-20250315-002'; const payout = await Payout.retrieveByMerchantReference(reference); console.log("Payout found:", payout.id); ``` ```php PHP theme={null} $merchant_reference = 'PAY-20250315-002'; $payout = \FedaPay\Payout::retrieveByMerchantReference($merchant_reference); echo "Payout found: " . $payout->id; ``` ```Ruby Ruby theme={null} require 'fedapay' FedaPay.api_key = 'YOUR_SECRET_API_KEY' FedaPay.environment = 'sandbox' # or 'live' reference = 'PAY-20250315-002' payout = FedaPay::Payout.retrieve_by_merchant_reference(reference) puts "Payout found: #{payout.id}" ``` **Bonnes pratiques :** * Utilisez un format structuré pour vos références, ex. PAY-YYYYMMDD-XXX. * Ne réutilisez jamais une même merchant\_reference pour plusieurs payouts. * Vous pouvez également combiner merchant\_reference et custom\_metadata pour ajouter des détails (ID employé, campagne, projet...). ### Support Si vous avez des questions ou rencontrez des difficultés avec les dépôts, n'hésitez pas à contacter notre support technique à l’adresse : [`support@fedapay.com`](mailto:support@fedapay.com) # Envoi de requêtes Source: https://docs.fedapay.com/integration-api/fr/sending-requests-fr L'intégration de la solution de paiement de FedaPay repose sur l'envoi de requêtes HTTPS à ses serveurs. Pour vous assurer que votre plateforme fonctionne correctement en mode test comme en production, il est essentiel de comprendre comment ces requêtes doivent être structurées et à quelles réponses vous pouvez attendre. ## Structure des requêtes HTTPS Lorsque vous interagissez avec l'API de FedaPay, vos requêtes HTTPS doivent suivre une structure spécifique pour être traitées correctement. FedaPay fournit deux environnements : un environnement de test et un environnement live. Chaque environnement a son propre ensemble de clés API (test et live), et chaque clé API doit être utilisée en fonction de l'environnement dans lequel vous opérez. ### Méthodes HTTPS supportées L'API FedaPay supporte plusieurs méthodes HTTP, dont les principales sont : * **POST** : Pour envoyer des données et créer de nouvelles ressources (par exemple, une nouvelle transaction). * **GET** : Pour récupérer des informations ou des ressources existantes (par exemple, les détails d’une transaction). * **PUT** : Utilisé pour mettre à jour une ressource existante avec de nouvelles informations (par exemple, mettre à jour les détails d'une transaction). * **DELETE** : Utilisé pour supprimer une ressource existante (par exemple, annuler une transaction). ### URL des serveurs Utilisé pour effectuer des tests sans impact réel sur votre compte. ```bash theme={null} https://sandbox-api.fedapay.com ``` Utilisé pour traiter les transactions réelles. ```bash theme={null} https://api.fedapay.com ``` ### Authentification Vous devez inclure votre clé API dans l'en-tête HTTP de chaque requête. Selon que vous êtes en mode test ou live, vous utiliserez l'une des deux clés : Authorization: Bearer VOTRE\_CLÉ\_API ## Mode Test vs Mode Live ### Mode Test Avant de passer en mode Live, il est recommandé de tester votre intégration en mode test. Ce mode vous permet de simuler différentes opérations de paiement sans effectuer de transactions réelles. Vous devez créer un compte test, et utiliser les clés API test pour adresser vos requêtes à l'environnement de test. * **Clés API Test** : Ces clés ne peuvent être utilisées que sur le serveur de test. * **Transactions de test** : Simulez des transactions avec des cartes et des numéros de téléphone fictifs pour voir comment votre système réagit. ### Mode Live Une fois que vous avez validé vos tests, vous pouvez passer en production en utilisant vos clés API live. Ce mode permet de réaliser des transactions réelles avec vos clients. ## Numéros de test Mobile Money Pour vos tests d’intégration, FedaPay met à votre disposition un mode de paiement unique appelé **momo\_test**.Ce mode simplifie les essais de transactions en sandbox, sans dépendre des serveurs de test spécifiques à un opérateur (MOOV, MTN, etc.), désormais supprimés. **Fonctionnement du mode de test** * Mode de test actif : **momo\_test** . * Scénario de succès : utilisez uniquement les numéros **64000001** et **66000001** . * Scénario d’échec : utilisez n’importe quel autre numéro et le système simulera un paiement échoué selon les paramètres définis dans votre environnement sandbox. ## Réponses de l'API Chaque requête que vous envoyez à l'API FedaPay reçoit une réponse, que vous soyez en mode test ou live. Ces réponses sont formatées en JSON et contiennent des informations importantes sur le résultat de votre requête. ### Réponse réussie (200) Une réponse réussie est généralement un code HTTP 200. Elle inclut les détails de la ressource créée ou consultée. ### Réponse en cas d'erreur Si une erreur survient (mauvaise clé API, requête mal formée, etc.), l'API renvoie un code d’erreur spécifique (par exemple, 400, 401, 404, 500). ## Gestion des erreurs Pour une gestion optimale de vos transactions, voici quelques pratiques recommandées en cas d’erreurs : * **400 Bad Request** : Vérifiez que vos paramètres sont bien formatés et conformes aux spécifications de l'API. * **401 Unauthorized** : Assurez-vous que vous utilisez la clé API correcte (test ou live) et qu'elle est valide. * **404 Not Found** : Vérifiez que l'URL que vous utilisez est correcte et que la ressource existe. * **500 Internal Server Error** : Ces erreurs proviennent de l'API FedaPay. Si elles persistent, contactez l'assistance. Testez rigoureusement votre intégration avec FedaPay avant de passer en mode live est essentiel pour garantir un fonctionnement fluide. Utilisez les clés API appropriées, suivez la structure des requêtes et tenez compte des réponses de l'API pour assurer une intégration réussie. # Webhooks et Evénements Source: https://docs.fedapay.com/integration-api/fr/webhooks-fr ## Gestion des événements Les événements sont des actions importantes qui se produisent dans votre compte FedaPay, comme la création d'une transaction ou la mise à jour d'un client. Comprendre comment fonctionnent ces événements vous permet de mieux gérer vos transactions et d’offrir une meilleure expérience à vos clients. Chaque fois qu'un événement se produit, FedaPay le signale en temps réel via des **notifications d'événements**. Ces notifications peuvent être utilisées pour suivre et réagir à ce qui se passe dans votre compte, comme lorsqu'un paiement est approuvé ou un client est modifié. #### Cycle de vie des transactions Les transactions sur FedaPay suivent un cycle de vie, et chaque étape de ce cycle génère un événement particulier. Voici comment ça se passe : 1. **Création de la transaction** : Une fois que le client est créé, vous pouvez lui attribuer une transaction. Cela déclenche l'événement **transaction.created**. 2. **Suivi des transactions** : Une transaction peut évoluer de plusieurs façons : * **transaction.approved** : La transaction a été approuvée, ce qui signifie que le paiement a été validé. * **customer.created** : Lorsqu’un nouveau client est ajouté à votre compte, cela génère l’événement * **transaction.declined**: Le paiement a échoué ou a été refusé. * **transaction.canceled** : La transaction a été annulée avant sa finalisation. * **transaction.transferred** : Les fonds de la transaction ont été transférés au compte prévu (par exemple, vers un compte bancaire ou mobile money). 3. À chaque changement de statut, un nouvel événement est généré pour vous tenir informé. Par exemple, dès qu'une transaction est mise à jour, l’événement **transaction.updated** est déclenché. #### Cycle de vie des clients Les clients peuvent également faire l'objet d'événements spécifiques : * **customer.updated** : Le profil du client a été modifié (par exemple, son nom ou son adresse e-mail). * **customer.deleted** : Le client a été supprimé de votre compte. #### Comment utiliser les événements ? Chaque événement contient des informations détaillées sur ce qui vient de se passer. Vous pouvez consulter tous ces événements dans la section **Événements** de votre tableau de bord FedaPay. Cela vous permet d'avoir un historique complet de toutes les actions importantes sur votre compte. ![images d’illlustrations de la présentation des Evènements au niveau du tableau de bord](https://res.cloudinary.com/dvilp6td2/image/upload/v1731926324/Events-presentation_pou7bt.png) #### Pourquoi est-ce important ? La gestion des événements vous aide à : * **Suivre vos paiements** : Vous êtes informé en temps réel de l’état de chaque transaction. * **Administrer vos clients** : Vous pouvez suivre les modifications apportées aux profils de vos clients. * **Automatiser vos processus** : Grâce à la notification des événements, vous pouvez automatiser certaines tâches sur votre site, comme envoyer un e-mail de confirmation après un paiement réussi. # Introduction aux Webhooks Les **Webhooks** sont des notifications automatiques que FedaPay envoie à votre application ou site web lorsque des événements importants se produisent sur votre compte. Par exemple, vous pouvez recevoir un webhook lorsqu'une transaction est réussie ou contestée. Ces notifications sont particulièrement utiles car elles vous permettent de rester informé en temps réel, sans avoir à vérifier manuellement ce qui se passe sur votre compte FedaPay. #### Pourquoi utiliser des Webhooks ? Les Webhooks sont essentiels pour être alerté rapidement des actions importantes sur votre compte, comme : * Des paiements réussis ou échoués * Des remboursements * Des transactions contestées #### Comment fonctionnent les Webhooks ? Chaque fois qu'un événement se produit (par exemple, un paiement accepté), FedaPay crée un **objet événement (Event)**. Cet objet contient toutes les informations pertinentes sur l'événement, comme le type d'événement (paiement réussi) et les détails associés. Ensuite, FedaPay envoie cet objet à l'URL de votre choix (appelée **point de terminaison**) via une requête HTTP. C’est comme si FedaPay vous envoyait un message pour vous informer de ce qui s’est passé. ## Configuration des Webhooks Pour recevoir des Webhooks, vous devez configurer une URL sur votre site qui pourra recevoir ces notifications. Suivez ces étapes : * Connectez-vous à votre compte **FedaPay**. * Accédez à la section **Webhooks** depuis le menu de votre tableau de bord. * Cliquez sur **Créer un Webhook** ou **Nouveau Webhook**. * Un formulaire s’ouvre avec plusieurs champs à renseigner: **Saisir l’URL de destination** * Entrez l’URL de votre site où vous souhaitez recevoir les notifications. * Assurez-vous que cette URL est prête à traiter les Webhooks envoyés par FedaPay. **Paramètres optionnels** * **Désactiver la vérification SSL sur les requêtes HTTP** (optionnel) * **Désactiver le Webhook lorsque l’application génère des erreurs** (optionnel) **Ajouter des en-têtes HTTP** * Vous pouvez spécifier des en-têtes personnalisés en ajoutant des **clés et valeurs**. * Cliquez sur le bouton **"+"** pour ajouter plusieurs en-têtes si nécessaire. **Choisir les types d’événements** * **Recevoir tous les événements** (par défaut, vous recevrez toutes les notifications). * **Sélectionner les événements spécifiques** (vous pouvez choisir uniquement ceux qui vous intéressent parmi la liste des événements disponibles). **Finalisation et activation** * Vérifiez que toutes les informations sont correctes. * Cliquez sur **Créer** pour enregistrer et activer le Webhook. Une fois vos Webhooks créés, vous pouvez : * **Modifier** : Changez l'URL ou les événements que vous souhaitez suivre. * **Supprimer** : Si vous n’avez plus besoin de ce Webhook, vous pouvez le supprimer. * **Consulter les détails** : Vous pouvez voir toutes les informations sur le Webhook en question (URL, événements suivis, etc.). ## Stratégie d’envoi des événements des Webhooks Lorsque vous définissez un point de terminaison webhook, FedaPay vous enverra les événements liés à ce point de terminaison lorsque ceux-ci seront déclenchés sur FedaPay. * FedaPay enverra une requête HTTP de type POST avec les données de l’événement. * FedaPay attend en retour une réponse avec un statut **2xx**. * Toute réponse différente d'un statut 2xx est considérée comme un échec. #### Nouvelles tentatives automatiques FedaPay exécute chaque envoi d’événement webhook dans des tâches concurrentes. * En cas d’échec de la tache d’exécution, FedaPay réessaiera au maximum **9 fois** à des intervalles exponentiels. * Le temps d’attente pour réessayer ne dépasse pas **2 minutes**. * Après 10 essais sans succès, le webhook est automatiquement **désactivé** pour éviter une surcharge de la queue. * Vous pouvez prévenir la désactivation en décochant l’option **Désactiver le webhook lorsque l'application génère des erreurs** dans votre tableau de bord. il est préférable de bien faire le suivi de votre système et de prévenir les erreurs éventuelles. Suivez également nos recommandations pour une bonne implémentation de votre service #### Redéclenchement manuel * Allez dans **Logs** de la page de votre webhook. * Cliquez sur le bouton **Re-déclencher**. ## Bonnes pratiques pour l'utilisation des Webhooks #### Gérer les événements en double Les points de terminaison webhook peuvent parfois recevoir le même événement plusieurs fois. Vous pouvez éviter le traitement des événements en double en suivant les indications suivantes : * Enregistrez les identifiants des événements déjà traités pour ne pas les re-traiter. * Utilisez l’identifiant de l’objet dans **object** ainsi que **name** pour identifier les doublons. #### Écouter uniquement les types d’événements requis * Configurez vos points de terminaison pour ne recevoir que les événements nécessaires. * Évitez d’écouter tous les événements pour ne pas surcharger votre serveur. * Modifiez les événements reçus via le tableau de bord. #### Gérer les événements de manière asynchrone Pour éviter les problèmes de mise à l’échelle et garantir la stabilité de votre service, suivez ces recommandations : * **Utilisez une file d’attente asynchrone** pour traiter les événements webhook sans bloquer votre système. * **Évitez le traitement synchrone**, qui peut ralentir votre infrastructure et causer des échecs en cas de forte charge. * **Anticipez les pics de trafic**, notamment lors des renouvellements d’abonnements en masse, pour éviter la surcharge des serveurs. * **Contrôlez le débit de traitement** en ajustant la consommation des événements en fonction des capacités de votre système. #### Recevoir des événements avec un serveur HTTPS Pour garantir la sécurité des webhooks, assurez-vous que votre serveur respecte les exigences suivantes : * **Utilisation d’une URL HTTPS** : FedaPay vérifie la sécurité de la connexion avant d’envoyer les webhooks. * **Certificat SSL valide** : Votre serveur doit être correctement configuré avec un certificat valide pour éviter tout rejet de connexion. * **Compatibilité TLS** : Seules les versions **TLS v1.2 et v1.3** sont prises en charge par FedaPay. #### Vérifier que les événements sont envoyés par FedaPay * FedaPay envoie les webhooks depuis une **liste définie d’adresses IP**. * Faites uniquement confiance aux événements provenant de ces adresses. * Chaque webhook est signé par FedaPay via l’en-tête **X-FEDAPAY-SIGNATURE**. * Vous pouvez vérifier ces signatures en utilisant : * Les bibliothèques officielles de FedaPay. * Une vérification manuelle avec votre propre solution. **Récupération du secret du point de terminaison** * Accédez à **Workbench → Onglet Webhooks**. * Sélectionnez le point de terminaison et cliquez sur **Click to reveal**. * FedaPay génère une **clé secrète unique** pour chaque point de terminaison : * **Différente entre le mode test et le mode live.** * **Unique pour chaque point de terminaison utilisé.** **Vérification de la signature** * Lorsqu’un Webhook est envoyé, FedaPay **inclut une signature** dans l’en-tête de la requête. * Cette signature est présente dans l’en-tête **X-FEDAPAY-SIGNATURE**. * Pour vérifier que le message est authentique : 1- **Utilisez la clé secrète** de votre Webhook (récupérable dans les paramètres du tableau de bord). 2- **Utilisez cette clé pour vérifier la signature** et vous assurer que le Webhook provient bien de FedaPay. **Outils pour vérifier les signatures** * Pour s’assurer que les Webhooks reçus **proviennent bien de FedaPay** et n’ont pas été altérés, il est essentiel de **vérifier leur signature**. * FedaPay simplifie ce processus grâce à ses **bibliothèques officielles**. * Voici un exemple de code montrant comment vérifier la signature dans un projet Node.js ou PHP ```javascript NodeJs theme={null} const { Webhook } = require('fedapay') // You can find your endpoint's secret key in your webhook settings const endpointSecret = 'wh_sandbox...'; // This example uses Express to receive webhooks const app = require('express')(); // Use body-parser to retrieve the raw body as a buffer const bodyParser = require('body-parser'); // Match the raw body to content type application/json app.post('/webhook', bodyParser.raw({type: 'application/json'}), (request, response) => { const sig = request.headers['x-fedapay-signature']; let event; try { event = Webhook.constructEvent(request.body, sig, endpointSecret); } catch (err) { response.status(400).send(`Webhook Error: ${err.message}`); } // Handle the event switch (event.name) { case 'transaction.created': // Transaction créée break; case 'transaction.approved'': // Transaction approuvée break; case 'transaction.canceled'': // Transaction annulée break; default: console.log(`Unhandled event type ${event.type}`); } // Return a response to acknowledge receipt of the event response.json({received: true}); }); app.listen(4242, () => console.log('Running on port 4242')); ``` ```php PHP theme={null} // You can find your endpoint's secret key in your webhook settings $endpoint_secret = 'wh_dev.......'; $payload = @file_get_contents('php://input'); $sig_header = $_SERVER['HTTP_X_FEDAPAY_SIGNATURE']; $event = null; try { $event = \FedaPay\Webhook::constructEvent( $payload, $sig_header, $endpoint_secret ); } catch(\UnexpectedValueException $e) { // Invalid payload http_response_code(400); exit(); } catch(\FedaPay\Error\SignatureVerification $e) { // Invalid signature http_response_code(400); exit(); } // Handle the event switch ($event->name) { case 'transaction.created': // Transaction créée break; case 'transaction.approved': // Transaction approuvée break; case 'transaction.canceled': // Transaction annulée break; default: http_response_code(400); exit(); } http_response_code(200); ``` * Une **attaque par nouvelle tentative** consiste à retransmettre un webhook intercepté. * FedaPay inclut un **horodatage (timestamp)** dans l’en-tête **X-FEDAPAY-SIGNATURE** pour empêcher ces attaques. * L’horodatage est vérifié avec la signature : * **Impossible de le modifier sans invalider la signature.** * **Si l’horodatage est trop ancien, votre application peut rejeter le webhook.** * À chaque réessai d’envoi (si le premier a échoué), **une nouvelle signature et un nouvel horodatage** sont générés. * Votre point de terminaison doit répondre **rapidement** avec un code **2xx** avant d’exécuter des traitements lourds. * Exemples : * **Répondre 200 immédiatement.** * **Effectuer ensuite les actions comme marquer une facture comme payée.** # Raisons de rejet de mon compte FedaPay et comment les éviter Source: https://docs.fedapay.com/introduction/fr/account-rejection-fr Lors de la soumission de votre compte FedaPay pour validation, certaines informations ou pièces peuvent entraîner un rejet si elles sont incomplètes, incorrectes ou non conformes aux exigences réglementaires.Cette section vous explique les principales causes de rejet et les bonnes pratiques à suivre pour maximiser vos chances de validation dès la première soumission. ## 1. Adresse de l’entreprise insuffisamment détaillée * **Cause fréquente de rejet** L’adresse fournie est trop vague ou incomplète (ex. : uniquement une ville ou un quartier). * **Ce que vous devez faire** Renseignez une adresse détaillée de l’entreprise, incluant obligatoirement : * la ville ; * le quartier ; * la maison (ou le nom du propriétaire) ; * le lot ou carré, si disponible. Cette précision permet de vérifier l’existence et la localisation réelle de l’activité. ## 2. Description des activités non conforme ou imprécise * **Cause fréquente de rejet** La description des activités ne correspond pas à la réalité légale de l’entreprise ou est trop générique. * **Ce que vous devez faire** Dans le champ Description détaillée des activités : * décrivez précisément ce que vous vendez ou les services que vous proposez ; * assurez-vous que la description est conforme à celle figurant sur votre RCCM, si vous en possédez un. Une incohérence entre les activités déclarées et les documents officiels entraîne systématiquement un rejet. ## 3. Signature non conforme * **Cause fréquente de rejet** La signature fournie est illisible, numérique ou différente de celle figurant sur la pièce d’identité. * **Ce que vous devez faire** Votre signature doit être : * manuscrite ; * lisible ; * réalisée au stylo bleu sur papier blanc ; * strictement identique à celle figurant sur vos documents d’identité. Cette exigence est essentielle pour la vérification d’identité et la conformité réglementaire. ## 4. Capital de l’entreprise incohérent * **Cause fréquente de rejet** Le capital déclaré ne correspond pas au RCCM ou est laissé vide. * **Ce que vous devez faire** * Indiquez un capital conforme à celui mentionné sur votre RCCM. * Si aucun capital n’est indiqué sur vos documents officiels, renseignez 0. ## 5. Pièce d’identité invalide ou non conforme * **Cause fréquente de rejet** * Pièce expirée ; * Pièce appartenant à une autre personne ; * Absence de signature sur le document. * **Ce que vous devez faire** * Fournissez une pièce d’identité valide ; * Assurez-vous qu’elle appartient bien au propriétaire du compte ; * Vérifiez qu’elle comporte une signature visible pour comparaison. ## 6. Site web au format incorrect * **Cause fréquente de rejet** Le champ site web contient un texte simple (ex. : facebook.com/page) au lieu d’une URL valide. * **Ce que vous devez faire** Renseignez une URL complète et valide, par exemple : [https://www.monsite.com](https://www.monsite.com) . ## 7. IFU non adapté au pays sélectionné (zone UEMOA) * **Cause fréquente de rejet** Un identifiant fiscal incorrect ou non reconnu pour le pays choisi. * **Ce que vous devez faire** Après avoir sélectionné votre pays : * [renseignez l’équivalent local de l’IFU, selon la réglementation du pays UEMOA concerné](https://docs.fedapay.com/introduction/fr/compte-fr#informations-fiscales-obligatoires-pour-les-comptes-fedapay) ; * assurez-vous que l’identifiant correspond bien à votre entreprise ou à votre statut. ## Bonnes pratiques avant de soumettre votre compte Avant de cliquer sur Soumettre pour validation, vérifiez que : * toutes les informations sont complètes et cohérentes ; * les documents sont lisibles, valides et à jour ; * les champs obligatoires sont remplis conformément aux indications fournies. Une soumission correcte réduit considérablement les délais de validation et évite les échanges supplémentaires avec le support client. # Accepter des paiements avec Checkout.Js Source: https://docs.fedapay.com/introduction/fr/checkoutjs-fr ## Pourquoi utiliser Checkout.js pour vos paiements en ligne ? Checkout.js est un outil conçu pour faciliter l'intégration d'un formulaire de paiement sécurisé et rapide sur votre site web. Que vous soyez développeur ou non, cet outil vous permettra de collecter des paiements directement sur votre site en toute simplicité. Découvrez comment utiliser et personnaliser Checkout.js pour offrir une expérience de paiement fluide à vos utilisateurs. ***Avant de commencer, visionnez cette vidéo qui présente le mode d’intégration de Checkout.js*** :