Collecting Transaction Fees

With Stripe Connect, you can collect a transaction fee from your users every time you make a charge on their behalf. If you need help, check out our answers to common questions or chat live with our developers in #stripe on freenode.

On once-off charges

To charge a fee on top of Stripe's fees for a once-off charge, all you need to do is pass in the optional application_fee parameter (in cents) when creating the charge.

The resulting charge's balance transaction will include a detailed fee breakdown:

{
  "object": "balance_transaction",
  "type": "charge",
  "amount": 1000,
  "currency": "usd",
  "fee": 182,
  ...
  "fee_details": [
    {
      "type": "stripe_fee",
      "amount": 59,
      "application": null,
      "currency": "usd"
    },
    {
      "type": "application_fee",
      "amount": 123,
      "application": "ca_32D88BD1qLklliziD7gYQvctJIhWBSQ7",
      "currency": "usd"
    }
  ]
}
       

Notes:

  • The ACCESS_TOKEN must be an OAuth key received through the Stripe Connect flow, not a secret key.
  • The application_fee parameter must be a positive integer.
  • An application_fee will be capped at the total transaction amount minus any Stripe fees—no error will be thrown for application_fees that are automatically capped.

On subscriptions

When creating or updating a subscription, you can specify an application_fee_percent parameter as an integer between 1 and 100. Each billing period, we'll take that percentage off the final invoice amount (including any bundled invoice items, discounts, or account balance adjustments) as an fee for your application, on top of any Stripe fees charged.

For example, in a scenario where: the subscription per billing cycle is $100, there's a $10 invoice item and 50% coupon on the invoice, and the application_fee_percent is 10%, the total application fee taken will be $5.50 (($100 + $10) * 50% * 10%).

Prorations

Invoices created out-of-band of a subscription billing period will not have the application_fee_percent applied to them. This includes proration invoice items that are immediately invoiced—you'll need to set an application_fee on the invoice directly for the application fee amount you'd like to charge (see below).

If you're not planning to create any extra invoices, prorations will be automatically bundled into the next billing cycle and will automatically inherit the application_fee_percent set on the updated subscription.

Invoices

If you'd like to charge a flat or dynamic fee, or otherwise any fee that can't be automatically calculated with application_fee_percent, you can add an application_fee directly on the invoice (usually upon getting an invoice.created webhook, although you can create an invoice for pending invoice items and set an application fee on it).

The application_fee set will override any application fee amount calculated with application_fee_percent, and will be capped if it ends up exceeding the amount of the final charge created.

Permissions

You cannot update or cancel a subscription that was not created by your application. You also can't add an application_fee to an invoice that was not created by your application or that contains invoice items belonging to another application.

Flow of Funds

When you specify an application fee on a charge (either by creating the charge, or through recurring billing), the fee amount will be transferred to your (the application owner's) Stripe account. The charge amount, less Stripe fees and application fees, will be deposited into the connected user's account.

For example, if a charge amount of $10 was made (as in the example above), $1.23 will be transferred to your account, and $8.18 cents ($10 - $0.59 - $1.23) will be transferred to your user's account.

Transfers

Any application fees earned will show in the Stripe account that created the application. They are transferred on the normal 7-day rolling basis as regular Stripe charges, and are viewable in the Collected Fees section of the dashboard.

Refunding Fees

When a charge is refunded, the end customer will always be refunded the full amount of the charge. Stripe will never automatically refund the application fee—you must explicitly refund the application fee, or your connected user (the account the charge was created on) will eat the cost of the fee.

You can refund application fees incurred by your application in several ways: