# Collect application fees

Charge merchants a transaction fee for payments through your platform.

As a platform, you can charge your connected accounts a portion of each transaction in the form of application fees. You can set application fee pricing in the following ways:

- Use the [Platform Pricing Tool](https://docs.stripe.com/connect/platform-pricing-tools.md) to set and test pricing rules. This no-code feature in the Stripe Dashboard is currently only available for platforms responsible for paying Stripe fees.
- Specify application fees directly in a [PaymentIntent](https://docs.stripe.com/api/payment_intents/object.md). Fees set with this method override the pricing logic specified in the Platform Pricing Tool.

> #### Review fee collector settings
> 
> Fee collection and reporting for direct charges differs based on your [pricing model](https://docs.stripe.com/connect/saas.md#monetization) and how you configure [fee responsibility](https://docs.stripe.com/connect/accounts-v2/connected-account-configuration.md#application-fee-behavior). Make sure your application fee aligns with this behavior.

Your platform can take an application fee with the following limitations:

- The value of `application_fee_amount` must be positive and less than the amount of the charge. The application fee collected is capped at the captured amount of the charge.
- There are no additional Stripe fees on the application fee itself.
- In line with Brazilian regulatory and compliance requirements, platforms based outside of Brazil with Brazilian connected accounts can’t collect application fees through Stripe.
- The currency of `application_fee_amount` depends upon a few [multiple currency](https://docs.stripe.com/connect/currencies.md) factors.

The resulting charge’s [BalanceTransaction](https://docs.stripe.com/api.md#balance_transaction_retrieve) includes a detailed fee breakdown of both the Stripe and application fees. To provide a better reporting experience, collecting a fee generates an [ApplicationFee](https://docs.stripe.com/api/application_fees/object.md) object. Use the `amount` property on the `ApplicationFee` object for reporting.

You can view application fees in the [Collected fees](https://dashboard.stripe.com/connect/application_fees) section of the Dashboard.

> Application fees for direct charges are created asynchronously by default. If you expand the `application_fee` object in a charge creation request, the application fee is created synchronously as part of that request. Only expand the `application_fee` object if you must, because it increases the latency of the request.
> 
> To receive notifications of asynchronously created `ApplicationFee` objects, listen for the [application_fee.created](https://docs.stripe.com/api/events/types.md#event_types-application_fee.created) webhook event.

## Net settlement

By default, Stripe uses *net settlement* for payments. That means we deduct your application fees from each transaction before its funds settle in the connected account’s balance. For example, for a charge of 10 USD with a 1.23 USD application fee, Stripe transfers 1.23 USD to your platform account and 8.77 USD to the connected account.

If you process payments in multiple currencies, read [how Connect handles currencies](https://docs.stripe.com/connect/currencies.md).

## Gross settlement  (Private preview)

Alternatively, you can configure individual connected accounts to use *gross settlement*. That means we settle the full amount of each transaction to the connected account and collect your platform fees later. Platform fees include application fees, [network cost passthrough fees](https://docs.stripe.com/connect/network-cost-passthrough-platforms.md), and Stripe passthrough fees. Each month, Stripe records platform fees as they accrue, then invoices the connected account or collects payment from their external bank account. The bank account used to pay platform fees can be the same as the payout bank account, or a separate account.

> Using gross settlement introduces a risk that your connected accounts fail to pay fees at the end of the month.

### Eligibility

Gross settlement requires the following conditions:

- Your platform charges your connected accounts at least one of the following types of platform fees: application fees, network cost passthrough fees, or Stripe passthrough fees.
- Your platform and the connected account must be in the US or Canada.
- The connected account must use the [Accounts v2](https://docs.stripe.com/connect/accounts-v2.md) API and must have both the merchant and customer *configurations* (Account configurations represent role-based functionality that you can enable for accounts, such as merchant, customer, or recipient). If your connected accounts use the Accounts v1 API and you want to use gross settlement, contact the [sales team](https://stripe.com/contact/sales) to migrate them to v2.

### Interested in gross settlement for platforms?

Enter your email and we'll reach out if you're eligible for the private preview.

```bash
curl https://docs.stripe.com/preview/register \
  -X POST \
  -H "Content-Type: application/json" \
  -H "Referer: https://docs.stripe.com/connect/saas/tasks/app-fees" \
  -d '{"email": "EMAIL", "preview": "gross_settlement_for_platforms_preview"}'
```

### Enable gross settlement

You can turn on gross settlement for a connected account either from the [connected account’s details page](https://dashboard.stripe.com/connect/accounts) in your Dashboard or by creating a [Fee Config Scheme](https://docs.stripe.com/api/fee-config-scheme.md).

#### Dashboard

1. In the **Fee Collection** section, select **Edit**.
2. Change the timing from **Immediate fee collection** to **End of billing window**.
3. Choose whether to automatically debit or send an invoice to your connected account at the end of the billing window.
4. If you select **Bank Debit**, select an existing bank account to debit funds. You can also select **Add** or **Request a new bank account** to pay fees.
5. Confirm billing preferences, including billing email, billing cycle, and billing date.
   - Successful debit: Stripe sends a receipt to the billing email after funds settle to your platform account.
   - No bank account or failed debit: Stripe sends an invoice to the billing email instead.
6. Choose a **Start date** at least one day in the future. The change takes effect at midnight UTC of the selected date.

#### API

To turn on gross settlement programmatically, create a [FeeConfigScheme](https://docs.stripe.com/api/fee-config-scheme/create.md). Set the `collection_timing` parameter to `end_of_billing_window` and specify values for the parameters in the `end_of_billing_window` hash.

> #### Start time
> 
> The `starts_at` parameter must be exactly midnight UTC on a future date, except when turning on `end_of_billing_window` fee collection for the first time for an account that doesn’t have [network cost passthrough](https://docs.stripe.com/connect/network-cost-passthrough-platforms.md) enabled.

```curl
curl https://api.stripe.com/v1/fee_configs/collection/schemes \
  -u "<<YOUR_SECRET_KEY>>:" \
  -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \
  -d starts_at=1738454400 \
  -d collection_timing=end_of_billing_window \
  -d "end_of_billing_window[billing_delay_days]=3" \
  -d "end_of_billing_window[billing_window]=monthly" \
  -d "end_of_billing_window[collection_method]=charge_automatically"
```

To automatically debit your connected account at the end of the month, collect bank account information using [ACH direct debit](https://docs.stripe.com/payments/ach-direct-debit/set-up-payment.md) (in the US) or [ACSS pre-authorized debit](https://docs.stripe.com/payments/acss-debit/set-up-payment.md) (in Canada). Then, set the ID of the resulting `PaymentMethod` as the `gross_settlement.payment_method` in the account’s `merchant` configuration:

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "configuration": {
        "merchant": {
            "gross_settlement": {
                "payment_method": "pm_xxxx"
            }
        }
    }
  }'
```

> #### Fixed billing period
> 
> Regardless of the start date, the billing aggregation window always aligns with the calendar month, starting at midnight in the UTC time zone.

### Set application fee pricing

You can continue to set application fee pricing in the Dashboard using the [platform pricing tool](https://docs.stripe.com/connect/platform-pricing-tools.md) or programmatically when creating a charge, payment intent, subscription, or invoice.

### End of month billing

Stripe automatically creates an invoice at the end of the month to charge a connected account’s payment method for accrued platform fees. You can customize the invoice on the [Invoicing settings page](https://dashboard.stripe.com/settings/billing/invoices/general) of the Dashboard.

### Reporting and reconciliation

Use the following reports to track platform fees collected through gross settlement.

- [Connect margin report](https://docs.stripe.com/connect/margin-reports.md): View platform fees charged to your connected accounts, regardless of whether fees are collected immediately (net settlement) or at the end of the billing window (gross settlement).
- [Itemized balance change from activity report](https://docs.stripe.com/reports/balance.md): View platform balance changes over time, including when Stripe fees are deducted and platform fees are collected via an invoice at the end of the billing window.
- [Application Fee](https://docs.stripe.com/api/application_fees.md): Tie each gross-settled application fee to a specific invoice for reconciliation. Application fees are visible as soon as they’re ledgered, but aren’t linked to an invoice ID until the invoice is generated at the end of the billing window.

You can use data from these reports to provide gross-settled platform fee details to your connected accounts.

## Next steps

- If you plan to charge a subscription fee for using your platform, learn how to use Billing to [charge a service fee](https://docs.stripe.com/connect/saas/tasks/service-fee.md).
- When your connected accounts can accept payments and you’ve configured your monetization, [set up payouts](https://docs.stripe.com/connect/saas/tasks/payout.md) so your connected account can transfer their Stripe balance to their external account.
- [Handle application fee refunds](https://docs.stripe.com/connect/saas/tasks/refunds-disputes.md)
