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 "Authorization: Bearer <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.