# Handle refunds and disputes Manage refunds and disputes in your marketplace. This guide is specific to marketplaces using indirect 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). ## 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 favour of the business. | | Disputed amount | The charge amount being disputed. | | Dispute fee | A flat fee that Stripe charges when receiving a dispute. | | Enquiry 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. | ## Indirect charges For payments using indirect charges, with or without `on_behalf_of`, Stripe always debits refunds, disputed amounts and associated fees from your platform balance. In most cases, you can recover refunds and disputed funds from the connected account by reversing the transfer. Your platform balance is automatically debited for the disputed amount and fee. If a connected account’s balance becomes negative (due to a dispute or refund), Stripe holds a reserve on its available balance. For accounts in the US or Canada, if [payments.debit_negative_balances](https://docs.stripe.com/api/accounts/object.md#account_object-settings-payouts-debit_negative_balances) is set to `true`, Stripe automatically attempts to debit the connected account’s external account to cover the negative balance. Additionally, some actions, such as refunds and chargebacks, create negative transactions in your Stripe account. When handling these transactions, Stripe attempts to avoid causing negative balances. Learn more about [accounting for negative balances](https://docs.stripe.com/connect/account-balances.md#accounting-for-negative-balances). ## Chargebacks and responsibilities Your platform is ultimately liable for chargebacks and related costs for both destination charges and separate charges and transfers. When your platform is 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), card networks such as Visa and Mastercard monitor your dispute rates. If you exceed their thresholds, you could enter monitoring programmes that might impose fines until you lower your dispute levels. For more details on these monitoring programmes, see the Stripe [monitoring programmes](https://docs.stripe.com/disputes/monitoring-programs.md). ### Chargeback risks Understanding chargeback risks is essential to protect your platform’s finances and meet evidence submission deadlines: - **Platform balance impact**: Chargebacks debit your platform’s balance, creating immediate financial implications. - **Transfer reversal timing**: Delaying the reversal of transfers after a chargeback puts your platform at risk for losses. - **Evidence submission deadlines**: Missing evidence submission deadlines can lead to an automatic chargeback loss. ## Best practices for disputes and chargebacks To manage disputes and chargebacks effectively, you can implement best practices that focus on preventing disputes (proactive approach) or resolving disputes when they occur (reactive approach). #### Protect against disputes (proactive approach) Follow these guidelines to minimise the risk of disputes and chargebacks: - Understand what your sellers are offering. Make sure that they don’t overpromise (for example, health products that guarantee results) or deliver substandard products, because most chargebacks occur when products don’t meet expectations. - To combat fraud, consider using [Radar for Fraud Teams](https://stripe.com/radar/fraud-teams) teams to: - Set velocity rules regarding transaction attempts and block suspicious activity. - Collect thorough information during checkout, such as ZIP codes and CVV, to inform your Radar model. - Communicate with buyers about shipping timelines, refunds and returns. Implement measures to make sure that seller posts remain accurate and authentic and set proper expectations for transaction processes. - In traditional marketplaces selling goods, platforms that provide end-to-end management of their platform (payments, shipping, sales and so on) are preferable as the merchant of record. This visibility allows you to monitor delivery status and product condition. If that’s not feasible, consider designating the seller as the merchant of record using the [on_behalf_of](https://docs.stripe.com/connect/charges.md#on_behalf_of) parameter. - Delay payouts for new businesses during a predefined period (for example, two weeks) to mitigate risks associated with fraudulent businesses. If businesses request faster payouts, ask them to pass through [Stripe Identity](https://docs.stripe.com/identity.md) first. - Educate your connected accounts on managing disputes effectively and encourage them to maintain adequate account balances to reduce chargebacks. - Conduct a balance check before initiating a refund to make sure that the connected account has sufficient funds. If needed, you can charge the stored payment method to cover the refund before processing it. #### Resolve disputes (reactive approach) Follow these guidelines to effectively respond to disputes and chargebacks after they occur: - If connected accounts have negative balances, Stripe can attempt to debit their external accounts if [payments.debit_negative_balances](https://docs.stripe.com/api/balance-settings/object.md?api-version=preview#balance_settings_object-payments-debit_negative_balances) is set to `true`. Use Connect embedded components to allow them to respond to disputes directly. - Create a form for businesses to upload information and evidence to counter a dispute. Replicate the [dispute.evidence](https://docs.stripe.com/api/issuing/disputes/create.md?api-version=2025-07-30.preview&rds=1#create_issuing_dispute-evidence) field in the Stripe API to understand what information to collect. - Set up webhooks for `charge.dispute.created` events to automate your response and streamline the process. Stripe debits dispute amounts and fees from your platform account if you use [destination charges](https://docs.stripe.com/connect/destination-charges.md) and [separate charges and transfers](https://docs.stripe.com/connect/separate-charges-and-transfers.md). You can manage disputes through the Dashboard or the [Disputes API](https://docs.stripe.com/api/disputes.md). We recommend setting up [a webhook](https://docs.stripe.com/webhooks.md) to listen to [dispute created events](https://docs.stripe.com/api/events/types.md#event_types-charge.dispute.created). When that happens, you can attempt to recover funds from the connected account by reversing the transfer through the [Dashboard](https://dashboard.stripe.com/test/transfers) or by [creating a transfer reversal](https://docs.stripe.com/api/transfer_reversals/create.md). If the connected account has a negative balance, Stripe attempts to [debit its external account](https://docs.stripe.com/connect/account-balances.md#automatically-debit-connected-accounts) if `debit_negative_balances` is set to `true`. If you challenge the dispute and win, you can transfer the funds that you previously reversed back to the connected account. If your platform has an insufficient balance, the transfer fails. Prevent insufficient balance errors by [adding funds to your Stripe balance](https://docs.stripe.com/get-started/account/add-funds.md). > Retransferring a previous reversal is subject to [cross-border transfer restrictions](https://docs.stripe.com/connect/account-capabilities.md#transfers-cross-border), meaning you might have no means to repay your connected account. Instead, wait to recover disputed cross-border payment transfers for destination charges with `on_behalf_of` until after a dispute is lost. To automate dispute management, browse [Fraud Stripe Apps](https://marketplace.stripe.com/categories/fraud) on the App Marketplace. ## Refunds How you handle refunds depends on whether you use [destination charges](https://docs.stripe.com/connect/marketplace/tasks/refunds-disputes.md#destination-charges) or [separate charges and transfers](https://docs.stripe.com/connect/marketplace/tasks/refunds-disputes.md#separate-charges-and-transfers). Regardless of the charge type, refunds come from your platform’s balance. You can issue refunds through the Dashboard or the [Refunds API](https://docs.stripe.com/api/refunds.md). To recover funds from the connected account for the refund, you can process a [transfer reversal](https://docs.stripe.com/api/transfer_reversals/create.md) to reverse the transaction associated with the original charge, moving funds back to your balance. ### Destination charges For destination charges, use the Payment Intents API to issue refunds against the [most recently created charge](https://docs.stripe.com/payments/payment-intents/verifying-status.md#identifying-charges). When refunding a charge with `transfer_data[destination]`, the destination account retains the funds by default, which leaves your platform account to cover the negative balance from the refund. To pull back the funds from the connected account, set the `reverse_transfer` parameter to `true` when creating the refund: #### curl ```bash curl https://api.stripe.com/v1/refunds \ -u <>: \ -d charge="{CHARGE_ID}" \ -d reverse_transfer=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 transfer is reversed; otherwise, a proportional amount of the transfer is reversed. ### Separate charges and transfers For separate charges and transfers, you can refund charges created on your platform using its *secret key* (Stripe APIs use your secret API key to authenticate requests from your server; you can use this key to make any API call on behalf of your account, such as creating a charge or performing a refund). However, refunding a charge doesn’t affect any associated transfers. It’s your platform’s responsibility to reconcile any amount owed back by reducing subsequent transfer amounts or by [reversing transfers](https://docs.stripe.com/connect/marketplace/tasks/refunds-disputes.md#reversing-transfers). > #### Refunds with funds segregation > > The private preview funds segregation feature uses allocated funds for refunds before debiting your platform’s payments balance, providing clean accounting separation. You can issue refunds to pay customers back for returned goods or to compensate for unsatisfactory services. ### Types of charge refunds Stripe handles refunds for the following charge types: - **For destination charges and separate charges and transfers**: If your platform’s balance doesn’t have sufficient funds when issuing the refund, the refund status is set to `pending`. After enough funds are available, Stripe processes pending refunds and updates their status to `successful`. - **For standard pricing businesses**: Fees might apply for refunds when bank transfers are used. For all other payment methods, there are no fees for issuing refunds; however, processing fees from the original transaction aren’t returned. - **For custom pricing businesses**: Refund fees might vary based on your fee schedule with Stripe. ## 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 US$100 with a US$5 application fee that you refund US$40 (40%) refunds US$2 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. ## 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)