Accéder directement au contenu
Créez un compte
ou
connecter-vous
Logo de la documentation Stripe
/
Demander à l'assistant IA
Créez un compte
Connectez-vous
Démarrer
Paiements
Revenus
Plateformes et places de marché
Gestion de fonds
Outils de développement
Aperçu
Démarrer avec Connect
Principes de base de l'intégration
Exemples d'intégration
Inscrire des comptes
Configurer les dashboards des comptes
Accepter des paiements
    Créer un paiement
      Paiements directs
      Paiement indirect
      Paiements et transferts distincts
    Définir des libellés de relevé bancaire
    Définir les codes de catégories de marchands (CCM)
    Gérer plusieurs devises
    Créer des liens de paiement avec Connect
    Utiliser Radar avec Connect
    Litiges sur Connect
    Créer des abonnements
    Créer des factures
    Configurations de moyens de paiement multiples
    Intégrer le composant des paramètres des moyens de paiement
    Solde du compte
Effectuer des virements vers des comptes
Gérer votre plateforme Connect
Formulaires fiscaux pour votre plateforme Connect
Utiliser les types de comptes connectés
AccueilPlateformes et places de marchéAccept paymentsCreate a charge

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.

Copier la page

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. 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.

Version bêta privée

Vous pouvez utiliser les paiements indirects, sans le paramètre on_behalf_of, lorsque votre plateforme et votre compte connecté se trouvent dans des pays différents, aux États-Unis, au Royaume-Uni et dans l’UE. Pour un accès anticipé, contactez-nous.

Intégrez un formulaire de paiement préconfiguré à votre site à l’aide de Stripe Checkout. Comparez cette intégration aux autres types d’intégration de Stripe.

Aperçu de Checkout intégréAperçu de Checkout intégré
powdur.me

Effort d'intégration

Low-code

Type d'intégration

Intégrer un formulaire de paiement préconfiguré sur votre site

Personnalisation de l'interface utilisateur

Personnalisation limitée

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 :

Command Line
Ruby
# Available as a gem sudo gem install stripe
Gemfile
Ruby
# If you use bundler, you can add this line to your Gemfile gem 'stripe'

Créer une session Checkout
Côté serveur

Une session Checkout contrôle ce que votre client voit dans le formulaire de paiement intégrable, tel que les postes, le montant de la commande et la devise de la commande. Créez une session Checkout dans un endpoint côté serveur (par exemple, /create-checkout-session). La réponse inclut un client_secret que vous utiliserez à l’étape suivante pour monter Checkout.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=1000 \ -d "line_items[0][quantity]"=1 \ -d "payment_intent_data[application_fee_amount]"=123 \ -d "payment_intent_data[transfer_data][destination]"=
{{CONNECTED_ACCOUNT_ID}}
\ -d mode=payment \ -d ui_mode=embedded \ --data-urlencode return_url="https://example.com/checkout/return?session_id={CHECKOUT_SESSION_ID}"
  • payment_intent_data[transfer_data][destination] : ce paramètre indique qu’il s’agit d’un paiement indirect. Un paiement indirect désigne un paiement traité sur la plateforme et pour lequel les fonds sont ensuite immédiatement et automatiquement transférés vers le solde en attente du compte connecté.
  • line_items : ce paramètre spécifie les articles achetés par votre client. Ces articles sont affichés dans le formulaire de paiement intégré.
  • return_url : Stripe redirige le client vers l’URL de redirection après qu’une tentative de paiement aboutit et remplace la chaîne {CHECKOUT_SESSION_ID} par l’ID de la session Checkout. Servez-vous en pour récupérer la session Checkout et en inspecter l’état afin de décider de ce que vous allez montrer à votre client. Assurez-vous que l’URL de redirection correspond à la page de votre site qui contient l’état du paiement. Vous pouvez également ajouter vos propres paramètres de requête, qui persistent tout au long du processus de redirection. Consultez la page Personnaliser le comportement de redirection avec un formulaire intégré pour en savoir plus.
  • payment_intent_data[application_fee_amount] : ce paramètre précise le montant que votre plateforme prévoit de prélever sur la transaction. Une fois le paiement capturé, le montant total du paiement est immédiatement transféré depuis la plateforme vers le compte connecté spécifié par le paramètre transfer_data[destination]. Ensuite, le montant application_fee_amount est à nouveau transféré vers la plateforme, et les frais Stripe sont déduits de ce montant.

Pour les paiements indirects, Checkout utilise les paramètres de marque du compte de votre plateforme. Pour en savoir plus, consultez la section consacrée à la personnalisation des paramètres de marque.

Monter Checkout
Côté client

Checkout est disponible dans Stripe.js. Intégrez le script Stripe.js à votre page en l’ajoutant à l’en-tête de votre fichier HTML. Ensuite, créez un nœud DOM vide (conteneur) à utiliser pour le montage.

index.html
<head> <script src="https://js.stripe.com/v3/"></script> </head> <body> <div id="checkout"> <!-- Checkout will insert the payment form here --> </div> </body>

Initialisez Stripe.js avec votre clé API publiable. Transmettez le client_secret de l’étape précédente dans options lorsque vous créez l’instance Checkout :

index.js
// Initialize Stripe.js const stripe = Stripe(
'pk_test_TYooMQauvdEDq54NiTphI7jx'
); initialize(); // Fetch Checkout Session and retrieve the client secret async function initialize() { const fetchClientSecret = async () => { const response = await fetch("/create-checkout-session", { method: "POST", }); const { clientSecret } = await response.json(); return clientSecret; }; // Initialize Checkout const checkout = await stripe.initEmbeddedCheckout({ fetchClientSecret, }); // Mount Checkout checkout.mount('#checkout'); }

Checkout est affiché dans un iframe qui envoie les informations de paiement à Stripe de manière sécurisée via une connexion HTTPS. Évitez de déplacer Checkout dans un autre iframe car certains moyens de paiement nécessitent une redirection vers une autre page pour la confirmation du paiement.

Gérer les événements post-paiement
Cô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énementDescriptionÉtapes suivantes
checkout.session.completedLe client a autorisé le paiement en envoyant le formulaire Checkout.Attendez que le paiement aboutisse ou échoue.
checkout.session.async_payment_succeededLe paiement du client a abouti.Traitez la commande de biens ou de services de votre client.
checkout.session.async_payment_failedLe 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

Numéro de carteScénarioMéthode de test
Le paiement par carte bancaire aboutit et ne nécessite pas d’authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte ainsi que la date d’expiration, le CVC et le code postal de votre choix.
Le paiement par carte bancaire requiert une authentification.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte ainsi que la date d’expiration, le CVC et le code postal de votre choix.
La carte est refusée avec un code de refus de type insufficient_funds.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte ainsi que la date d’expiration, le CVC et le code postal de votre choix.
La carte UnionPay a un numéro d’une longueur variable, allant de 13 à 19 chiffres.Remplissez le formulaire de paiement par carte bancaire en saisissant le numéro de carte ainsi que la date d’expiration, le CVC et le code postal de votre choix.

Consultez la section consacrée aux tests pour obtenir des informations supplémentaires sur la manière de tester votre intégration.

FacultatifActiver d'autres moyens de paiement

Percevoir des frais

Lorsqu’un paiement est traité, plutôt que de transférer le montant total de la transaction vers un compte connecté, vous pouvez décider que votre plateforme prélève une partie du montant de la transaction sous forme de frais. Vous pouvez définir la tarification des frais de deux manières différentes :

  • Utilisez les outils de tarification de la plateforme pour définir des règles de tarification des commissions de plateforme et les tester. Cette fonctionnalité no-code du Dashboard Stripe n’est actuellement disponible que pour les plateformes responsables du paiement des frais Stripe.

  • Définissez vos règles de tarification en interne, en spécifiant les frais directement dans un PaymentIntent à l’aide du paramètre application_fee_amount ou du paramètre transfer_data[amount]. Les frais définis avec cette méthode remplacent la logique tarifaire spécifiée dans les outils de tarification de la plateforme.

Lorsque vous créez des paiements avec un paramètre application_fee_amount, la totalité du montant du paiement est transférée de la plateforme vers le compte transfer_data[destination] directement après la capture du paiement. Le montant des commissions, application_fee_amount (qui ne peut dépasser le montant du paiement) est ensuite de nouveau transféré, du compte vers la plateforme.

Command Line
cURL
curl https://api.stripe.com/v1/checkout/sessions \ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "line_items[0][price_data][currency]"=usd \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=1000 \ -d "line_items[0][quantity]"=1 \ -d "payment_intent_data[application_fee_amount]"=123 \ -d "payment_intent_data[transfer_data][destination]"=
{{CONNECTED_ACCOUNT_ID}}
\ -d mode=payment \ -d ui_mode=embedded \ --data-urlencode success_url="https://example.com/success"

Une fois les commissions de plateforme perçues, un objet Application Fee est créé. Vous pouvez afficher une liste des commissions de plateforme dans le Dashboard, avec les commissions de plateforme ou dans Sigma. Vous pouvez également utiliser la propriété amount de l’objet Application Fee pour établir des rapports détaillés sur les frais.

Lorsque vous utilisez application_fee_amount, il convient de savoir les choses suivantes :

  • Le application_fee_amount est plafonné au montant total de la transaction.
  • Le montant application_fee_amount est toujours calculé dans la même devise que la transaction.
  • La commission de la plateforme est libellée dans la même devise que la devise de règlement du compte connecté. Dans le cas des paiements indirects transfrontaliers, elle peut être différente de la devise de règlement de votre plateforme.
  • Votre plateforme paie les frais Stripe après le transfert du application_fee_amount dans votre compte.
  • Aucune commission Stripe supplémentaire n’est appliquée au montant.
  • Votre plateforme peut utiliser le reporting intégré des commissions de plateforme pour rapprocher les commissions encaissées.
  • Dans les Dashboards ou les composants hébergés par Stripe, tels que le composant d’informations de paiement, votre compte connecté peut afficher à la fois le montant total et le montant des commissions de la plateforme.

Mouvements de fonds

Avec le code ci-dessus, le montant total du paiement (10 USD) est ajouté au solde en attente du compte connecté. La somme correspondant au paramètre application_fee_amount (1,23 USD) est déduite du montant du paiement et transférée sur votre plateforme. Les frais Stripe (0,59 USD) sont déduits du solde du compte de votre plateforme. Le montant de la commission de plateforme moins les frais Stripe (1,23 USD - 0,59 USD = 0,64 USD) reste dans le solde du compte de votre plateforme.

Mouvements de fonds pour les paiements indirects

Le montant application_fee_amount devient disponible selon la fréquence normale de transfert sur le compte la plateforme, tout comme les fonds provenant des paiements ordinaires Stripe.

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_behalf_of, 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_color : utilisé comme couleur d’arrière-plan sur la page Checkout.
  • secondary_color : utilisé comme couleur des boutons sur la page Checkout.
Command Line
cURL
curl https://api.stripe.com/v1/accounts/
{{CONNECTED_ACCOUNT_ID}}
\ -u "
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:"
\ -d "settings[branding][icon]"=
{{FILE_ID}}
\ -d "settings[branding][logo]"=
{{FILE_ID}}
\ --data-urlencode "settings[branding][primary_color]"="#663399" \ --data-urlencode "settings[branding][secondary_color]"="#4BB543"

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_behalf_of sur l’ID d’un compte connecté pour faire de ce compte l’entité de règlement pour le paiement. Lorsque vous utilisez on_behalf_of :

  • 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_behalf_of est ignoré, la plateforme est l’entreprise de référence pour le paiement.

Mise en garde

Le paramètre on_behalf_of 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_payments 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_data[destination], 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_transfer sur true lors de la création du remboursement :

Command Line
curl
curl https://api.stripe.com/v1/refunds \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d charge="{CHARGE_ID}" \ -d reverse_transfer=true \

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 :

Command Line
curl
curl https://api.stripe.com/v1/refunds \ -u
sk_test_BQokikJOvBiI2HlWgH4olfQ2
:
\ -d charge="{CHARGE_ID}" \ -d reverse_transfer=true \ -d refund_application_fee=true \

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_application_fee 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.

Gérer les litiges

Pour les paiements indirects, avec ou sans le paramètre on_behalf_of, Stripe débite le montant du litige et les frais de votre compte de plateforme.

Nous vous recommandons de configurer un webhook pour écouter les événements créés par un litige. Dans ce cas, vous pouvez tenter de récupérer les fonds auprès du compte connecté en annulant le transfert dans le Dashboard ou en créant une annulation de transfert.

Lorsque le compte connecté a un solde négatif, Stripe tente de débiter son compte externe si debit_negative_balances est défini sur true.

Si vous contestez le litige et obtenez gain de cause, vous pouvez renvoyer le paiement précédemment annulé au compte connecté. Si le solde de votre plateforme est insuffisant, le transfert échoue. Pour éviter tout problème lié aux soldes insuffisants, ajoutez des fonds à votre solde Stripe.

Erreur fréquente

Le retransfert d’une annulation antérieure est soumis à des restrictions sur les transferts transfrontaliers. Cela signifie que dans certains cas, il pourra être impossible de rembourser votre compte connecté. Dans ce cas, attendez que plutôt que le litige soit perdu avant de recouvrer les fonds de paiements indirects on_behalf_of par transfert transfrontalier.

Voir aussi

  • Gérer plusieurs devises
  • Libellés de relevé bancaire avec Connect
Cette page vous a-t-elle été utile ?
OuiNon
Besoin d'aide ? Contactez le service Support.
Rejoignez notre programme d'accès anticipé.
Consultez notre log des modifications.
Des questions ? Contactez l'équipe commerciale.
LLM ? Lire llms.txt.
Propulsé par Markdoc