Stripe Connect split payments
The layer on top of Stripe Connect
Stripe Connect split payments and payouts need more than transfers: rules, a ledger, refund reversal and reconciliation. FractionalPay is not a Stripe Connect alternative that replaces it, it is the layer your team would otherwise build on top.
Keep your Connect platform, your connected accounts and your onboarding. Point FractionalPay at the same account, map each beneficiary to its connected account id, and stop maintaining split logic in your own codebase.
- Beneficiaries mapped to your existing connected accounts
- Splits, ledger and payout schedules through one API
- Stripe stays the rail, nothing to migrate
POST /v1/beneficiaries
201 Created
curl -X POST https://fractionalpay.com/api/v1/beneficiaries \
-H "Authorization: Bearer fp_test_4eC39H..." \
-H "Idempotency-Key: d1fa617a-order" \
-H "Content-Type: application/json" \
-d '{
"name": "Harbor Tools Co",
"email": "[email protected]",
"type": "seller",
"external_ref": "seller_2291",
"country": "US",
"currency": "USD",
"provider_account_id": "acct_1Q7ZxT2eHarb"
}'
{
"id": 2291,
"object": "beneficiary",
"name": "Harbor Tools Co",
"email": "[email protected]",
"type": "seller",
"external_ref": "seller_2291",
"country": "US",
"currency": "USD",
"provider_account_id": "acct_1Q7ZxT2eHarb",
"tax_status": null,
"status": null,
"created": 1792062760
}
Build it yourself
What you would build on Stripe Connect by hand
Connect gives engineers solid primitives: connected accounts, destination charges, separate charges and transfers, transfer reversals and payouts to bank accounts. Paying several parties correctly from every charge means writing the rest yourself. This is the list teams usually discover one incident at a time.
None of this is exotic, and a strong team can build all of it. The question is whether your engineers should own it for the life of the product. FractionalPay ships these six pieces behind the payouts API and a dashboard for finance, priced as a flat plan on pricing.
-
1
A split rule engine
Percent and fixed lines, priorities, matching on product or metadata, a remainder party for rounding, and versioning so old charges keep the rule they were split by.
-
2
A business ledger
Double-entry and append-only, with an account per beneficiary, so you can say what each party earned from each charge and what they were owed on any date.
-
3
Multi-party refunds
Reversing a partial refund or a dispute across three or four shares in proportion, then carrying a negative balance when the share was already transferred.
-
4
Payout scheduling
Availability dates, holds for return windows, minimum amounts, approvals above a threshold and retries for failed transfers.
-
5
Idempotent event intake
Webhook events arrive twice or out of order. Each one needs a key so a single charge never produces two splits or two transfers.
-
6
Daily reconciliation
Matching your ledger against balance transactions and flagging what differs before finance finds it at month end.
Side by side
Stripe Connect alone vs Stripe Connect with FractionalPay
This is not a contest between the two. Stripe Connect is in both columns. The table shows what Connect provides on its own and what you get when FractionalPay sits on top of the same account.
-
Payment processing and money movement
- Stripe Connect + FractionalPay
- Stripe, unchanged
- Stripe Connect alone
- Stripe
-
Connected accounts and onboarding
- Stripe Connect + FractionalPay
- Your existing accounts
- Stripe Connect alone
- Yes
-
Transfers to connected accounts
- Stripe Connect + FractionalPay
- Sent through your account
- Stripe Connect alone
- Yes
-
One charge split between many parties
- Stripe Connect + FractionalPay
- Yes
- Stripe Connect alone
- Code you write
-
Rule engine with priorities and remainder
- Stripe Connect + FractionalPay
- Yes
- Stripe Connect alone
- No
-
Ledger of earnings per beneficiary
what each party earned from each charge
- Stripe Connect + FractionalPay
- Yes
- Stripe Connect alone
- Code you write
-
Proportional refunds across all shares
- Stripe Connect + FractionalPay
- Yes
- Stripe Connect alone
- Code you write
-
Holds and reserves per party
- Stripe Connect + FractionalPay
- Growth
- Stripe Connect alone
- Code you write
-
Reconciliation of ledger vs balance
- Stripe Connect + FractionalPay
- Growth
- Stripe Connect alone
- Reports, matching is yours
-
Rules editable by finance without a deploy
- Stripe Connect + FractionalPay
- Yes
- Stripe Connect alone
- No
-
Pricing
- Stripe Connect + FractionalPay
- Stripe fees plus a flat monthly plan
- Stripe Connect alone
- Stripe's published fees
Payments land in your own Stripe platform account. FractionalPay calculates splits, keeps the ledger and sends payout instructions to that account. It never holds, pools or transmits funds, it is not a payment institution, and it has no official partnership with Stripe.
An honest boundary
When to build directly on Connect
Not every platform needs a layer on top. If every charge goes to exactly one seller, your platform takes a fixed application fee, refunds are rare and you have no partners or affiliates to pay, a destination charge does the job. Adding FractionalPay would give you a dashboard you do not need.
The picture changes when a second or third party appears on the same charge, when partner commissions depend on time or volume, when holds protect you during a return window, or when finance asks for a ledger they can reconcile. That is the point where teams usually start writing the list above, and where a split payment API saves the most time.
- One seller, fixed fee, no reporting needs: stay on Connect alone
- Several parties per charge or recurring partner shares: add the layer
- Finance needs reconciliation and an audit trail: add the layer
Beneficiaries on charge ch_1840
Seller
Harbor Tools Co
$1,472.00
80%
acct_1Q7ZxT2eHarb
Platform
Platform revenue
$276.00
15%
Your account
Partner
Referral partner
$92.00
5%
Held 14 days
For engineering teams
Delete the split code you maintain today
Teams already on Connect usually adopt FractionalPay in steps. They connect the platform account in the sandbox first, create beneficiaries that point to existing connected account ids, and run the new rules next to their own code until the numbers agree. Then the old transfer scripts are switched off.
From then on, Stripe Connect payouts follow the schedule in FractionalPay: on payout day each beneficiary's available balance is sent as an instruction through your platform account, and every step fires a signed webhook your systems can listen to. For the seller side of this flow, see marketplace payouts.
For developers
Events you can build on
Live charges arrive from your connected Stripe account automatically, so there is nothing to call per payment. You read balances with GET /balances, list payouts with GET /payouts and react to events. Amounts are integers in cents, every POST accepts an Idempotency-Key, and test keys start with fp_test_.
Payouts move through scheduled, sent and paid, or held and awaiting_approval when a hold or a four-eyes approval applies. Webhooks are signed with HMAC SHA-256 and retried for 24 hours. The full reference is in the API docs.
-
payout.scheduledwhen a share becomes a payout -
payout.paidorpayout.failedwhen the transfer settles -
hold.releasedwhen a reserve becomes available
GET /v1/payouts?status=scheduled
200 OK
curl https://fractionalpay.com/api/v1/payouts?status=scheduled \
-H "Authorization: Bearer fp_test_4eC39H..."
{
"object": "list",
"data": [
{
"id": 5021,
"object": "payout",
"beneficiary_id": 2291,
"amount": 147200,
"currency": "USD",
"status": "scheduled",
"scheduled_for": 1792746000,
"sent_at": null,
"external_transfer_id": null,
"failure_reason": null,
"requires_approval": false,
"approved_by": null,
"approved_at": null,
"created": 1792062790
}
],
"has_more": false
}
Webhook delivery ยท payout.paid
200 delivered
POST https://api.yourplatform.com/hooks/fractionalpay
FractionalPay-Signature: t=1760534400,v1=5257a869e7ec...
{
"id": "evt_7f5495b5aad91970bdb4eead",
"type": "payout.paid",
"created": 1760534400,
"livemode": false,
"data": {
"payout": {
"id": 5021,
"object": "payout",
"beneficiary_id": 2291,
"amount": 147200,
"currency": "USD",
"status": "paid",
"scheduled_for": 1792746000,
"sent_at": 1792746060,
"external_transfer_id": "tr_1Q9Hrb5021",
"failure_reason": null,
"requires_approval": false,
"approved_by": null,
"approved_at": null,
"created": 1792062790
}
}
}Questions
Frequently asked questions
Something else on your mind? Write to [email protected] or read the API documentation.
Is FractionalPay a Stripe Connect alternative?
Do we have to migrate our connected accounts?
How do Stripe Connect payouts work with FractionalPay?
payout.paid or payout.failed.Does FractionalPay hold funds or need its own license?
What does it cost next to Stripe's fees?
We have several Stripe platform accounts. Does that work?
Try your Connect split before writing code
Model a charge with your real parties in the simulator, then call the same engine from the sandbox with a test key.
No transaction fees from us. Runs on your own payment account at a licensed operator. FractionalPay never holds your funds.