Crédit disponible et mouvements de fondsVersion bêta privée
Découvrez comment les fonds circulent et comment utiliser le champ du montant de crédit disponible pour éviter les refus d'autorisation.
Récupérer le montant du crédit disponible d’un compte
Chaque fois qu’un client effectue une transaction par carte ou que vous enregistrez un réajustement de crédit ou de débit, le crédit disponible du compte connecté change. Pour reprendre l’exemple du crédit de récompense de 50 USD de Gymbox, le crédit disponible de Barbell a augmenté de 50 USD après l’application de l’ajustement du crédit de récompense. Vous pouvez confirmer cette augmentation et déterminer le dernier crédit disponible de Barbell en récupérant le grand livre de crédit du compte à l’aide de la commande suivante :
Exemple de réponse
{ "credit_limit": 100000, "amount_pending": 10000, "obligations": { "accruing": 5000, "unpaid": 15000 }, "credit_available": 97000, "prefunded_available": , "currency": "usd", "livemode": false }
Stripe recommande d’utiliser le champ credit_
renvoyé lors de l’appel de l’endpoint credit_
. Cette approche garantit que vous montrez toujours à vos clients le montant exact du crédit qu’il leur reste à dépenser. Le champ credit_
et le solde Issuing de votre client déterminent ensemble ce qu’un compte connecté peut dépenser à tout moment. Stripe l’utilise également pour déterminer si une demande d’autorisation de transaction sera approuvée ou refusée sur la base des fonds disponibles.
L’autorisation a échoué en raison d’un manque de crédit disponible
Les autorisations effectuées sur un compte connecté avec une CreditPolicy peuvent être refusées pour les motifs suivants :
Le compte connecté tente d’effectuer une dépense supérieure à son plafond de crédit disponible. Dans ce cas, le compte connecté présente peut-être des FundingObligations impayées qui réduisent son crédit disponible. Pour éviter tout refus d’autorisation, veillez à ce que les FundingObligations de votre compte connecté soient toujours à jour.
Votre compte de plateforme Issuing n’a plus de fonds disponibles et le solde Issuing disponible de votre compte connecté est également de zéro. Pour éviter les refus d’autorisation, ajoutez suffisamment de fonds à votre compte Issuing.
Suivre les mouvements de fonds
Bien que cela ne soit pas indispensable pour permettre à vos comptes connectés d’accéder à un compte de crédit, il peut être judicieux de suivre l’état des autorisations, transactions et transferts créés lorsqu’un compte connecté utilise des fonds avancés par votre plateforme.
Imaginons la situation de départ suivante :
Compte | Solde Issuing |
---|---|
Compte Issuing de Gymbox (plateforme) | 70 USD |
Solde Issuing de Barbell (compte connecté) | 0 USD |
Autorisations
Barbell, qui a une CreditPolicy avec une credit_
de 100 USD auprès de Gymbox, dépense 10 USD. Une autorisation de 10 $ est générée sur le compte de Barbell :
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... } ], "card": {...}, ... }
En parallèle, le solde de Gymbox fait l’objet d’une retenue de même montant. Cette retenue permet de réserver ces fonds, qui ne pourront ainsi pas être utilisés par d’autres comptes connectés de Gymbox :
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrMkq3S", "object": "balance_transaction", "amount": -1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": -1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7x0N6", "object": "issuing.platform_hold", "amount": 1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGRkgcn7" }, "status": "available", "type": "issuing_authorization_hold" }
Le solde est désormais de :
Compte | Solde Issuing |
---|---|
Compte Issuing de Gymbox (plateforme) | 60 USD |
Solde Issuing de Barbell (compte connecté) | −10 USD |
Captures de transactions et transferts
Avant la capture des autorisations Issuing et la création des transactions Issuing, les fonds sont transférés vers le compte connecté, puis la retenue dont la plateforme fait l’objet est levée.
Sur le compte de Barbell, l’autorisation a été modifiée puis clôturée, levant la retenue des fonds :
{ "id": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "object": "issuing.authorization", "amount": 1000, "currency": "usd", "approved": true, "authorization_method": "online", "balance_transactions": [ { "id": "txn_1234XYZ", "object": "balance_transaction", "amount": -1000, "type": "issuing_authorization_hold", ... }, { "id": "txn_4t355646t54w2", "object": "balance_transaction", "amount": 1000, "type": "issuing_authorization_release", }, ], "card": {...}, "status": "closed", "transactions": [ { "id": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "object": "issuing.transaction", "amount": -1000, "authorization": "iauth_1JVXl82eZvKYlo2CPIiWlzrn", "balance_transaction": "txn_1345r1KCr4trgtrg0WfNdUCbG1w", ... } ... }
La retenue de fonds opérée sur le compte de la plateforme est également levée :
{ "id": "txn_1Mgr6fXpL7qsPGZtDwrPz7bA", "object": "balance_transaction", "amount": 1000, "available_on": 1677682692, "created": 1677682692, "currency": "usd", "description": "Released platform hold for authorization (account: acct_1MgC5JRcH5icH3Nz, authorization: iauth_1Mgr6dRcH5icH3NzezZCHnJF)", "exchange_rate": null, "fee": 0, "fee_details": [], "net": 1000, "reporting_category": "issuing_authorization_hold", "source": { "id": "iph_1Mgr6eXpL7qsPGZtAMb7m8Z3", "object": "issuing.platform_hold", "amount": -1000, "currency": "usd", "originating_account": "acct_1MgC5JRcH5icH3Nz", "originating_authorization": "iauth_1Mgr6dRcH5icH3NzezZCHnJF", "originating_balance_transaction": "txn_1Mgr6dRcH5icH3NzYGR7bA4c" }, "status": "available", "type": "issuing_authorization_hold" }
Stripe transfère les fonds de Gymbox vers le compte Issuing de Barbell. Un objet Transfer est créé :
{ "id": "tr_3JeQsp2eZvKYlo2C13DagtB0", "object": "transfer", "amount": 1000, "amount_reversed": 0, "balance_transaction": "txn_1032HU2eZvKYlo2CEPtcnUvl", "created": 1646912059, "currency": "usd", "description": null, "destination": "acct_1032D82eZvKYlo2C", "livemode": true, "metadata": {}, "reversals": { "object": "list", "data": [], "has_more": false, "url": "/v1/transfers/tr_3JeQsp2eZvKYlo2C13DagtB0/reversals" }, "reversed": false, "source_transaction": null, "issuing_transaction": "ipi_1032HU2eZvKYlo2CEPtcnUvl", "metadata": {}, "source_balance": { "type": "issuing", }, // New destination_balance returned field links to the BT on the connected account side "destination_balance": { "type": "issuing", "issuing": { "balance_transaction": "txn_123", }, }, // ... other fields ... }
La retenue des fonds, la levée de cette retenue et le transfert sont effectués avant la création de la transaction Issuing correspondante par Stripe. Le solde est désormais de :
Compte | Solde Issuing |
---|---|
Compte Issuing de Gymbox (plateforme) | 60 USD |
Solde Issuing de Barbell (compte connecté) | 0 USD |
Si la transaction n’a pas fait l’objet d’une autorisation initiale et si le compte connecté ne dispose pas de fonds suffisants, le transfert de solde de la plateforme et le flux de création de la transaction se produisent tout de même.
Remboursements
Lorsqu’un compte connecté reçoit un remboursement, Stripe tente de déterminer si la transaction correspondante avait été financée par le solde du compte connecté ou par le compte de la plateforme. Si le compte connecté a financé la transaction, le remboursement est versé au solde du compte connecté. Si le compte de la plateforme a financé la transaction (par exemple via la ligne de crédit du compte connecté), le montant du remboursement est déduit de la FundingObligation
du compte connecté. Le remboursement est ensuite versé au compte de la plateforme, car celle-ci a déjà payé Stripe pour cette transaction au nom du compte connecté.
Supposons que la FundingObligation
de Barbell est de 100 USD. Si le montant est remboursé, alors :
- La
FundingObligation
de Barbell passe de 100 à 0 USD - Les 100 USD sont transférés vers le compte Issuing de Gymbox, ce qui augmente son solde de plateforme de 100 USD
Il est possible que le montant amount_
d’une FundingObligation
soit négatif si la seule transaction d’une période de crédit est un remboursement et qu’il n’y a aucune dépense par carte. Dans ce cas, l’état de la FundingObligation
est Needs refund
. Une FundingObligation
peut être négative lorsque le montant total des remboursements est supérieur au montant total des dépenses par carte.
Litiges
Lorsqu’un client conteste une transaction de dépense à crédit sur un compte connecté, la contestation suit le processus décrit dans la section Contestation des litiges. Les litiges perdus ne donnent lieu à aucune action (aucun crédit n’est émis en faveur du compte connecté). En cas de litige remporté, le compte connecté est crédité, tel que décrit dans la section sur les remboursements.
Refus d’autorisation
Les autorisations effectuées sur un compte connecté disposant d’une CreditPolicy
peuvent être refusées pour les motifs suivants :
- Le compte connecté tente d’effectuer une dépense supérieure à son plafond de crédit disponible. Dans ce cas, le compte connecté présente peut-être des
FundingObligations
impayées qui réduisent son crédit disponible. Pour éviter tout refus d’autorisation, veillez à ce que lesFundingObligations
de votre compte connecté soient toujours à jour. - Votre compte de plateforme Issuing n’a plus de fonds disponibles et le solde Issuing disponible de votre compte connecté est également de zéro. Pour éviter les refus d’autorisation, ajoutez suffisamment de fonds à votre compte Issuing.