# Handle refunds and disputes Manage funds movement for payment reversals. This guide is specific to SaaS platforms using direct charges, and outlines your responsibilities for managing disputes, chargebacks, and refunds. Before you begin, see [How disputes work](https://docs.stripe.com/disputes/how-disputes-work.md). Sometimes businesses must reverse successful payments due to a customer return or dispute. Moving funds back to the correct parties depends on your charge type. ## Disputes terminology | Term | Description | | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | | Dispute | A claim filed by a cardholder or issuing bank regarding a payment. Disputed funds are typically withdrawn immediately and returned only if resolved in favor of the business. | | Disputed amount | The charge amount being disputed. | | Dispute fee | A flat fee that Stripe charges when receiving a dispute. | | Inquiry or retrieval | A preliminary phase initiated by some card networks (for example, American Express) before a claim becomes a formal dispute. Resolving the situation at this stage can avoid dispute fees. | ## Issue refunds Similarly to how platforms can create charges on connected accounts, they can also create refunds of charges on connected accounts. [Create a refund](https://docs.stripe.com/api.md#create_refund) using your platform’s secret key while [authenticated](https://docs.stripe.com/connect/authentication.md#stripe-account-header) as the connected account. Application fees aren’t automatically refunded when issuing a refund. Your platform must explicitly refund the application fee or the connected account—the account on which the charge was created—loses that amount. You can refund an application fee by passing a `refund_application_fee` value of `true` in the refund request: ```curl curl https://api.stripe.com/v1/refunds \ -u "<>:" \ -H "Stripe-Account: {{CONNECTEDACCOUNT_ID}}" \ -d "charge={{CHARGE_ID}}" \ -d refund_application_fee=true ``` By default, the entire charge is refunded, but you can create a partial refund by setting an `amount` value as a positive integer. If the refund results in the entire charge being refunded, the entire application fee is refunded. Otherwise, a proportional amount of the application fee is refunded. Alternatively, you can provide a `refund_application_fee` value of `false` and [refund the application fee](https://docs.stripe.com/api.md#create_fee_refund) separately. ## Refund application fees Payment refunds don’t return the application fee to the connected account by default. When you create a refund, you can return the application fee by setting `refund_application_fee` to true. The application fee refund amount is proportional to the payment refund amount. For example, an original payment of 100 USD with a 5 USD application fee that you refund 40 USD (40%) refunds 2 USD of the application fee. #### curl ```bash curl https://api.stripe.com/v1/refunds \ -u <>: \ -d charge="{CHARGE_ID}" \ -d reverse_transfer=true \ -d refund_application_fee=true \ ``` If you don’t set `refund_application_fee`, you can refund the application fee separately as a transfer to the connected account. ## Best practices for dispute and chargeback management To manage disputes and chargebacks and protect your platform, consider implementing the following best practices: - Implement automated systems that listen to webhook events to alert you about refunds and disputes related to charges. - Clearly define responsibilities for disputes and refunds in your agreements with connected accounts. - Maintain [reserves for accounts](https://docs.stripe.com/connect/connected-account-reserves.md) with high dispute rates, and consider holding funds for high-risk transactions until the time period for disputes is over. - Provide clear guidance to connected accounts on gathering and submitting compelling evidence. - Establish standard evidence collection processes for disputes and monitor real-time notifications. - Use [Radar rules](https://docs.stripe.com/connect/radar.md) to prevent some disputes and automatically resolve others without incurring fees. ## Accept or challenge disputes For connected accounts that use [direct charges](https://docs.stripe.com/connect/direct-charges.md), Stripe debits the disputed amount from the connected account’s balance. However, dispute fee responsibilities depend on the `controller.losses.payments` and `controller.fees.payer properties`. | Controller property | Dispute fee responsibility | | ---------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------- | | `controller.losses.payments = "Stripe"` and `controller.fees.payer = "account"` | Dispute fees are charged to connected accounts, and Stripe covers the loss if the amount can’t be debited. | | `controller.losses.payments = "Stripe"` and `controller.fees.payer = "application"` | Dispute fees are charged to the connected account, and Stripe is responsible for covering the loss if the amount can’t be debited. | | `controller.losses.payments = "application"` and `controller.fees.payer = "application"` | The platform is charged dispute fees and is responsible for covering the loss if the amount can’t be debited. | ### Accounts that handle their own disputes For connected accounts where your platform isn’t liable for negative balances (including Standard accounts), these accounts act as the *merchant of record* (The legal entity responsible for facilitating the sale of products to a customer that handles any applicable regulations and liabilities, including sales taxes. In a Connect integration, it can be the platform or a connected account). This means disputes and chargebacks are filed against them, and we deduct the total amount for disputes and fees directly from their balance. Learn how to [comply with payment network merchant rules](https://docs.stripe.com/connect/merchant-of-record.md). ### Accounts where the platform is liable For connected accounts where your platform is *liable for negative balances* (The responsibility for managing risk and recovering negative balances on connected accounts. Stripe or the Connect platform can be liable for negative balances on connected accounts) (including Custom and Express accounts), your platform is responsible for any disputes related to those accounts. In this case, Stripe debits the disputed amount from the connected account’s balance and the dispute fee from your platform balance. However, your platform is ultimately liable. If Stripe can’t debit the disputed amount from the connected account, Stripe debits it from your platform account. For additional details, refer to the [fee behaviors for payer values](https://docs.stripe.com/connect/direct-charges-fee-payer-behavior.md#fee-payer-behaviors) and learn how to set [account controller properties](https://docs.stripe.com/connect/migrate-to-controller-properties.md?migrate-to-controller-properties-samples=specifying-all-properties#account-controller-properties) using the Accounts API. ## Provide Connect embedded components to allow your connected accounts to respond to disputes If your connected accounts don’t have access to the full Stripe Dashboard, provide them with the following Connect embedded components to help them respond to disputes without leaving your website: - [Payments component](https://docs.stripe.com/connect/supported-embedded-components/payments.md): Displays all payments and disputes for an account. - [Payment details](https://docs.stripe.com/connect/supported-embedded-components/payment-details.md): Displays detailed information about a specific payment as an overlay, similar to what appears when a user clicks a payment row in the payments component. - [Disputes list component](https://docs.stripe.com/connect/supported-embedded-components/disputes-list.md): Displays all disputes associated with an account. - [Disputes for a payment component](https://docs.stripe.com/connect/supported-embedded-components/disputes-for-a-payment.md): Displays disputes for a specific payment, which allows you to integrate dispute management features into your payments UI. 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. ## See also - [Respond to disputes](https://docs.stripe.com/disputes/responding.md) - [Dispute categories](https://docs.stripe.com/disputes/categories.md) - [Prevent disputes and fraud](https://docs.stripe.com/disputes/prevention.md) - [Use Radar with Connect](https://docs.stripe.com/connect/radar.md)