Comment créer des frais sur votre compte Connect et transférer des fonds vers plusieurs comptes connectés.
Créez des paiements et des transferts distincts pour transférer des fonds vers plusieurs comptes connectés, ou lorsqu’un utilisateur spécifique n’est pas connu au moment du paiement. Le paiement sur votre compte de plateforme est dissocié des transferts vers vos comptes connectés. Avec ce type de paiement :
Vous créez un paiement sur le compte de votre plateforme et transférez également des fonds à vos comptes connectés. Le paiement apparaît comme tel sur votre compte, et il y a également des transferts vers des comptes connectés (dont vous déterminez le montant), qui sont prélevés du solde de votre compte.
Vous pouvez transférer des fonds vers plusieurs comptes connectés.
Le solde de votre compte sera débité du coût des frais Stripe, des remboursements et des contestations de paiement.
Ce type de frais convient mieux aux places de marché qui doivent répartir les paiements entre plusieurs parties, comme DoorDash, une plateforme de livraison de plats à domicile.
Stripe prend en charge des paiements et transferts distincts dans les régions suivantes :
Allemagne
Australie
Autriche
Belgique
Brésil
Bulgarie
Canada
Chypre
Croatie
Danemark
Espagne
Estonie
États-Unis
Finlande
France
Grèce
Hongrie
Irlande
Italie
Japon
Lettonie
Liechtenstein
Lituanie
Luxembourg
Malaisie
Malte
Mexique
Norvège
Nouvelle-Zélande
Pays-Bas
Pologne
Portugal
République tchèque
Roumanie
Royaume-Uni
Singapour
Slovaquie
Slovénie
Suède
Suisse
Dans la plupart des cas, votre plateforme et le compte connecté doivent se trouver dans la même région. Toute tentative de transfert de fonds au-delà d’une frontière non autorisée renvoie une erreur. Pour en savoir plus sur la prise en charge interrégionale, consultez Transferts internationaux. Vous ne devez utiliser les transferts qu’en combinaison avec les cas d’utilisation autorisés pour les paiements, les recharges et les frais.
A Checkout Session controls what your customer sees in the payment form such as line items, the order amount and currency, and acceptable payment methods. Add a checkout button to your website that calls a server-side endpoint to create a Checkout Session.
line_items : cet attribut spécifie les articles achetés par votre client. Ces articles sont affichés dans la page Checkout hébergée par Stripe.
payment_intent_data[transfer_group] : utilisez une chaîne unique comme transfer_group pour identifier les objets qui sont associés les uns aux autres. Lorsque Stripe crée automatiquement un paiement pour un PaymentIntent avec une valeur transfer_group, la même valeur est affectée au transfer_group du paiement.
success_url : Stripe redirige le client vers l’URL d’opération réussie après qu’un 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. 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 une page hébergée par Stripe pour en savoir plus.
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 :
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é, l’ sous-jacent passe de étatprocessing à succeeded ou à un état d’échec.
Les montants des transferts et des paiements ne doivent pas nécessairement correspondre. Vous pouvez fractionner un paiement en plusieurs transferts ou inclure plusieurs paiements dans un même transfert. L’exemple suivant illustre la création d’un transfert supplémentaire associé au même transfer_group.
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.
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.
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 pris en charge uniquement pour les comptes connectés disposant de la fonctionnalité card_payments. Les comptes soumis au contrat de service pour les bénéficiaires ne peuvent pas demander l’attribut card_payments.
Lorsque vous créez des paiements et transferts distincts, la plateforme peut encaisser des frais en réduisant le montant transféré sur le compte de destination. Par exemple, imaginons une transaction de service de livraison, avec un paiement adressé au restaurant et un autre au livreur :
Le client paie 100 USD.
Stripe prélève des frais de 3,20 USD et ajoute les 96,80 USD restants au solde en attente du compte de la plateforme.
La plateforme transfère 70 USD vers le compte connecté du restaurant et 20 USD vers le compte connecté du chauffeur.
Des frais de plateforme de 6,80 USD restent sur le compte de la plateforme.
Pour en savoir plus sur le traitement des paiements dans plusieurs devises avec Connect, consultez Gérer plusieurs devises.
Disponibilité des transferts
Le comportement par défaut consiste à transférer les fonds à partir du solde disponible du compte de la plateforme. Toute tentative de transfert dont le montant dépasse le solde disponible échoue et entraîne une erreur. Pour éviter ce problème, lorsque vous créez un transfert, associez-le à un paiement existant en spécifiant l’ID du paiement comme paramètre source_transaction. En utilisant le paramètre source_transaction, la demande de transfert aboutit, quel que soit votre solde disponible. Cependant, les fonds ne deviennent disponibles sur le compte de destination que lorsque les fonds du paiement associé peuvent être transférés depuis le compte de la plateforme.
Si le paiement source a une valeur transfer_group, Stripe affecte la même valeur au transfer_group du transfert. Si ce n’est pas le cas, Stripe génère une chaîne au format group_ plus l’ID du PaymentIntent associé (par exemple : group_pi_2NHDDD589O8KAxCG0179Du2s), puis affecte cette chaîne en tant que transfer_group pour le paiement et le transfert.
Note
Vous devez spécifier la source_transaction lorsque vous créez un transfert. Vous ne pourrez pas mettre à jour cet attribut par la suite.
Vous pouvez obtenir l’ID du paiement à partir du PaymentIntent :
Obtenez l’attribut latest_charge du PaymentIntent. Cet attribut est l’ID du paiement le plus récent associé au PaymentIntent.
Créez une requête de liste des paiements, en spécifiant le payment_intent dans la requête. Cette méthode renvoie l’intégralité des données de tous les paiements associés au PaymentIntent.
Pour utiliser ce paramètre :
Le montant du transfert ne doit pas dépasser celui du paiement source
Vous pouvez créer plusieurs transferts avec la même source_transaction, tant que la somme des transferts ne dépasse pas le montant du paiement source
Le transfert prend l’état en attente du paiement associé : si les fonds du paiement deviennent disponibles dans X jours, le règlement que reçoit le compte de destination Stripe pour le transfert devient également disponible dans X jours
Stripe crée automatiquement le transfer_group pour vous
La devise de l’opération sur solde associée au paiement doit correspondre à celle du transfert
Les moyens de paiement asynchrones, comme ACH, peuvent échouer après toute demande de transfert ultérieure. Pour ces paiements, évitez d’utiliser source_transaction. Attendez plutôt qu’un événement charge.succeeded soit déclenché avant de transférer les fonds. Si vous devez utiliser source_transaction avec ces paiements, activez une fonctionnalité permettant de gérer les échecs de paiement.
Lorsqu’un paiement utilisé comme source_transaction échoue, des fonds provenant du solde de compte de votre plateforme sont transférés vers le compte connecté pour couvrir le paiement. Pour récupérer ces fonds, annulez le transfert associé à l’échec de la source_transaction.
Options de transfert
Vous pouvez attribuer n’importe quelle valeur à la chaîne transfer_group, mais elle doit représenter une seule action commerciale. Vous pouvez également effectuer un transfert sans paiement associé ou sans transfer_group, par exemple, lorsque vous devez payer un fournisseur, mais qu’il n’y a pas de paiement client associé.
Note
Le paramètre transfer_group identifie uniquement les objets associés. Il n’affecte aucune fonctionnalité standard. Pour empêcher l’exécution d’un transfert avant que les fonds du paiement associé ne soient disponibles, utilisez l’attribut source_transaction du transfert.
Les montants des transferts et des paiements ne doivent pas nécessairement correspondre. Vous pouvez fractionner un paiement en plusieurs transferts ou inclure plusieurs paiements dans un même transfert. Vous pouvez effectuer des transferts et des paiements dans n’importe quel ordre.
Par défaut, une demande de transfert échoue lorsque le montant dépasse le solde de compte disponible de la plateforme. Vous pouvez néanmoins valider le montant du transfert en le comparant au paiement associé en spécifiant ce paiement comme source_transaction du transfert. Dans ce cas, la demande de transfert aboutit automatiquement, mais n’est exécutée que lorsque les fonds de ce paiement sont disponibles sur le compte de la plateforme.
Note
Si vous utilisez les paiements et transferts distincts, tenez compte de cela lorsque vous planifiez la fréquence de vos virements. Les virements automatiques peuvent interférer avec les transferts qui n’ont pas de source_transaction définie.
Émission de remboursements
Les paiements créés sur votre plateforme peuvent être remboursés à l’aide de la clé secrète de votre plateforme. Cependant, le remboursement d’un paiement n’a aucun impact sur les transferts associés. Il incombe à votre plateforme de rapprocher tout montant qui lui est dû en réduisant le montant des transferts ultérieurs ou en annulant les transferts.
Connect prend en charge la possibilité d’annuler les transferts effectués sur les comptes connectés, totalement ou en partie (en définissant la valeur du montant pour le paramètre amount) :
Les annulations de transferts rajoutent le montant spécifié (ou l’intégralité du montant) au solde disponible de la plateforme, réduisant ainsi le solde disponible du compte connecté. Il n’est possible d’annuler un transfert que si le solde disponible du compte connecté est supérieur au montant de l’annulation ou si les réserves connectées sont activées.
Si l’annulation du transfert nécessite une conversion de devise et que le montant de l’annulation entraîne un solde nul après la conversion, une erreur est renvoyée.
Welcome to the Stripe Shell!
Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Log in to your
Stripe account and press Control + Backtick (`) on your keyboard to start managing your Stripe
resources in test mode.
- View supported Stripe commands:
- Find webhook events:
- Listen for webhook events:
- Call Stripe APIs: stripe [api resource] [operation] (e.g., )
Le shell Stripe est plus optimisé sur la version bureau.