Interroger des données transactionnelles
Créez des rapports personnalisés sur les paiements, les remboursements, les transferts, etc.
Utilisez les données des tables du schéma pour générer des rapports sur l’activité du solde de votre compte. La section Tables de paiement contient des tables représentant les mouvements de fonds, notamment les paiements et remboursements, transitant entre vos clients et votre compte Stripe. Les informations concernant les virements du solde de votre compte Stripe vers votre compte bancaire (virements) sont répertoriées dans la section Tables de virement.
Utilisez la table balance_
comme point de départ pour votre comptabilité. Contrairement à l’utilisation de plusieurs tables distinctes (comme charges
ou refunds
), elle permet de générer un rapport semblable à un grand livre comptable concernant tout type d’opération entrante ou sortante sur le solde de votre compte Stripe. Utilisez les opérations sur solde pour générer les rapports les plus fréquemment utilisés et simplifier l’enregistrement de vos activités financières. Voici les types d’opérations sur solde les plus courants :
charges
refunds
transfers
payouts
adjustments
application_
fees
Chaque ligne d’opération sur solde représente un objet balance_transaction distinct qui, une fois créé, ne sera plus modifié. Par exemple, la création d’un paiement génère également la création d’une opération sur solde de type charge
. Le remboursement de ce paiement génère une opération sur solde distincte de type refund
, sans modifier l’opération sur solde initiale. De la même façon, lorsque vous recevez un virement sur votre compte bancaire, une autre opération sur solde (en l’occurrence un transfert) est créée.
L’exemple de requête suivant utilise cette table afin de récupérer des informations concernant les cinq opérations sur solde les plus récentes.
select date_format(created, '%m-%d-%Y') as day, id, amount, currency, source_id, type from balance_transactions order by day desc limit 5
jour | id | montant | devise | source_id | type |
---|---|---|---|---|---|
txn_9WZ5VqgUpbzwZ30 | -1 000 | usd | re_L2YrILTyi0SVuCH | remboursement | |
txn_X3lvVBuIBhPF0Qf | 1 000 | usd | ch_jKUnK4HPx7Gbtpy | paiement | |
txn_VTZ3zdE0UlpE1Ku | 1 000 | usd | ch_GgLAKXEP30hfxXF | paiement | |
txn_icDHkDrnArA4ooI | 1 000 | eur | ch_UBxpym5W1Mp3r5d | paiement | |
txn_NZWPI08ARvf6Rfg | -1 000 | usd | re_5ZlPn5XPSgNoK1l | remboursement |
Vous pouvez générer les rapports financiers les plus courants en associant la table balance_
à d’autres tables contenant les informations voulues. Certains de nos modèles de requête (par exemple le solde quotidien et solde et récapitulatif mensuels) fonctionnent en associant cette table à d’autres.

Détails des frais de l’opération sur solde
La table balance_
fournit des informations relatives aux frais pour chaque opération sur solde. En joignant cette table à la table balance_
de la manière décrite ci-dessous, vous pouvez renvoyer les informations relatives aux frais de chaque opération sur solde.

La requête suivante joint les tables balance_
et balance_
. Chaque poste d’opération sur solde renvoyé comprend le montant, les frais, le type de frais appliqué et une description de ces frais.
select date_format(date_trunc('day', balance_transactions.created), '%m-%d-%Y') as day, balance_transactions.id, balance_transactions.amount, balance_transactions.fee, balance_transaction_fee_details.type from balance_transactions inner join balance_transaction_fee_details on balance_transaction_fee_details.balance_transaction_id=balance_transactions.id order by day desc limit 5
jour | id | montant | frais | type |
---|---|---|---|---|
txn_vssfLRoTqfGoFHe | 1 000 | 59 | stripe_fee | |
txn_SQBwKOFZQcmo7u5 | 1 000 | 59 | stripe_fee | |
txn_B6MRIKTzhDJT2aC | 1 000 | 59 | stripe_fee | |
txn_d3EK6BRQMl1MlHN | 1 000 | 59 | stripe_fee | |
txn_mBC0Y7dP2ejbnzy | 1 000 | 59 | stripe_fee |
Paiements
La table charges
contient des données relatives aux objets Charge. Utilisez cette table pour les requêtes qui portent sur les informations de paiement plutôt qu’à des fins comptables ou de rapprochement. Elle complète également les rapports comptables avec des données supplémentaires sur les clients. Par exemple, le modèle de requête détails des cartes de paiement utilise la table charges
pour générer un rapport sur les différents types de cartes utilisés par vos clients.
Vous pouvez joindre la table charges
à diverses autres tables afin de récupérer davantage d’informations au moyen de vos requêtes.

L’exemple suivant utilise la table charges
pour générer un rapport sur les échecs de paiement, en renvoyant la marque de la carte ainsi que le message et le code d’erreur.
select date_format(date_trunc('day', created), '%m-%d-%Y') as day, id, card_brand, failure_code, failure_message from charges where status = 'failed' order by day desc limit 5
jour | id | card_brand | failure_code | failure_message |
---|---|---|---|---|
ch_4KVD7FYnQ9zo7wC | Visa | card_declined | Votre carte a été refusée. | |
ch_nYBDJfBbDTK9GeF | MasterCard | card_declined | Votre carte ne prend pas en charge ce type d’achat. | |
ch_GQ5nYDKZJzlSeeU | Visa | card_declined | Votre carte ne dispose pas de fonds suffisants. | |
ch_gXkifASfPfQ8Py1 | Visa | card_declined | Votre carte a été refusée. | |
ch_eAcE4I1EZzMfMea | MasterCard | card_declined | Votre carte a été refusée. |
Clients
La table customers
contient des données relatives aux objets Customer (cette table ne fait pas partie du groupe Table des paiements). Utilisez-la pour créer des paiements à partir de clients (par exemple, à partir des informations de paiement enregistrées.) Elle est également utile si vous utilisez des abonnements.

L’exemple suivant récupère une liste des échecs de paiement, avec l’ID et l’adresse e-mail de chaque client.
select date_format(date_trunc('day', charges.created), '%m-%d-%Y') as day, customers.id, customers.email, charges.id from charges inner join customers on customers.id=charges.customer_id where charges.status = 'failed' order by day desc limit 5
Remboursements
Les paiements et les remboursements correspondent à des objets distincts dans l’API. Le remboursement d’un paiement génère un objet Refund. Ces données sont disponibles dans la table refunds
et vous fournissent des informations détaillées sur les remboursements effectués. Comme pour les rapports sur les paiements, il est préférable de commencer par les données relatives aux opérations sur solde. Si besoin, vous pouvez recueillir des informations supplémentaires à l’aide de la table refunds
.
Vous pouvez joindre la table refunds
aux tables balance_
et charges
pour analyser les données des remboursements plus en détail.

L’exemple suivant associe les tables balance_
et refunds
grâce aux colonnes refunds.
et balance_
. Chaque poste d’opération sur solde renvoyé est un remboursement et affiche l’ID et le montant du paiement correspondant. Seules les opérations sur solde créées après une certaine date sont renvoyées.
select date_format(date_trunc('day', balance_transactions.created), '%m-%d-%Y') as day, balance_transactions.source_id, refunds.charge_id, balance_transactions.amount from balance_transactions inner join refunds on refunds.balance_transaction_id=balance_transactions.id where balance_transactions.type = 'refund' order by day desc limit 5
jour | source_id | charge_id | montant |
---|---|---|---|
re_X0ppBGOrN4J0PZK | ch_rFLxvCXrwhbpRnZ | -1 000 | |
re_eGLPuwNbKkiPK5I | ch_VmFNx9hH8ItTp8o | -1 000 | |
re_X02TT1Pvb7Emcqf | ch_8Wc8IOyxyVh6SxK | -1 000 | |
re_L7XxbJfcEbqzBtL | ch_QLD8uqJ1bYtc84W | -1 000 | |
re_KvvhxW5CC4vT7o4 | ch_B2K7yB5jZxKVqgi | -1 000 |
Remboursements de capture partielle
En utilisant l’authentification et la capture et en ne capturant qu’une partie du montant autorisé, vous créez à la fois un paiement et un remboursement. Le paiement autorisé génère un objet charge
et l’opération sur solde correspondante pour la totalité du montant. Lorsque vous effectuez une capture partielle, le montant non capturé est débloqué, et un objet refund
dont le champ reason
est partial_
ainsi que l’opération sur solde correspondante sont générés.
Par exemple, si vous autorisez un paiement de 10 USD mais que vous ne capturez que 7 USD, un objet charge
de 10 USD est créé, ainsi qu’un objet refund
au motif partial_
pour les 3 USD restants.
Cet aspect est à prendre en compte si votre entreprise procède à l’autorisation et à la capture des paiements et que vous créez des rapports pour examiner les taux de remboursement des clients. Faute de prise en compte, l’autorisation et la capture peuvent fausser le nombre de remboursements sur votre compte. Utilisez le champ reason
du remboursement pour filtrer les remboursements de capture partielle lors de la récupération des informations de paiement.
select balance_transactions.id, balance_transactions.amount from balance_transactions inner join refunds on refunds.id=balance_transactions.source_id where reason != 'partial_capture' limit 5
Transferts et virements
La table transfers
contient des données sur les virements effectués depuis votre solde Stripe vers votre compte bancaire. Si vous utilisez les virements automatiques, vous pouvez utiliser cette table pour rapprocher chaque virement avec les paiements, remboursements et réajustements spécifiques qui le constituent.
Pour les plateformes Connect, cette table inclut également des données sur les transferts de fonds effectués vers les comptes Stripe connectés.

Si vous réalisez vos virements manuellement, le montant d’un virement vers votre compte bancaire est toujours arbitraire. Vous ne pouvez donc pas le rapprocher à des opérations sur solde spécifiques, car il reflète uniquement le montant que vous avez choisi de virer vers votre compte bancaire.
L’exemple suivant joint les tables balance_
et transfers
. Il renvoie une liste des paiements et des remboursements, le virement auquel ils sont associés et la date à laquelle le virement vers votre compte bancaire a été planifié.
select date_format(date_trunc('day', balance_transactions.created), '%m-%d-%Y') as bt_created, balance_transactions.source_id, balance_transactions.type, balance_transactions.net as net_amount, balance_transactions.automatic_transfer_id as transfer_id, date_format(date_trunc('day', transfers.date), '%m-%d-%Y') as transfer_date from balance_transactions inner join transfers on balance_transactions.automatic_transfer_id=transfers.id where balance_transactions.type = 'charge' and balance_transactions.type != 'refund' order by bt_created desc limit 5
jour | source_id | type | net_amount | transfer_id | transfer_date |
---|---|---|---|---|---|
22-05-2017 | ch_GKZW7zrkzM7eh45 | paiement | 941 | po_FHRvXA5oBhH0Mdu | 24-05-2017 |
22-05-2017 | ch_GLzAC37UM2py0Hy | paiement | 941 | po_Wyl5BcZKZmcpb5Q | 24-05-2017 |
21-05-2017 | ch_xBh5UkQyiprTw6R | paiement | 941 | po_X1a2gWmU2ibYX0y | 23-05-2017 |
21-05-2017 | ch_JjfWVkGMnp7cGTr | paiement | 941 | po_E4eAFYaZoKdwjCm | 23-05-2017 |
21-05-2017 | ch_zKUAfV7U9fOQO2B | paiement | 941 | po_5TmnmQ1cQKQzF9W | 23-05-2017 |
Mise en garde
Les virements effectués avant le 06-04-2017 possèdent un TRANSFER_ID avec un préfixe tr_
.
Annulations de transferts
Vous pouvez annuler un paiement créé manuellement (ou un transfert vers un compte Stripe connecté) s’il n’a pas encore été payé en utilisant les fonds renvoyés au solde disponible de votre compte. Ceux-ci sont représentés comme des objets Transfer_reversal et résident dans la table transfer_
.
Les annulations de transferts s’appliquent uniquement aux virements et aux transferts créés manuellement. Les virements automatiques ne peuvent pas être annulés.