Créer des paiements indirects
Créez des paiements sur votre compte de plateforme, percevez les frais et transférez immédiatement les fonds restants vers vos comptes connectés.
Créez des paiements indirects lorsque les clients effectuent des transactions sur votre plateforme pour des produits ou des services proposés par vos comptes connectés et transférez immédiatement des fonds vers vos comptes connectés. Avec ce type de paiement :
- Vous créez un paiement sur le compte de votre plateforme.
- Vous déterminez si ces fonds sont à transférer partiellement ou en totalité dans votre compte connecté.
- Le solde de votre compte sera débité du coût de la commission Stripe, des remboursements et des contestations de paiement.
Ce type de paiement est le mieux adapté aux places de marché telles qu’Airbnb (location de logements) ou Lyft (covoiturage).
Les paiements indirects ne sont pris en charge que si votre plateforme et le compte connecté se trouvent dans le même pays. Pour la prise en charge des paiements transfrontaliers, vous devez indiquer le marchand de règlement au compte connecté en utilisant le paramètre on_behalf_of sur le Payment Intent ou d’autres scénarios de transferts transfrontaliers valides.
Note
Nous vous recommandons d’utiliser les paiements indirects pour les comptes connectés qui ont accès au Dashboard Express ou aucun accès au Dashboard.
Redirigez vers une page de paiement hébergée par Stripe à l’aide de Stripe Checkout. Comparez cette intégration aux autres types d’intégration de Stripe.
Effort d'intégration
Type d'intégration
Redirection vers la page de paiement hébergée par Stripe
Personnalisation de l'interface utilisateur
Tout d’abord, inscrivez-vous pour créer un Compte Stripe.
Utilisez nos bibliothèques officielles pour accéder à l’API Stripe depuis votre application :
Créer une session CheckoutCôté clientCôté serveur
Une session Checkout contrôle ce que le client voit dans le formulaire de paiement, tel que les postes, le montant de la commande, la devise et les moyens de paiement acceptés. Ajoutez à votre site Web un bouton de paiement qui appelle un endpoint côté serveur pour créer une session Checkout.
<html> <head> <title>Checkout</title> </head> <body> <form action="/create-checkout-session" method="POST"> <button type="submit">Checkout</button> </form> </body> </html>
Gérer les événements post-paiementCôté serveur
Stripe envoie un événement checkout.session.completed à l’issue du paiement. Utilisez un webhook pour recevoir ces événements et exécuter des actions en conséquence, comme l’envoi d’un e-mail de confirmation de commande à votre client, l’enregistrement de la vente dans une base de données ou le lancement d’un flux de livraison.
Nous vous conseillons d’écouter ces événements plutôt que d’attendre un rappel du client. Côté client, il arrive en effet que l’utilisateur ferme la fenêtre de son navigateur ou quitte l’application avant l’exécution du rappel. Avec certains moyens de paiement, la confirmation du paiement peut par ailleurs prendre entre 2 et 14 jours. Configurer votre intégration de manière à ce qu’elle écoute les événements asynchrones vous permettra d’accepter plusieurs moyens de paiement avec une seule intégration.
Stripe recommande de gérer tous les événements suivants lors de la collecte de paiements avec Checkout :
Événement | Description | Étapes suivantes |
---|---|---|
checkout.session.completed | Le client a autorisé le paiement en envoyant le formulaire Checkout. | Attendez que le paiement aboutisse ou échoue. |
checkout.session.async_payment_succeeded | Le paiement du client a abouti. | Traitez la commande de biens ou de services de votre client. |
checkout.session.async_payment_failed | Le paiement a été refusé ou a échoué pour une autre raison. | Contactez le client par e-mail et demandez-lui de passer une nouvelle commande. |
Ces événements incluent tous l’objet Checkout Session. Une fois le paiement effectué, le PaymentIntent passe de état sous-jacent processing
à succeeded
ou à un état d’échec.
Tester l'intégration
Consultez la section consacrée aux tests pour obtenir des informations supplémentaires sur la manière de tester votre intégration.
Percevoir des frais
Vous pouvez percevoir des frais avec un application_fee_amount ou un transfer_data[amount].
Personnaliser l’image de marque
Votre plateforme utilise les paramètres de marque du Dashboard pour personnaliser l’image de marque sur la page des paiements. Pour les paiements indirects, Checkout utilise les paramètres de marque du compte de la plateforme. Pour les paiements indirects avec on_
, Checkout utilise les paramètres de marque du compte connecté.
Les plateformes peuvent configurer les paramètres de marque des comptes connectés à l’aide de l’API Update Account :
icon
: s’affiche à côté du nom de l’entreprise dans l’en-tête de la page Checkout.logo
: utilisé à la place de l’icône et du nom de l’entreprise dans l’en-tête de la page Checkout.primary_
: utilisé comme couleur d’arrière-plan sur la page Checkout.color secondary_
: utilisé comme couleur des boutons sur la page Checkout.color
Sélectionner l’entité de règlement
Le choix de l’entité de règlement dépend des fonctionnalités définies sur un compte et de la manière dont un paiement est créé. L’entité de règlement détermine quelles seront les informations à utiliser pour effectuer le paiement. Elles comprennent le libellé du relevé (celui de la plateforme ou celui du compte connecté) affiché sur la carte de crédit du client ou le relevé bancaire pour ce paiement.
Préciser l’entité de règlement vous permet d’être plus explicite concernant les personnes pour lesquelles les paiements doivent être créés. Par exemple, certaines plateformes préfèrent être l’entité de règlement parce que le client final communique directement avec leur plateforme (comme dans le cas des plateformes à la demande). Cependant, certaines plateformes ont des comptes connectés qui communiquent directement avec les clients finaux (par exemple, une vitrine sur une plateforme d’e-commerce). Dans ce scénario, il est plus logique que le compte connecté soit l’entité de règlement.
Vous pouvez définir le paramètre on_
sur l’ID d’un compte connecté pour faire de ce compte l’entité de règlement pour le paiement. Lorsque vous utilisez on_
:
- Les paiements sont réglés dans le pays et dans la devise de règlement du compte connecté.
- La structure des frais appliquée est celle du pays du compte connecté.
- Le libellé de relevé bancaire du compte connecté apparaît sur le relevé de carte bancaire du client.
- Si le compte connecté relève d’un autre pays que celui de la plateforme, l’adresse et le numéro de téléphone du compte connecté sont affichés sur le relevé de carte bancaire du client.
- Le nombre de jours durant lesquels un solde en attente est bloqué avant d’être versé dépend du paramètre delay_days du compte connecté.
Si le paramètre on_
est ignoré, la plateforme est l’entreprise de référence pour le paiement.
Mise en garde
Le paramètre on_
est uniquement pris en charge pour les comptes connectés disposant d’une fonctionnalité de paiement comme card_payments. Les comptes soumis au contrat de service pour les bénéficiaires ne peuvent pas demander card_
ou d’autres fonctionnalités de paiement.
Émettre des remboursements
Si vous utilisez l’API Payment Intents, les remboursements doivent être émis sur le dernier paiement créé.
Les paiements créés sur le compte de la plateforme peuvent être remboursés en utilisant la clé secrète du compte de la plateforme. Lorsque vous remboursez un paiement comportant un transfer_
, par défaut le compte de destination garde les fonds transférés, laissant le compte de la plateforme couvrir le solde négatif du remboursement. Pour récupérer les fonds du compte connecté afin de couvrir le remboursement, définissez le paramètre reverse_
sur true
lors de la création du remboursement :
Par défaut, la totalité du paiement est remboursée, mais vous pouvez créer un remboursement partiel en définissant le paramètre amount
sur un nombre entier positif.
Si le remboursement entraîne le remboursement de la totalité du paiement, la totalité du transfert est annulée. Dans le cas contraire, un montant proportionnel du transfert est annulé.
Rembourser les commissions de la plateforme
Lorsque vous remboursez un paiement comportant une commission de la plateforme, par défaut le compte de la plateforme garde les fonds correspondant à la commission. Pour rediriger ces fonds vers le compte connecté, définissez le paramètre refund_application_fee sur true
lors de la création du remboursement :
Notez que si vous remboursez la commission de la plateforme pour un paiement indirect, vous devez également annuler le transfert. Si le remboursement se traduit par le remboursement de la totalité du paiement, la totalité de la commission est également remboursée. Dans le cas contraire, un montant proportionnel de la commission est remboursé.
Vous pouvez également indiquer la valeur false pour refund_
et rembourser la commission de la plateforme séparément via l’API.
Remboursements ayant échoué
Si un remboursement échoue ou si vous l’annulez, le montant du remboursement ayant échoué est recrédité sur le solde Stripe de votre compte de plateforme. Créez un transfert pour envoyer les fonds vers le compte connecté, le cas échéant.
Handle disputes
For destination charges, with or without on_
, Stripe debits dispute amounts and fees from your platform account.
We recommend setting up a webhook to listen to dispute created events. When that happens, you can attempt to recover funds from the connected account by reversing the transfer through the Dashboard or by creating a transfer reversal.
If the connected account has a negative balance, Stripe attempts to debit its external account if debit_
is set to true
.
If you challenge the dispute and win, you can transfer the funds that you previously reversed back to the connected account. If your platform has an insufficient balance, the transfer fails. Prevent insufficient balance errors by adding funds to your Stripe balance.
Erreur fréquente
Retransferring a previous reversal is subject to cross-border transfer restrictions, meaning you might have no means to repay your connected account. Instead, wait to recover disputed cross-border payment transfers for destination charges with on_
until after a dispute is lost.