# Payout reconciliation report

Allow connected accounts to view and export payout reconciliation reports.

The payout reconciliation report component allows connected accounts to view and export reports that reconcile each [automatic payout](https://docs.stripe.com/connect/manage-payout-schedule.md) with the batch of transactions it settles. It displays three subreports:

- **Balance summary**: Shows starting and ending Stripe balance for the selected date range, along with a high-level summary of activity during the period.
- **Payout reconciliation**: A breakdown of the automatic payouts received in the connected account’s bank account during the selected date range, with transactions grouped by reporting category.
- **Ending balance reconciliation**: A breakdown of the transactions that haven’t settled as of the report’s end date.

Connected accounts can filter the report by date range and currency. They can also export each subreport as summarized or itemized CSV downloads.

These subreports are similar to [the payout reconciliation reports for direct Stripe accounts](https://docs.stripe.com/reports/payout-reconciliation.md).

## Component availability

If a connected account doesn’t use automatic payouts, the payout reconciliation report component renders nothing. Use the `onReportAvailabilityLoaded` callback to detect this state and display your own empty state or alternative UI.

If a connected account changes from automatic payouts to manual payouts, this component no longer renders their payout data. If a connected account changes from manual payouts to automatic payouts, this component only includes data for their automatic payouts.

The [balance report component](https://docs.stripe.com/connect/supported-embedded-components/balance-report.md) renders payout data for all connected accounts, regardless of their payout type.

> Connected accounts without access to the [full Stripe Dashboard](https://docs.stripe.com/connect/stripe-dashboard.md) can only view data starting from April 1, 2026, unless your platform has been specifically backfilled.

Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production.

When you [create an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable the payout reconciliation report by specifying `payout_reconciliation_report` in the `components` parameter.

```curl
curl https://api.stripe.com/v1/account_sessions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "account={{CONNECTEDACCOUNT_ID}}" \
  -d "components[payout_reconciliation_report][enabled]=true"
```

After creating the account session and [initializing ConnectJS](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), you can render the payout reconciliation report component in the front end:

#### JavaScript

```javascript
// Include this element in your HTML
const payoutReconciliationReport = stripeConnectInstance.create(
  "payout-reconciliation-report"
);
container.appendChild(payoutReconciliationReport);

// Optional: Set a callback to handle report availability.
// The payout reconciliation report is only available for accounts
// on automatic payouts. Use this callback to show your own empty
// state when the report is unavailable.
payoutReconciliationReport.setOnReportAvailabilityLoaded(
  ({ isReportAvailable }) => {
    if (!isReportAvailable) {
      // Hide the component container or show a custom message
      container.style.display = "none";
      document.getElementById("fallback-message").textContent =
        "Payout reconciliation reports are only available for accounts that " +
        "use automatic payouts.";
    }
  }
);
```

#### HTML + JS

| Method                          | Type                                     | Description                                                                                                                                                                                                                                                                                                          |
| ------------------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `setOnReportAvailabilityLoaded` | `({isReportAvailable: boolean}) => void` | Callback invoked when the component has determined whether the payout reconciliation report is available for this connected account. Returns true if the account uses automatic payouts, and false if it uses manual payouts. Use this method to conditionally render the component or display your own empty state. |

#### React

| React prop                   | Type                                     | Description                                                                                                                                                                                                                                                                                                          |
| ---------------------------- | ---------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `onReportAvailabilityLoaded` | `({isReportAvailable: boolean}) => void` | Callback invoked when the component has determined whether the payout reconciliation report is available for this connected account. Returns true if the account uses automatic payouts, and false if it uses manual payouts. Use this method to conditionally render the component or display your own empty state. |

## Accounts connected to multiple platforms

For connected accounts that aren’t controlled exclusively by your platform:

- The report includes transactions from all platforms the account is connected to.
- The connected account must complete [user authentication](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#user-authentication-in-connect-embedded-components) before viewing the report.
