This method retrieves posted single disbursement transactions for a merchant account. For payload explanations for both request and response, click here
using OneKhusa.SDK;
using OneKhusa.SDK.Models.Constants.Shared;
using OneKhusa.SDK.Models.Transactions.SingleDisbursements.Shared;

//code omitted for brevity

OneKhusaResponse<List<GetPayoutsResponse>> response = await client
    .Transactions
    .SingleDisbursements
    .GetPayoutsAsync(new GetPayoutsRequest
    {
        MerchantAccountNumber = 12345678,
        TransactionDate = new DateTime(2026, 2, 1),
        IsIncremental = false,
        PageNumber = 1,
        NumberOfReturnedRows = 20,
        SearchBy = SearchFields.TransactionReferenceNumber,
        SearchText = "260219YXF882"
    });

if (response is { IsSuccess: true, Data: not null })
{
    foreach (var payout in response.Data)
    {
        Console.WriteLine($"""
            BeneficiaryAccountNumber: {payout.BeneficiaryAccountNumber};
            BeneficiaryName: {payout.BeneficiaryName};
            ConnectorName: {payout.ConnectorName};
            CurrencyCode: {payout.CurrencyCode};
            TransactionReferenceNumber: {payout.TransactionReferenceNumber};
            TransactionAmount: {payout.TransactionAmount};
            TransactionDescription: {payout.TransactionDescription};
            TransactionDate: {payout.TransactionDate};
            TransactionStatusCode: {payout.TransactionStatusCode};
            TransactionStatusName: {payout.TransactionStatusName}
        """);
    }
    return;
}
//it means an error has occurred: RFC7807 compliant error object
Console.WriteLine($"""
        Type: {response.Error?.Type};
        Title: {response.Error?.Title};
        Detail: {response.Error?.Detail};
        ErrorCode: {response.Error?.ErrorCode};
        Status: {response.Error?.Status};
        Instance: {response.Error?.Instance};
        Errors: {string.Join(";", response.Error?.Errors ?? [])}
""");
Console.ReadLine();
Note: Organisation transfers reuse SingleDisbursements.GetPayoutsAsync. Always send a concrete SearchBy and SearchText. Empty search fields can return 500 / E999. GetPayoutsRequest has no TransactionCode filter; do not filter history by TWO or TBO.