Split Payments
Split payments let a marketplace platform automatically divide an incoming payment between a seller and the platform itself, in a single atomic operation.
Fee: 2.0% of amount, capped at ₦1,000 (100000 kobo) — PayKore's platform processing fee, separate from your own platform fee.
What are split payments?
Consider a typical marketplace scenario: a buyer pays ₦10,000 for a product. The seller should receive ₦8,500 after your marketplace's commission. Your platform keeps the remaining ₦1,500.
Without split payments, this requires two separate operations: receive ₦10,000 into your platform wallet, then manually transfer ₦8,500 to the seller. Two operations means two points of failure — if your payout step fails after the buyer has already paid, you have a reconciliation problem.
Split payments perform both movements — buyer to seller, and buyer to platform — within a single atomic transaction. There's no intermediate state where the buyer has paid but the seller hasn't been credited.
The split config object
A split payment request includes a split_config object describing how to divide the funds:
{
"split_config": {
"merchant_account": "wlt_seller_123",
"platform_fee_percent": 15.0,
"platform_account": "wlt_your_platform"
}
}
| Field | Description |
|---|---|
merchant_account | The wallet ID that receives the payment after your platform fee (and PayKore's fee) is deducted. Typically the seller's wallet. |
platform_fee_percent | Your marketplace's commission, as a percentage from 0 to 50. This is your cut, separate from PayKore's processing fee. |
platform_account | Your own wallet ID that receives the platform_fee_percent cut. |
Full example
Walk through a ₦10,000 payment with a 15% platform fee:
| Component | Calculation | Amount (kobo) | Amount (₦) |
|---|---|---|---|
| Gross payment | — | 1,000,000 | 10,000.00 |
| PayKore processing fee | 2% of 1,000,000, capped at 100000 | 20,000 | 200.00 |
| Your platform fee | 15% of 1,000,000 | 150,000 | 1,500.00 |
| PSP fee | 0.6% of 1,000,000 | 6,000 | 60.00 |
| Merchant receives | 1,000,000 − 20,000 − 150,000 − 6,000 | 824,000 | 8,240.00 |
This breakdown is returned in full on the transaction response — you never need to compute it yourself.
Making a split payment request
curl -X POST https://api.paykore.dev/v1/transfers/split \
-H "X-API-Key: sk_test_YOUR_KEY_HERE" \
-H "Idempotency-Key: order_456_split" \
-H "Content-Type: application/json" \
-d '{
"source_wallet_id": "wlt_buYeR789",
"amount_kobo": 1000000,
"reference": "order_456",
"split_config": {
"merchant_account": "wlt_seller_123",
"platform_fee_percent": 15.0,
"platform_account": "wlt_your_platform"
}
}'
Response:
{
"id": "tx_6mNoP7qRsT",
"type": "split_payment",
"status": "completed",
"reference": "order_456",
"amount_kobo": 1000000,
"amount_naira": "10000.00",
"fee_breakdown": {
"gross_kobo": 1000000,
"paykore_fee_kobo": 20000,
"platform_fee_kobo": 150000,
"psp_fee_kobo": 6000,
"merchant_net_kobo": 824000,
"merchant_net_naira": "8240.00"
},
"splits": {
"merchant_account": "wlt_seller_123",
"platform_account": "wlt_your_platform"
},
"created_at": "2025-06-01T13:00:00Z",
"meta": {
"request_id": "req_3uVwX4yZaB"
}
}
Atomicity guarantee
The buyer debit, merchant credit, and platform fee credit all happen within a single database transaction on PayKore's ledger. If any part of the operation fails — for example, the merchant wallet is unexpectedly closed mid-request — the entire transaction rolls back. The buyer is never debited without the merchant being credited.
There is no scenario where a split payment partially succeeds. You will either receive a completed transaction with all three legs settled, or an error response with no ledger changes at all.
Settlement of split payments
Your platform_account wallet receives its fee cut immediately upon transaction completion — the same as any other wallet credit. The balance accumulates in that wallet over time.
PayKore settles wallet balances to your registered bank account on a T+1 basis by default (the business day following the transaction). Partners on the Scale tier can request on-demand settlement instead of waiting for the daily batch. See Dashboard: Settlements for configuration.
Common errors
| Error code | HTTP | Cause |
|---|---|---|
INVALID_SPLIT_CONFIG | 400 | One or more required fields in split_config are missing or malformed. |
PLATFORM_ACCOUNT_NOT_FOUND | 404 | The platform_account wallet ID doesn't exist or doesn't belong to your partner account. |
SPLIT_EXCEEDS_AMOUNT | 400 | platform_fee_percent combined with PayKore and PSP fees would leave the merchant with a negative or zero net amount. |
MERCHANT_WALLET_FROZEN | 422 | The merchant_account wallet cannot currently receive funds. |
Example — SPLIT_EXCEEDS_AMOUNT:
{
"error": {
"code": "SPLIT_EXCEEDS_AMOUNT",
"message": "The configured platform_fee_percent combined with processing fees exceeds the payment amount.",
"http_status": 400
},
"meta": {
"request_id": "req_7yZaB8cDeF"
}
}
Next steps
- Dashboard: Settlements → — Configure settlement schedule and bank account.
- Webhooks Overview → — Receive
transaction.completedevents for split payments. - Dashboard: Transaction Reporting → — Reconcile split payments across merchants.