Funds segregation for separate charges and transfersPrivate preview
Track funds that are designated for transfer to connected accounts.
Funds segregation lets you allocate funds from separate charges and transfers to a holding state on your platform account before transferring them to connected accounts. Funds in this state don’t appear in your platform balance, and you can only transfer them to a connected account.
You can view the allocated balance from a specific payment, which lets you track the complete flow of those funds.
Allocating funds prevents them from being used for any other purpose, such as:
- Platform-level automatic payouts
- Unrelated refunds and chargebacks
- Stripe fees
- Other debits from your platform’s payments balance
Available in:
Prerequisites and limitations
Before implementing funds segregation, review these requirements and limitations:
Requirements
- Your platform must be responsible for negative balances on connected accounts.
- You must include the preview header
allocated_in all API requests.funds_ preview=v1
Limitations
- The Stripe Dashboard doesn’t identify allocated funds. Any balances and transactions in the Dashboard might combine allocated and other funds.
- All fee billing is asynchronous; fees might not display in line with the payment. Fees are later billed to the platform’s Stripe balance.
- You can only view the details of allocated funds by expanding individual
Chargeobjects. - Avoid using the
automatic_parameter. Allocated funds can only be derived from payments made with Visa, Mastercard, Discover, American Express, and Swish payment methods.payment_ methods - You can’t use funds segregation with overcapture, multicapture, or incremental authorization.
- You can’t use cross-border payouts with funds segregation in the US. You can only transfer allocated funds to US connected accounts.
Create payments with allocated funds
To use funds segregation, create a PaymentIntent with allocated_ set to enabled: true. At payment capture, Stripe allocates the funds.
You can track the flow of the allocated funds by specifying a unique transfer_group value.
After successful capture, the full amount becomes available (subject to payment method settlement timing) as allocated funds that you can transfer to a connected account.
View allocated funds for a specific payment
To see the balance of allocated funds from a specific payment, expand the allocated_ property of the charge:
{ "id": "{{PaymentIntent ID}}", "object": "payment_intent", "latest_charge": { "id": "{{Charge ID}}", "object": "charge", "allocated_funds": { "enabled": true, "balance": { "available": 0, "pending": 10000, "currency": "eur" } } } }
Transfer allocated funds
When you transfer allocated funds, you must set the source_transaction parameter to the ID of the associated charge and the destination parameter to the ID of the associated connected account.
If you specify an application fee amount, that amount is debited from the allocated funds and credited to your platform’s payments balance. The create transfer response includes details about the application fee.
You don’t need to transfer the full payment amount in a single transfer or to a single connected account. You can split allocated funds across multiple transfers, as long as the total doesn’t exceed the original payment amount.
The transfer response includes details about the application fee when specified:
{ "id": "{{Transfer ID}}", "object": "transfer", "amount": 3800, "currency": "eur", "destination": "{{Connected Account ID}}", "source_transaction": "{{Charge ID}}", "application_fee_amount": 200, "application_fee": { "id": "{{Application Fee ID}}", "object": "application_fee", "amount": 200, "currency": "eur", "fee_source": { "type": "transfer", "transfer": "{{Transfer ID}}" } } }
Collecting application fees on transfers directly moves funds from the allocated funds to the platform account balance. This avoids unnecessary foreign exchange (FX) conversions when the platform’s currency and the connected account’s currency are different, because the application fee never leaves the platform account.
Handle refunds and disputes
Refunds and disputes for payments with allocated funds draw from those allocated funds before using funds from your platform account balance. Stripe only debits from your platform account balance if the associated payment’s remaining allocated funds can’t cover the refund or dispute.
For example, if you transferred 60 EUR from a 100 EUR payment and then process a 100 EUR refund:
- 40 EUR comes from remaining allocated funds.
- 60 EUR comes from your platform’s account balance.
Dispute fees are always debited from your platform account balance, and don’t affect allocated funds.
You can use Transfer Reversals to return funds from a connected account to the allocated funds balance before processing a refund or while awaiting the outcome of a dispute:
Transfer reversals always move funds into an allocated state if the payment was originally allocated.
If you set the refund_ parameter to true, Stripe also debits the application fee amount from your platform’s payments balance and returns it to the allocated state.
If you reverse a transfer of allocated funds that are involved in a dispute, they remain allocated regardless of the dispute’s outcome. You can’t recover dispute fees from them.
If the dispute is won, you can transfer the allocated funds back to your connected account. If the dispute is lost, then you can contact Stripe to request that we unallocate the funds and add them to your platform account balance.
Transfer allocated funds to your platform account balance
You can use Balance Transfers to transfer funds from your allocated funds to your platform account balance. This is useful for clearing a hanging balance or collecting a platform fee at a time other than immediately at the time of the charge or transfer. The selected currency must match the currency that the charge was settled in.
For example, a hanging allocated funds balance can occur if a customer dispute was first refunded from your platform account balance, and you later reversed the transfer from the seller. In this scenario, the clawed-back funds are in your allocated funds, but since the customer has already been refunded, you would likely want to move these allocated funds to your platform account balance.
Test funds segregation
You can only test allocated funds in Sandbox environments, not in test mode. Refer to the testing guide to simulate payments for your integration.