Disbursements
Send payouts from a business wallet to mobile money or other destination rails.
Disbursements are the outbound side of the payments system. Use them when your business needs to send money out to customers, vendors, or staff.
Install
npm install @wistfare/core @wistfare/paymentspip install wistfarego get github.com/wistfare/wistfare-godependencies:
wistfare_core: ^0.1.0
wistfare_payments: ^0.1.0cargo add wistfaredependencies: [
.package(path: "../sdks/swift")
]implementation("com.wistfare:sdk:0.1.0")dotnet add package Wistfare.Core
dotnet add package Wistfare.PaymentsGet the Disbursements Client
import { Wistfare } from '@wistfare/core';
import { PaymentsClient } from '@wistfare/payments';
const wf = new Wistfare({
apiKey: process.env.WISTFARE_API_KEY!,
});
const disbursements = new PaymentsClient(wf);from wistfare import Wistfare
wf = Wistfare(api_key="wf_live_xxx")
disbursements = wf.paymentsimport (
"os"
"github.com/wistfare/wistfare-go/core"
"github.com/wistfare/wistfare-go/payments"
)
client := core.New(os.Getenv("WISTFARE_API_KEY"))
disbursements := payments.New(client)import 'package:wistfare_core/wistfare_core.dart';
import 'package:wistfare_payments/wistfare_payments.dart';
final wf = Wistfare(apiKey: 'wf_live_xxx');
final disbursements = PaymentsClient(wf);use wistfare::Wistfare;
let client = Wistfare::new("wf_live_xxx")?;
let disbursements = client.payments();import Wistfare
let client = try Wistfare(apiKey: "wf_live_xxx")
let disbursements = client.paymentsimport com.wistfare.sdk.Wistfare
import com.wistfare.sdk.WistfareConfig
val client = Wistfare(WistfareConfig(apiKey = "wf_live_xxx"))
val disbursements = client.paymentsusing Wistfare.Core;
using Wistfare.Payments;
var client = new WistfareClient(new WistfareOptions
{
ApiKey = Environment.GetEnvironmentVariable("WISTFARE_API_KEY")!,
});
var disbursements = new PaymentsClient(client);Current SDK coverage
Disbursement helpers are available today in TypeScript, Python, Go, Dart, and .NET. The Rust, Swift, and Kotlin preview SDKs do not yet expose a first-class disbursement helper, so those stacks should use the cURL example on this page when needed.
Initiate a Disbursement
const payout = await disbursements.initiateDisbursement({
businessId: 'biz_123',
walletId: 'wal_456',
amount: '5000',
destinationType: 'mobile_money',
destinationRef: '250788000000',
referenceId: 'vendor_payout_001',
description: 'Vendor payout',
});payout = disbursements.initiate_disbursement(
business_id="biz_123",
wallet_id="wal_456",
amount="5000",
destination_type="mobile_money",
destination_ref="250788000000",
reference_id="vendor_payout_001",
description="Vendor payout",
)result, err := disbursements.InitiateDisbursement(ctx, &payments.InitiateDisbursementParams{
BusinessID: "biz_123",
WalletID: "wal_456",
Amount: "5000",
DestinationType: "mobile_money",
DestinationRef: "250788000000",
ReferenceID: "vendor_payout_001",
Description: "Vendor payout",
})final payout = await disbursements.initiateDisbursement(
InitiateDisbursementParams(
businessId: 'biz_123',
walletId: 'wal_456',
amount: '5000',
destinationType: 'mobile_money',
destinationRef: '250788000000',
referenceId: 'vendor_payout_001',
description: 'Vendor payout',
),
);var payout = await disbursements.InitiateDisbursementAsync(new InitiateDisbursementParams
{
BusinessId = "biz_123",
WalletId = "wal_456",
Amount = "5000",
DestinationType = "mobile_money",
DestinationRef = "250788000000",
ReferenceId = "vendor_payout_001",
Description = "Vendor payout",
});curl -X POST https://api-production.wistfare.com/v1/disbursements \
-H "X-API-Key: wf_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"businessId": "biz_123",
"walletId": "wal_456",
"amount": "5000",
"destinationType": "mobile_money",
"destinationRef": "250788000000",
"referenceId": "vendor_payout_001",
"description": "Vendor payout"
}'Response
{
"id": "disb_def456",
"businessId": "biz_123",
"walletId": "wal_456",
"amount": "5000",
"currency": "RWF",
"destinationType": "mobile_money",
"destinationRef": "250788000000",
"referenceId": "vendor_payout_001",
"status": "pending",
"description": "Vendor payout",
"createdAt": "2026-03-19T12:00:00Z",
"updatedAt": "2026-03-19T12:00:00Z"
}Reconcile a Payout
After initiation, use getDisbursement or listDisbursements to reconcile status changes and update your own ledger. Do not mark a payout as final purely from the request submission response.
Recommended Practices
- Always provide a
referenceIdfor payouts so you can look them up later. - Separate customer-facing payment collections from operational payout flows.
- Reconcile asynchronous status updates before marking a payout complete in your own system.
