# Provide and reconcile reports

Learn how to provide Capital reports to your connected accounts, and reconcile Capital transactions in any existing reports.

Use this guide to:

- **Provide Capital reports**: Provide Capital transactions reports to your connected accounts. They can use these reports to view their outstanding balance, payment history, and other data such as their financing agreement. You can provide reports to your connected accounts in multiple ways.
- **Reconcile existing reports to include Capital transactions**: If you already provide reports to your connected accounts in your platform’s UI, use Stripe APIs to synchronize Capital transaction data in those existing reports.

Financing offers have three types of transactions: a payout, a paydown, and a reversal. If you want to [provide reports using Stripe APIs](https://docs.stripe.com/capital/reporting-and-reconciliation.md#before-you-begin), we describe these transactions in more detail below.

## Options to provide reports

You can provide Capital reports to your connected accounts in multiple ways, and you can use more than one option:

|  |
| **Email** | Connected accounts receive notifications through emails about offer acceptance and payout disbursement and weekly payment progress updates. These co-branded emails contain a link that redirects a connected account to a separate Stripe-hosted Capital page, where they can view their Capital transactions and payment progress. This page doesn’t include standard payment processing details (such as original charge amounts, platform and processing fees, refunds, or disputes).

We automatically do this for you (if you opt for [Stripe to send emails on your behalf](https://docs.stripe.com/capital/how-capital-for-platforms-works.md#email-notifications) during onboarding). |
| **Embedded component** | Embed the Capital Financing component in your platform’s UI. This allows you to display transaction reports that your connected accounts can directly access in your platform’s UI. The component doesn’t include standard payment processing information (such as charges, refunds, or disputes).

To implement this component, see [Capital financing](https://docs.stripe.com/connect/supported-embedded-components/capital-financing.md). |
| **API** | Monitor and display Capital transactions along with detailed payments data (including standard payment processing information such as charges, refunds, and disputes) using the Financing Transactions API. If you’re using the Balance Transactions API, you can see Capital transactions in the API. You can also build your own custom reporting interfaces using both Balance Transactions API or Financing Transactions API.

To use these APIs, continue reading this guide. |

You can also [provide ad-hoc reports](https://docs.stripe.com/capital/reporting-and-reconciliation.md#ad-hoc-reports).

## Before you begin

If you want to provide reports using APIs, review the following types of transactions:

|  |
| **Payout** | Stripe (with our financial partner) automatically distributes funds for a payout (for an approved and accepted financing offer) according to the terms of the financing agreement to a connected account. A Capital financing payout is independent of the connected account’s regular payouts. No additional action is required from your platform to facilitate these payouts. |
| **Paydown** | A payment used to pay towards a financed amount. Three types of paydown transactions are available:

- **Withholding**: A fixed percentage of payments that are automatically taken to pay the financing until the connected account pays the total financing amount. When connected accounts apply for financing, they agree that Stripe can withhold a fixed percentage of their future payments or sales  until they pay the total financing amount.
- **User-initiated**: Users can manually make a payment towards their financing on the Stripe-hosted Capital page or within the Stripe financing embedded component .
- **Collection attempts**: Stripe’s Servicing team might initiate paydowns in accordance with the Capital collections policy.

Capital withholding occurs simultaneously with payment processing, while Connect volume fees and platform app fees are calculated based on the full charge amount. The final amount transferred to a connected account is the original payment minus platform app fees and Capital withholding. For example, your connected account accepts a financing offer with a 15% withhold rate. If they accept five payments of 100 USD in a day, their total payout, after deducting your platform app fees and Capital withholding, is 405 USD. |
| **Reversal** | Stripe might reverse a payout or paydown transaction in the following situations:

- **Failed ACH transaction**: Occurs either when a connected account has insufficient funds for a manual paydown from their external bank account, or when their customer’s ACH payment fails during or after settlement.
- **Financing cancellation**: If a connected account cancels an accepted financing offer, Stripe reverses the initial payout.
- **Manual reversal**: While charge refunds don’t automatically trigger Capital paydown reversals, connected accounts can request a manual reversal by contacting [capital-support@stripe.com](mailto:capital-support@stripe.com). These requests are evaluated case-by-case and require details about the original charge, explanation of the refund reason, and any relevant supporting information. |

You can fetch transactions using either the [Financing Transactions](https://docs.stripe.com/api/capital/financing_transactions.md) API or the [Balance Transactions](https://docs.stripe.com/api/balance_transactions.md) API.

To get started, choose an API:

# Balance Transactions


Use this integration option if you already have an existing integration that uses the Balance Transactions API. It returns most transaction types, but lacks additional information such as a connected account’s [Financing Offer](https://docs.stripe.com/api/capital/connect_financing_object.md).

## Monitor Capital transactions

The following [balance transaction types](https://docs.stripe.com/reports/balance-transaction-types.md#financing_related) are related to financing for your connected accounts, including merchant cash advances and loans.

- Payout: `financing_payout`
- Paydown: `financing_paydown`
- Reversal: `financing_payout_reversal` or `financing_paydown_reversal`

### Payout

Each payout transaction has a [Balance Transaction](https://docs.stripe.com/api/balance_transactions.md) object with the type `financing_payout`. You can display payouts in any list of balance transactions or equivalent models you have in your platform’s UI.

### Paydown

Each payout transaction has a [Balance Transaction](https://docs.stripe.com/api/balance_transactions.md) object with the type `financing_paydown`. To display withholding transactions in your platform’s UI:

1. [Retrieve a balance transaction](https://docs.stripe.com/api/balance_transactions/retrieve.md), and filter by transaction type.
2. Provide the connected account’s account ID in the `Stripe-Account` header.

For example:

```curl
curl -G https://api.stripe.com/v1/balance_transactions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d type=financing_paydown
```

If you successfully retrieve the Balance Transaction’s [list](https://docs.stripe.com/api/balance_transactions/list.md), you receive a response such as:

```json
{
 "object": "list",
 "data": [
 {
  "id": "txn_abcdef123456",
  "object": "balance_transaction",
  "amount": -1550,
  "available_on": 123456789,
  "created": 123456789,
  "currency": "usd",
  "description": "Withheld funds from py_abcdef123456 to pay down flex loan flxln_abcdef123456",
  "exchange_rate": null,
  "fee": 0,
  "fee_details": [],
  "net": -1550,
  "reporting_category": "financing_paydown",
  "source": "cptxn_abcdef123456",
  "status": "available",
  "type": "financing_paydown"
 },
 ...
 ],
 "has_more": false,
 "url": "/v1/balance_transactions"
}
```

If this paydown occurred because of Capital withholding on the Stripe payment, the `description` field in the response refers to this Stripe payment. For example, a paydown might have a description of “Withheld funds from `ch_123abc` to pay down loan `flxln_123abc`”.

You can retrieve the applicable [Financing Transaction](https://docs.stripe.com/capital/reporting-and-reconciliation.md?fetch-transactions-api=financing-transactions) object by expanding the [source](https://docs.stripe.com/api/balance_transactions/object.md#balance_transaction_object-source) field of the Balance Transaction:

```curl
curl -G https://api.stripe.com/v1/balance_transactions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d type=financing_paydown \
  -d "expand[]=data.source"
```

When expanded, the `source` field displays the Financing Transaction details:

```json
{
 "object": "list",
 "data": [
 {
  "id": "txn_abcdef123456",
  "object": "balance_transaction",
  "source": {
     "id": "cptxn_1NAyja2eZvKYlo2CGPcd8FIX",
     "object": "capital.financing_transaction",
     "account": "acct_1032D82eZvKYlo2C",
     "created_at": 1684861854,
     "details": {
       "advance_amount": 10000,
       "currency": "usd",
       "fee_amount": 1000,
       "linked_payment": "ch_1032Rp2eZvKYlo2Cv6jPGmkF",
       "reason": "automatic_withholding",
       "total_amount": 11000,
       "transaction": {
         "charge": "ch_1032Rp2eZvKYlo2Cv6jPGmkF"
       }
     },
     ...
   },
  "status": "available",
  "type": "financing_paydown"
 },
 ...
 ],
 "has_more": false,
 "url": "/v1/balance_transactions"
}
```

### Reversal

Each reversal transaction has a [Balance Transaction](https://docs.stripe.com/api/balance_transactions.md) object with either type: `financing_payout_reversal` or `financing_paydown_reversal`. A reversal can occur because of a failed ACH transaction, financing cancellation, or a  manual reversal request. Providing reversal transactions serves two purposes:

- They can indicate canceled financing. If you included the original financing payout in your reports, include any reversals. This way, connected accounts can see that both transactions cancel each other out.
- They can return previously withheld funds to a connected account’s balance.

Omitting reversals from your reports can cause reconciliation problems for connected accounts, because the reports might reflect inaccurate financing.

## Provide reports

You can display paydowns in any list of balance transactions or equivalent models you might have in your platform’s UI. For example:

- **Existing reports**: For existing reports that show a connected account’s individual transactions (including the application fee or interchange costs), consider adding a withholding amount to the report.
- **New reports**: For new reports, show all withholding amounts for a specific time period. This helps your connected accounts see how much of their sales processing is being applied toward their financing. For payout reports, you might want to include a sum total amount withheld. This helps connected accounts reconcile their total incoming sales processing, minus the withholding (and any application fees you charge), to arrive at the payout amount they expect to see in their external bank account.

For more information, see [Payout reconciliation](https://docs.stripe.com/payouts/reconciliation.md).

## Testing

You can use a [sandbox](https://docs.stripe.com/capital/testing.md) to create financing offers in various states for connected accounts.

To create test scenarios:

1. Create a [sandbox](https://docs.stripe.com/sandboxes.md) in your test environment.

2. Generate test offers through the Capital Dashboard.

3. Update offers as delivered and simulate acceptance.

4. Test automatic payouts by approving and disbursing funds.

5. Test a payout or paydown. You can’t test a reversal because they’re initiated only by Stripe in specific circumstances.

   - Payouts:
     1. Verify automatic payouts occur after offer acceptance.
     2. Monitor `capital.financing_transaction.created` webhooks.
     3. Confirm payout transactions appear in your reporting.
   - Paydowns:
     1. Test automatic withholding by processing test payments.
     2. Simulate manual paydowns through the Capital Dashboard.
     3. Verify paydown transactions appear in your reporting integration.

6. Confirm transaction details appear correctly in your reporting interface.

7. Verify webhook handling for transaction notifications.

8. Test account links or embedded components (if implemented).

9. Validate transaction reconciliation processes.

After testing, manually send a live offer to verify your reporting before you enable automatic offers for all eligible connected accounts. To learn more, see [Testing](https://docs.stripe.com/capital/testing.md).


## See also

- [How Capital for platforms works](https://docs.stripe.com/capital/how-capital-for-platforms-works.md)
- [Set up capital](https://docs.stripe.com/capital/getting-started.md)
