List beneficiaries
curl "https://api.payhero.africa/api/global/beneficiaries?page=1&per=20&kyc_level=tier_0&term=john" \ -u "API_USERNAME:API_PASSWORD"Returns the beneficiaries belonging to the account behind your API key, newest first. All filters combine.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”1-indexed page number.
Example
1Page size.
Example
20Free-text search over first name, last name, email, phone and external reference.
Example
johnFilter by KYC level.
Example
tier_0Filter by the active flag.
Example
trueExact-match on a beneficiary UUID.
Start of a created-at window. Must be sent together with to.
Example
2026-01-01End of a created-at window. Must be sent together with from.
Example
2026-09-05Responses
Section titled “Responses”A page of beneficiaries.
object
A stored counterparty. Note that a few fields are named differently on the way out than
on the way in: phone is returned as phone_number, and id_number as national_id.
object
Send this as customer.customer_uuid on payments.
The id_number you sent.
The phone you sent.
The PayHero account that owns this beneficiary, derived from your API key.
Recomputed on every write from the metadata actually present. Never settable.
The beneficiary’s KYC standing, recomputed on every write. Read-only.
object
Fields still needed to reach full. Send these to the update endpoint.
Fields still needed to reach tier_0. Non-empty only on a rejected create.
Lifetime USD total this beneficiary has transacted while at tier_0.
Headroom left before full KYC becomes mandatory.
Per-transaction ceiling while at tier_0.
Currencies a tier_0 beneficiary can never transact in.
True when the country needs a second ID (Nigeria) and it has not been supplied.
object
Example
{ "beneficiaries": [ { "id": 94, "uuid": "a2e0434e-17ae-41b1-a1cf-1694ad63ee99", "first_name": "John", "last_name": "Doe", "national_id": "32460968", "date_of_birth": "1997-10-03T00:00:00Z", "phone_number": "+254712345678", "email": "john.doe@example.com", "address": "Moi Drive, Umoja", "country": "KE", "account_id": 63, "account_name": "John Doe", "account_number": "+254712345678", "account_type": "momo", "customer_type": "retail", "kyc_level": "tier_0", "tier_0_lifetime_usd": 0, "is_active": true, "kyc": { "level": "tier_0", "full_kyc": false, "missing_full_kyc_fields": [ "address", "date_of_birth", "id_number", "id_type", "phone" ], "missing_reduced_kyc_fields": [], "tier_0_lifetime_usd": 0, "tier_0_remaining_usd": 200, "tier_0_limit_reached": false, "tier_0_max_transaction_usd": 20, "tier_0_excluded_currencies": [ "BWP", "NGN", "ZAR" ], "requires_additional_id": false } } ], "pagination": { "count": 16, "page": 1, "per": 20, "num_pages": 1 }}Missing or invalid Basic auth credentials.
object
Example
{ "error_code": "invalid_argument", "error_message": "the transaction amount is insufficient as it wont cater for cost: (4.62)", "status_code": 400}
