Splits & Subaccounts API
Transaction Splits
- class djpaystack.api.splits.SplitAPI(client)[source]
Bases:
BaseAPITransaction 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
- 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
Subaccounts
- class djpaystack.api.subaccounts.SubaccountAPI(client)[source]
Bases:
BaseAPISubaccounts 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
- 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},
],
},
)