Logo GenukaGenuka Pay
API Reference

Payouts API

Initiate disbursements, inspect payout state, and manage recipient payout flows.

Introduction

Use payouts when your product needs to disburse funds to users, suppliers, merchants, or operational partners.

Create Payouts

Send money using either a saved payment method or direct recipient details.

Recipient Flexibility

Support both recurring recipients and one-off disbursement flows.

Operational Tracking

Inspect the current payout state and react to downstream provider changes.

Required Headers

Authenticated Payout Request
X-Public-Key: YOUR_PUBLIC_KEY
X-Timestamp: UNIX_TIMESTAMP
X-Signature: HMAC_SHA256_SIGNATURE

Endpoints

  • GET /api/v1/payouts
  • POST /api/v1/payouts
  • GET /api/v1/payouts/{id}
  • POST /api/v1/payouts/{id}/cancel

Create a Payout

Endpoint
POST /api/v1/payouts

Main Request Fields

ParameterTypeRequiredDescription
amountnumberYesPayout amount
currencystringYesISO currency code
countrystringNoRecipient country
payment_method_idstringConditionalExisting saved payout method
recipient_phonestringConditionalRecipient number for direct payout
operator_codestringConditionalRecipient operator for direct payout
recipient_first_namestringNoRecipient first name
recipient_last_namestringNoRecipient last name
external_idstringNoMerchant reference
descriptionstringNoBusiness context
metadataobjectNoAdditional merchant metadata

You must provide either:

  • payment_method_id
  • or recipient_phone with operator_code

Example Request

Create a Direct Payout
curl -X POST "{{BASE_URL}}/api/v1/payouts" \
  -H "X-Public-Key: YOUR_PUBLIC_KEY" \
  -H "X-Timestamp: UNIX_TIMESTAMP" \
  -H "X-Signature: HMAC_SHA256_SIGNATURE" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 25000,
    "currency": "XAF",
    "recipient_phone": "+237677001122",
    "operator_code": "MTN_CM",
    "recipient_first_name": "Jean",
    "recipient_last_name": "Mballa",
    "external_id": "payout_9001",
    "description": "Vendor settlement"
  }'

Retrieve a Payout

Endpoint
GET /api/v1/payouts/{id}

Use this endpoint to inspect the latest known payout state after initiation.

Cancel a Payout

Endpoint
POST /api/v1/payouts/{id}/cancel

Cancellation depends on both current internal state and downstream provider state. Not every payout will still be cancellable when your request arrives.

Operational Guidance

  • save recipient methods when you need recurring disbursement flows
  • keep external_id aligned with your ledger or payout batch identifiers
  • consume payout webhooks for final state synchronization
  • separate business refusal handling from transient provider failures

Production recommendation

Treat payouts as asynchronous operations. Use direct request responses for immediate UX feedback, but use event delivery and later reconciliation for final accounting.

How is this guide?