Splits & Subaccounts API

Transaction Splits

class djpaystack.api.splits.SplitAPI(client)[source]

Bases: BaseAPI

Transaction Splits API

create(name: str, type: str, currency: str, subaccounts: List[Dict[str, Any]], bearer_type: str, bearer_subaccount: str, **kwargs) Dict[str, Any][source]

Create a split

list(name: str | None = None, active: bool | None = None, sort_by: str | None = None, per_page: int = 50, page: int | None = None) Dict[str, Any][source]

List splits

fetch(id: str) Dict[str, Any][source]

Fetch a split

update(id: str, name: str | None = None, active: bool | None = None, bearer_type: str | None = None, bearer_subaccount: str | None = None) Dict[str, Any][source]

Update a split

add_subaccount(id: str, subaccount: str, share: int) Dict[str, Any][source]

Add subaccount to split

remove_subaccount(id: str, subaccount: str) Dict[str, Any][source]

Remove subaccount from split

Subaccounts

class djpaystack.api.subaccounts.SubaccountAPI(client)[source]

Bases: BaseAPI

Subaccounts API

create(business_name: str, settlement_bank: str, account_number: str, percentage_charge: float, description: str | None = None, primary_contact_email: str | None = None, primary_contact_name: str | None = None, primary_contact_phone: str | None = None, metadata: Dict | None = None) Dict[str, Any][source]

Create subaccount

list(per_page: int = 50, page: int | None = None, from_date: str | None = None, to_date: str | None = None) Dict[str, Any][source]

List subaccounts

fetch(id_or_code: str) Dict[str, Any][source]

Fetch subaccount

update(id_or_code: str, business_name: str | None = None, settlement_bank: str | None = None, account_number: str | None = None, percentage_charge: float | None = None, description: str | None = None, primary_contact_email: str | None = None, primary_contact_name: str | None = None, primary_contact_phone: str | None = None, settlement_schedule: str | None = None, active: bool | None = None, metadata: Dict | None = None) Dict[str, Any][source]

Update subaccount

Quick Reference

from djpaystack import PaystackClient
client = PaystackClient()

# --- Splits ---
client.splits.create(
    name='E-commerce split',
    type='percentage',
    currency='NGN',
    subaccounts=[
        {'subaccount': 'ACCT_xxx', 'share': 30},
        {'subaccount': 'ACCT_yyy', 'share': 20},
    ],
    bearer_type='account',
)
client.splits.list()
client.splits.fetch(id='SPL_xxxxx')
client.splits.update(id='SPL_xxxxx', name='Updated split')
client.splits.add_subaccount(id='SPL_xxxxx', subaccount='ACCT_zzz', share=10)
client.splits.remove_subaccount(id='SPL_xxxxx', subaccount='ACCT_zzz')

# --- Subaccounts ---
client.subaccounts.create(
    business_name='Partner Store',
    settlement_bank='058',
    account_number='0123456789',
    percentage_charge=20,
)
client.subaccounts.list()
client.subaccounts.fetch(id_or_code='ACCT_xxxxx')
client.subaccounts.update(id_or_code='ACCT_xxxxx', percentage_charge=25)

Dynamic Splits

You can also create a one-time split at transaction initialization time (no pre-created split group required):

client.transactions.initialize(
    email='customer@example.com',
    amount=100000,
    split={
        'type': 'percentage',
        'bearer_type': 'account',
        'subaccounts': [
            {'subaccount': 'ACCT_xxx', 'share': 30},
        ],
    },
)