Skip to main content
RapidDev - Software Development Agency
bubble-tutorial

How to Create Split Payments in Bubble

Split payments in Bubble use Stripe Connect to automatically divide a single customer payment between your platform and one or more recipients. You create Stripe Connected Accounts for each recipient, process the payment with transfer instructions, and Stripe handles the fund distribution. This is essential for marketplaces, service platforms, and any app where multiple parties share revenue from a single transaction.

What you'll learn

  • How to set up Stripe Connect for split payment processing
  • How to create Connected Accounts for payment recipients
  • How to process payments with automatic fund splitting
  • How to handle refunds in split payment scenarios
Book a free consultation
4.9Clutch rating
600+Happy partners
17+Countries served
190+Team members
Beginner5 min read20-25 minAll Bubble plans (Stripe Connect required)March 2026RapidDev Engineering Team
TL;DR

Split payments in Bubble use Stripe Connect to automatically divide a single customer payment between your platform and one or more recipients. You create Stripe Connected Accounts for each recipient, process the payment with transfer instructions, and Stripe handles the fund distribution. This is essential for marketplaces, service platforms, and any app where multiple parties share revenue from a single transaction.

Overview: Split Payments in Bubble

This tutorial shows how to split a single payment between your platform and one or more recipients using Stripe Connect in Bubble.

Prerequisites

  • A Bubble app with a payment flow
  • A Stripe account with Connect enabled
  • API Connector plugin installed
  • Understanding of REST API calls and backend workflows

Step-by-step guide

1

Enable Stripe Connect on your Stripe account

Log into your Stripe Dashboard. Go to Settings → Connect settings. Enable Connect. Choose your platform type (marketplace). Set the default commission/application fee. In your Stripe Dashboard under Developers → API keys, ensure you have your platform's Secret Key. This key is used for all Stripe Connect API calls from Bubble.

Expected result: Stripe Connect is enabled on your platform account with settings configured.

2

Create Connected Accounts for recipients

For each recipient (vendor, service provider, creator), create a Stripe Connected Account via the API Connector. POST to https://api.stripe.com/v1/accounts with type=express. After creation, generate an onboarding link by calling /v1/account_links with the account ID. Redirect the recipient to this link to complete identity verification. Store the Stripe account ID on their Bubble user or vendor record.

Expected result: Recipients have Connected Accounts with completed identity verification.

3

Process a payment with application fee (platform commission)

When a customer checks out, create a PaymentIntent with the application_fee_amount parameter. This automatically splits the payment: the application fee goes to your platform, the remainder goes to the connected account. Use the API Connector to POST to https://api.stripe.com/v1/payment_intents with amount, currency, application_fee_amount, and transfer_data[destination] set to the recipient's Connected Account ID.

Split payment request
1{
2 "amount": 10000,
3 "currency": "usd",
4 "application_fee_amount": 1500,
5 "transfer_data[destination]": "acct_recipient123",
6 "payment_method": "pm_card_visa",
7 "confirm": true
8}

Pro tip: application_fee_amount is in cents. For a $100 payment with 15% commission: amount=10000, application_fee_amount=1500.

Expected result: The payment is processed with the fee going to your platform and the remainder to the recipient.

4

Split payments between multiple recipients

For orders involving multiple vendors, use separate transfers instead of the application_fee approach. Process the full payment to your platform first, then create individual transfers to each recipient's Connected Account. POST to https://api.stripe.com/v1/transfers with amount, destination (connected account ID), and transfer_group (to link related transfers). Calculate each recipient's share minus your platform commission.

Expected result: A single customer payment is split between multiple recipients with the platform retaining its commission.

5

Handle refunds for split payments

When refunding a split payment, you need to reverse both the customer charge and the transfers. Use Stripe's refund API on the original PaymentIntent. Stripe automatically reverses the transfer to the connected account. For partial refunds, specify the amount and Stripe prorates the reversal. Update your Payment and Order records to reflect the refund status. For marketplace disputes, track which party is responsible.

Expected result: Refunds properly reverse both the customer charge and the recipient transfers.

Complete working example

Workflow summary
1SPLIT PAYMENTS WORKFLOW SUMMARY
2====================================
3
4STRIPE CONNECT SETUP:
5 Enable Connect in Stripe Dashboard
6 Create Connected Accounts for recipients
7 Store account IDs in Bubble database
8
9SINGLE RECIPIENT (application fee):
10 PaymentIntent:
11 amount: total in cents
12 application_fee_amount: commission in cents
13 transfer_data[destination]: recipient account ID
14 Result: fee platform, remainder recipient
15
16MULTIPLE RECIPIENTS (transfers):
17 Step 1: Charge full amount to platform
18 Step 2: Transfer to each recipient:
19 POST /v1/transfers
20 amount: recipient's share
21 destination: account ID
22 transfer_group: order ID
23
24COMMISSION CALCULATION:
25 Platform fee = total * commission_rate / 100
26 Recipient payout = total - platform fee
27 All amounts in cents
28
29REFUNDS:
30 POST /v1/refunds on original PaymentIntent
31 Stripe auto-reverses connected transfers
32 Update Payment + Order records

Common mistakes when creating Split Payments in Bubble

Why it's a problem: Specifying application_fee_amount as a percentage instead of cents

How to avoid: Calculate the fee amount: total_amount * commission_rate / 100, then pass the result in cents

Why it's a problem: Transferring to accounts that have not completed onboarding

How to avoid: Check the connected account's charges_enabled status before processing transfers

Why it's a problem: Not linking transfers with a transfer_group for multi-vendor orders

How to avoid: Always set transfer_group to the order ID when creating transfers for multi-recipient payments

Best practices

  • Verify connected accounts are fully onboarded before processing transfers
  • Use transfer_group to link related transfers for clean reporting and refund handling
  • Calculate fees in cents and double-check amounts before processing
  • Store Stripe transaction IDs on all payment and transfer records
  • Test thoroughly with Stripe's test mode before going live
  • Set up webhooks for transfer.paid and transfer.failed events
  • Implement a payout dashboard where recipients can see their earnings

Still stuck?

Copy one of these prompts to get a personalized, step-by-step explanation.

ChatGPT Prompt

I'm building a marketplace in Bubble.io where buyers pay once and the payment splits between the platform (15% commission) and the vendor. How do I implement this with Stripe Connect?

Bubble Prompt

Set up split payments for my marketplace. When a buyer purchases from a vendor, charge the full amount and automatically split: 15% to the platform, 85% to the vendor's Stripe Connected Account. Handle refunds that reverse both sides.

Frequently asked questions

What types of Stripe Connected Accounts should I use?

Express accounts are recommended — Stripe handles onboarding, identity verification, and payout management. Standard accounts give recipients more control but require more integration work.

Can I split a payment between more than two recipients?

Yes. Use the transfer approach: charge the full amount to your platform, then create individual transfers to each recipient's Connected Account.

When do recipients receive their payouts?

Stripe pays out to Connected Accounts on a rolling basis (typically 2 business days after the transfer). Recipients configure their payout schedule in their Stripe Express dashboard.

Can I change the commission rate per vendor?

Yes. Store the commission_rate on each Vendor record. Calculate the application_fee_amount dynamically based on each vendor's rate during checkout.

Can RapidDev help implement payment splitting for my platform?

Yes. RapidDev specializes in Stripe Connect integration with split payments, commission management, and payout dashboards for marketplace platforms in Bubble.

RapidDev

Talk to an Expert

Our team has built 600+ apps. Get personalized help with your project.

Book a free consultation

Need help with your project?

Our experts have built 600+ apps and can accelerate your development. Book a free consultation — no strings attached.

Book a free consultation

We put the rapid in RapidDev

Need a dedicated strategic tech and growth partner? Discover what RapidDev can do for your business! Book a call with our team to schedule a free, no-obligation consultation. We'll discuss your project and provide a custom quote at no cost.