Splits & Subaccounts
Automatically divide a payment between your own account and one or more subaccounts — ideal for marketplaces, platforms, and revenue-sharing arrangements.
Subaccounts
A subaccount represents a payee with its own settlement bank details and balance. Manage subaccounts under /v1/merchant/subaccounts. KYC must be approved before creating subaccounts.
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/merchant/subaccounts | List subaccounts with balances (paginated) |
| POST | /v1/merchant/subaccounts | Create a subaccount |
| GET | /v1/merchant/subaccounts/:id | Retrieve a subaccount |
| GET | /v1/merchant/subaccounts/:id/balance | Pending, available, and total balance |
| PATCH | /v1/merchant/subaccounts/:id | Update details or status |
| DELETE | /v1/merchant/subaccounts/:id | Deactivate a subaccount |
http
POST /v1/merchant/subaccounts
Authorization: Bearer sk_test_...
Content-Type: application/json
{
"business_name": "Acme Logistics",
"market_iso2": "ZW",
"bank_code": "NMB",
"account_number": "1234567890",
"settlement_bank": "NMB Bank",
"currency": "USD",
"percentage_charge": "2.5"
}json
{
"success": true,
"data": {
"subaccount": {
"id": "sub_01HQXYZ",
"business_name": "Acme Logistics",
"market_iso2": "ZW",
"currency": "USD",
"percentage_charge": "2.5",
"status": "active",
"balance": { "pending": "0", "available": "0", "total": "0.0000" }
}
}
}Split rules
A split rule defines how a payment is allocated to subaccounts. Manage splits under /v1/merchant/splits.
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/merchant/splits | List split rules with allocations |
| POST | /v1/merchant/splits | Create a split rule |
| GET | /v1/merchant/splits/:id | Retrieve a split rule |
| PATCH | /v1/merchant/splits/:id | Update name, status, or allocations |
| DELETE | /v1/merchant/splits/:id | Deactivate a split rule |
Allocations
Each allocation references a subaccount_id and a share. For percentage splits, the shares of all allocations must sum to 100; the remainder stays with your main account. For flat splits, each share is a fixed amount. Set bearer_type to account or subaccount to choose who absorbs processing fees.
http
POST /v1/merchant/splits
Authorization: Bearer sk_test_...
Content-Type: application/json
{
"name": "Marketplace 90/10",
"type": "percentage",
"currency": "USD",
"bearer_type": "account",
"allocations": [
{ "subaccount_id": "sub_01HQXYZ", "share": "10" }
]
}json
{
"success": true,
"data": {
"split": {
"id": "spl_01HQ",
"name": "Marketplace 90/10",
"split_code": "SPL_A1B2C3D4E5F6",
"type": "percentage",
"currency": "USD",
"bearer_type": "account",
"status": "active",
"allocations": [
{ "subaccount_id": "sub_01HQXYZ", "share": "10" }
]
}
}
}Settlement webhook
When a split is settled, Watenga emits the
split.settled event. Its data includes transaction_id, split_id, subaccount_id, amount, and currency.