Working with TransactionsPublic preview
Use transactions to track money movement on financial accounts.
Every movement of funds into or out of a financial account creates a Transaction object. Transactions are the ledger entries for your financial accounts. They record what happened, how it affected the balance, and which resource caused the movement.
Use transactions to build account activity feeds, reconcile against your internal systems, and track money movement through your platform. You can’t create transactions directly. Stripe creates them automatically when flows such as OutboundPayments, OutboundTransfers, ReceivedCredits, and ReceivedDebits move money.
Listen for transaction webhooks
Stripe sends the following event type for transactions:
| Event type | Trigger |
|---|---|
v2. | A flow creates a transaction on a financial account. |
This event is a thin event. The payload doesn’t contain the full transaction object. Instead, it provides a related_ with the transaction ID, type, and URL you can use to retrieve the full resource.
Webhook payload example
For the transaction webhook payload schema and examples, see Transaction event types.
Retrieve the transaction
Use the related_ from the event to retrieve the full transaction.
The response includes the transaction amount, balance impact, status, and flow that created the transaction. For the response schema and example, see Retrieve a Transaction.
Identify the source flow
Use the transaction’s flow property to identify the resource that caused the balance change. The flow. property identifies the flow category, and the matching property contains the source resource ID.
For example, if flow. is outbound_, then flow. contains the ID of the OutboundPayment that created the transaction.
Retrieve the OutboundPayment to get the full details of the flow that created the transaction, such as the recipient, amount, statement descriptor, delivery method, and status.
Transaction statuses
A transaction progresses through the following statuses:
| Status | Meaning | Balance impact |
|---|---|---|
pending | The transaction is in progress. | inbound_ or outbound_ is non-zero. |
posted | The transaction is complete. This is a terminal state. | Only available is non-zero. |
void | The transaction was canceled or reversed before posting. This is a terminal state. | All balance impact values are zero. |
Stripe doesn’t add more entries to a transaction after it reaches posted or void.