The Single Disbursements methods in the OneKhusa SDK allow a merchant to send funds from a merchant account to a beneficiary across three distinct transfer channels: Banks and Mobile Wallets (External Transfer), Intra-Organisation and Inter-Organisation. Every channel is exposed through client.Transactions.SingleDisbursements.

Key Business Use Cases

  • External Payouts: Automated payout processing to customer bank accounts or mobile money wallets through payment connectors (e.g., payroll, vendor payments, platform withdrawals).
  • Internal Payouts: Real-time account balance reallocation between sub-merchants or departments within the same organisation.
  • B2B Transfers: Direct merchant-to-merchant payouts across different organisations operating on OneKhusa.

Supported Transfer Types

OneKhusa categorizes single disbursements into three distinct transfer channels based on the target beneficiary destination:

How Single Disbursements Work (Execution Flow)

Core Event-Driven Flow
  1. Configure the client: Instantiate OneKhusaClient with your API key, API secret, MerchantAccountNumber and OrganisationId.
  2. Initiate Transfer: Call the appropriate method (CreatePayoutAsync for external, CreateIntraTransferAsync for intra-organisation, CreateInterTransferAsync for inter-organisation) supplying the source merchant account, amount, and beneficiary details matching the transfer route.
  3. Processing & Status:
    • Intra- and Inter-Organisation transfers execute synchronously with immediate balance updates on the internal ledger.
    • External transfers to banks or mobile money networks process asynchronously via payment connectors, updating status asynchronously via webhooks.
  4. Approval Workflow: Depending on your organisation’s authorisation policy (2-eye, 4-eye or 6-eye), posted transfers are approved and, where required, reviewed before execution.

SDK Method and Namespace Reference

Transaction inquiry is shared across all channels: use GetPayoutsAsync and GetPayoutAsync (Shared) to query posted payouts.

Developer Best Practices & Operational Safeguards

  • Idempotency Keys: Always supply a unique idempotency-key for disbursement requests to prevent duplicate payouts caused by transient network timeouts. The SDK generates one automatically if you do not provide it.
  • Account Balance Checks: Ensure the merchant account maintains sufficient cleared (available) funds prior to initiating disbursements; overdraft transfers will be rejected automatically (400 Insufficient funds).
  • Webhook Handling: Implement webhook listeners to receive final execution states (SUCCESS, FAILED, REVERSED) for external payouts.