Skip to main content
Access the service via $orqex->payouts(). Every method returns a typed Payout.

Create

Pass at minimum a customer, a description, and an instrument describing the destination. The optional reference field is a merchant-supplied idempotency key for the payout.
$payout = $orqex->payouts()->create([
    'amount'      => 5000,             // major units
    'currency'    => 'XOF',
    'method'      => 'momo_mtn',
    'description' => 'Vendor settlement — June 2026',
    'reference'   => 'vendor-42-june-2026',
    'customer'    => [
        'id' => 'cus_01j9z8kx0000000000000000',
    ],
    'instrument'  => [
        'type'         => 'phone',
        'phone_number' => '+22507000000',
        'country'      => 'CI',
    ],
]);

$payout->id;             // "po_01j9z8kx0000000000000000"
$payout->status;         // "pending" | "processing" | "completed" | "failed" | ...
$payout->amount->value;  // major units (decimal)
$payout->reference;      // your merchant reference
Use PayoutMethodCode for type-safe method codes:
use Orqex\Orchestrate\Enum\PayoutMethodCode;

$payout = $orqex->payouts()->create([
    'method' => PayoutMethodCode::MOBILE_MONEY_MTN->value, // "momo_mtn"
    // ...
]);

Retrieve

$payout = $orqex->payouts()->retrieve('po_01j9z8kx0000000000000000');

$payout->status;                    // "completed"
$payout->amount->value;             // major units (decimal)
$payout->amount->currency;          // "XOF"
$payout->customer->email;
$payout->instrument->type;          // "phone" | "bank_account" | "crypto_address"
$payout->instrument->phone_number;  // present when type is "phone"
$payout->gateway['id'];             // gateway-assigned transaction id
$payout->fee_amount;                // fee in major units (decimal), or null
$payout->failure;                   // Failure|null when status is "failed"
$payout->initiated_at;
$payout->completed_at;

Payout resource fields

FieldTypeDescription
idstringPayout id (po_...)
amountAmountvalue (major units, decimal) + currency
statusstringpending, processing, completed, failed
methodstring|nullPayout method code (see PayoutMethodCode)
referencestring|nullMerchant-supplied idempotency reference
descriptionstring|nullHuman-readable description
customerCustomer|nullAttributed customer
instrumentPayoutInstrument|nullDestination instrument
gatewayarrayGateway transaction details (id, reference, external_id)
fee_amountfloat|nullPayout fee in major units (decimal)
failureFailure|nullStructured failure details when status is failed
metadataarrayArbitrary key-value pairs
initiated_atstring|nullISO 8601 timestamp
completed_atstring|nullISO 8601 timestamp
failed_atstring|nullISO 8601 timestamp
created_atstring|nullISO 8601 timestamp

Instrument types

A PayoutInstrument describes the payout destination. The type field determines which additional fields are present:
typeFields
phonephone_number, country
bank_accountaccount_name, account_number, bank_code, swift_bic, country
crypto_addressaddress, network, memo_tag

Methods

MethodReturns
create(array $params, $opts = null)Payout
retrieve(string $payoutId, $opts = null)Payout
There is no all() method on PayoutService. To list payouts, use the Payouts API directly or query your own records.
See the Payouts concept for the full lifecycle and webhook events.