skills/paystack-splits/SKILL.md
Paystack Transaction Splits API — create, update, and manage multi-party payment splits across subaccounts. Configure percentage or flat-amount splits with flexible bearer types (subaccount, account, all-proportional, all). Add or remove subaccounts from split groups. Use this skill whenever implementing revenue sharing between multiple parties, marketplace commission structures, multi-vendor payment distribution, or any flow that divides a single payment among multiple recipients. Also use when you see references to split_code, SPL_ prefixed codes, bearer_type, or the /split endpoint.
npx skillsauth add rexedge/paystack paystack-splitsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
The Transaction Splits API lets you split payment settlements across your main account and one or more subaccounts. More flexible than simple subaccount splits.
Depends on: paystack-setup for the
paystackRequesthelper.
Related: paystack-subaccounts for creating subaccounts used in splits.
| Method | Endpoint | Description |
| --- | --- | --- |
| POST | /split | Create a split |
| GET | /split | List splits |
| GET | /split/:id | Fetch a split |
| PUT | /split/:id | Update a split |
| POST | /split/:id/subaccount/add | Add/update subaccount in split |
| POST | /split/:id/subaccount/remove | Remove subaccount from split |
POST /split
| Param | Type | Required | Description |
| --- | --- | --- | --- |
| name | string | Yes | Name of the split |
| type | string | Yes | percentage or flat |
| currency | string | Yes | Currency code (e.g. NGN) |
| subaccounts | array | Yes | Array of { subaccount, share } objects |
| bearer_type | string | Yes | Who bears Paystack fees (see table below) |
| bearer_subaccount | string | No | Subaccount code (required if bearer_type is subaccount) |
| Type | Description |
| --- | --- |
| subaccount | A specific subaccount bears fees |
| account | The main account bears all fees |
| all-proportional | Fees are split proportionally among all parties |
| all | Each party bears fees on their share |
const split = await paystackRequest<{
split_code: string;
name: string;
type: string;
}>("/split", {
method: "POST",
body: JSON.stringify({
name: "Marketplace 70-30",
type: "percentage",
currency: "NGN",
subaccounts: [
{ subaccount: "ACCT_6uujpqtzmnufzkw", share: 70 },
],
bearer_type: "all-proportional",
// Main account gets remaining 30%
}),
});
// split.data.split_code → "SPL_RcScyW5jp2"
await paystackRequest("/split", {
method: "POST",
body: JSON.stringify({
name: "Fixed Distribution",
type: "flat",
currency: "NGN",
subaccounts: [
{ subaccount: "ACCT_6uujpqtzmnufzkw", share: 50000 }, // ₦500 flat
{ subaccount: "ACCT_eg4sob4590pq9vb", share: 30000 }, // ₦300 flat
],
bearer_type: "account",
}),
});
GET /split
| Param | Type | Required | Description |
| --- | --- | --- | --- |
| name | string | No | Filter by split name |
| active | boolean | No | Filter active/inactive |
| sort_by | string | No | Sort field (default: createdAt) |
| perPage | integer | No | Records per page (default: 50) |
| page | integer | No | Page number (default: 1) |
| from | datetime | No | Start date |
| to | datetime | No | End date |
const splits = await paystackRequest("/split?active=true");
GET /split/:id
const split = await paystackRequest(`/split/${splitId}`);
PUT /split/:id
| Param | Type | Required | Description |
| --- | --- | --- | --- |
| name | string | Yes | Updated split name |
| active | boolean | Yes | Enable or disable |
| bearer_type | string | No | Updated bearer type |
| bearer_subaccount | string | No | Updated bearer subaccount |
await paystackRequest(`/split/${splitId}`, {
method: "PUT",
body: JSON.stringify({
name: "Updated Marketplace Split",
active: true,
bearer_type: "all-proportional",
}),
});
POST /split/:id/subaccount/add
Add a new subaccount or update the share of an existing one.
| Param | Type | Required | Description |
| --- | --- | --- | --- |
| subaccount | string | Yes | Subaccount code |
| share | integer | Yes | Share amount (percentage or flat depending on split type) |
await paystackRequest(`/split/${splitId}/subaccount/add`, {
method: "POST",
body: JSON.stringify({
subaccount: "ACCT_eg4sob4590pq9vb",
share: 20,
}),
});
POST /split/:id/subaccount/remove
await paystackRequest(`/split/${splitId}/subaccount/remove`, {
method: "POST",
body: JSON.stringify({
subaccount: "ACCT_eg4sob4590pq9vb",
}),
});
Pass the split_code when initializing a transaction:
await paystackRequest("/transaction/initialize", {
method: "POST",
body: JSON.stringify({
email: "[email protected]",
amount: 500000,
split_code: "SPL_RcScyW5jp2",
}),
});
development
Paystack webhook integration — signature validation with HMAC SHA512, event parsing, IP whitelisting, retry policy, and all supported event types. Use this skill whenever setting up a webhook endpoint for Paystack, validating x-paystack-signature headers, handling charge.success or transfer.success events, debugging webhook delivery failures, implementing idempotent event processing, or building any server-side Paystack event listener. Also use when encountering webhook timeout issues or needing the list of Paystack webhook IP addresses.
tools
Paystack Verification API — KYC verification tools for resolving bank accounts, validating account ownership, and looking up card BIN information. Use this skill whenever verifying bank account details before transfers, confirming account holder names, validating customer identity for compliance, looking up card brand/type/bank from BIN, or implementing KYC flows. Also use when you see references to /bank/resolve, /bank/validate, /decision/bin endpoints, or need to match account numbers to names.
development
Paystack Transfers API — send money to bank accounts and mobile wallets. Initiate single and bulk transfers, finalize OTP-verified transfers, list, fetch, and verify transfer status. Use this skill whenever implementing payouts, disbursements, vendor payments, withdrawal flows, or any feature that sends money from your Paystack balance to recipients. Also use when you see references to transfer_code, TRF_ prefixed codes, the /transfer endpoint, or need to handle transfer OTP verification.
development
Paystack Transfer Recipients API — create, list, fetch, update, and delete transfer recipients (beneficiaries) for payouts. Supports NUBAN (Nigeria), GHIPSS (Ghana), Mobile Money, BASA (South Africa), and authorization-based recipients. Use this skill whenever adding bank accounts or mobile wallets as payout destinations, creating transfer recipients before initiating transfers, managing beneficiary lists, or doing bulk recipient creation. Also use when you see references to recipient_code, RCP_ prefixed codes, or the /transferrecipient endpoint.