Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Use cases for expanding responses


Use cases for expanding responses

Expand API responses to return common payment details.

Use the expand parameter in your API request to retrieve details that the API doesn’t return in its default response. The following use cases illustrate this for commonly requested information.

See the Stripe fee for a given payment

You can check a payment’s processing fees after the payment processes and Stripe creates the balance transaction. The charge.updated event references the balance_transaction property (for example, txn_123), indicating that it’s ready to use.

Instead of looking up the balance transaction separately, you can retrieve it in a single call using expand.

Note

IC+ users can’t retrieve payment fee information from the balance transaction. Use the Payment fees report instead.

Command Line

Select a language

curl

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Users on API version 2022-08-01 or older:

Command Line

Select a language

curl

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Note

A PaymentIntent must be captured and have a status of succeeded for the Stripe fees to be available.

When using automatic_async (the default capture_method since version 2024-04-10), balance transactions are created after the payment succeeds, but asynchronously in the background. This means:

  • The balance _ transaction field on the Charge object might be null immediately after confirmation.
  • If you expand balance _ transaction or latest _ charge. balance _ transaction , it might not be available in the response.
  • You can listen for the charge. updated event to know when the balance transaction becomes available.

This asynchronous behavior improves payment performance, but requires your integration to handle the possibility that the balance transaction might not be immediately available.

See the charges included in a payout

Every automatic payout is tied to historical changes to the balance of your Stripe account. The API records these historical changes as balance transactions, which you can retrieve using List Balance Transactions. From a list of balance transactions, you can expand the source property to gather information on what triggered the change to the account balance (Charge, Refund, Transfer, and so on). For example:

Command Line

Select a language

curl

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Note

You can only retrieve balance transaction history on automatic payouts. If you have manual payouts enabled, you must track transaction history on your own.

Learn more about payout reconciliation.

If you’re using Connect with destination charges, you can retrieve the same information on behalf of your connected accounts. One difference is that destination charges involve both a transfer and a linked payment (in the form of a Charge object) to move funds to a connected account. So when listing the balance transactions bundled in your connected account’s payouts, each balance transaction’s source is linked to the transfer’s payment rather than the originating Charge. To retrieve the originating Charge, you need to expand a payment’s linked transfer through the source_transfer property; and from there, expand the transfer’s source_transaction property:

Command Line

Select a language

curl

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

Last verified 2026-09-24

Is this helpful?