Payout Recipients API
A payout recipient represents a bank account or mobile money destination that can receive payouts. Recipients are tenant and gateway-specific.
You typically don't need to manage recipients directly — POST /payouts handles recipient creation transparently. Use this API when you want to pre-register recipients and reuse them across multiple payouts.
Create a recipient
Registers a payout destination (bank account or mobile money) with the gateway and stores it for future use.
You must provide exactly one of: a full bank set (bank_account_number, bank_account_name, and bank_code — no mobile_* fields), or a full mobile money set (mobile_money_number and mobile_money_provider — no bank account fields). Do not send both a complete bank set and complete mobile set, or partial bank/mobile fields.
Parameters
bank_account_numberoptional, stringBank account number. Required (with `bank_account_name` and `bank_code`) for bank recipients when mobile money is not used.
bank_account_nameoptional, stringName on the bank account, as it appears at the bank. Required with the other bank fields for bank recipients.
bank_codeoptional, stringBank code (e.g. "057" for Zenith Bank Nigeria, "058" for GTBank). Required with the other bank fields for bank recipients.
bank_nameoptional, stringHuman-readable bank name for display purposes.
nameoptional, stringDisplay name for the recipient (person or business name).
emailoptional, stringEmail address of the recipient.
phoneoptional, stringPhone number of the recipient.
mobile_money_numberoptional, stringMSISDN or wallet number for mobile money. Required (with `mobile_money_provider`) when not using a full bank set.
mobile_money_provideroptional, stringMobile money network or provider identifier (e.g. as defined for your gateway). Required with `mobile_money_number` for mobile money recipients.
recipient_typeoptional, stringDiscriminator: `bank_account` (default) or `mobile_money`. Inferred from your bank vs mobile fields if omitted.
gatewayoptional, stringPayout gateway to register with. When omitted, the tenant default applies.
idempotency_keyoptional, stringUnique key to prevent duplicate recipient creation. Repeating a request with the same key returns the existing recipient.
metadataoptional, objectArbitrary key-value data to attach to this recipient.
Status Codes
201 Created: Recipient was registered successfully.200 OK: An existing recipient was returned (idempotency key match).400 Bad Request: Missing or conflicting bank vs mobile money fields (e.g. partial bank fields, both a full bank set and mobile money set, or mobile money fields without bothmobile_money_numberandmobile_money_provider), unsupported gateway, or gateway registration failed.401 Unauthorized: Invalid or missing API key.
curl -X POST https://api.orchestrapay.com/payout-recipients \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"bank_account_number": "0123456789",
"bank_account_name": "JOHN SELLER",
"gateway": "mygateway",
"bank_code": "058",
"bank_name": "Guaranty Trust Bank",
"name": "John Seller",
"email": "john.seller@example.com",
"idempotency_key": "recipient-john-seller-gtb-0123456789"
}'Response Parameters
recipient_uuidstringUUID of the recipient that was created or matched.
gateway_recipient_idstringThe gateway's own identifier for this recipient (e.g. a recipient code returned by the gateway).
resource_createdbooleanWhether a new recipient was created (true) or an existing one returned via idempotency key (false).
{
"recipient_uuid": "76418b40-8e2d-47c3-ab2f-84e7347d9fcc",
"gateway_recipient_id": "mock-recipient-88",
"resource_created": true
}Query recipients
Retrieves a paginated list of payout recipients.
Query Parameters
limitoptional, integer, default is 50Number of results per page (max 1000).
pageoptional, integerPage number to fetch.
sortByoptional, stringSort by property:ASC|DESC (e.g. "created_at:DESC"). Sortable columns: id, created_at.
filteroptional, objectFilter parameters.
Filter Operators
$eqEqual to$notNot equal to$nullIs null$inIn array$gtGreater than$gteGreater than or equal to$ltLess than$lteLess than or equal to$btwBetween$ilikeCase-insensitive like$swStarts with$containsContainscurl https://api.orchestrapay.com/payout-recipients \
-H "Authorization: Bearer YOUR_API_KEY" \
-d "limit=50" \
-d "page=1" \
-d "filter.gateway=$eq:mygateway"Response Parameters
data[]arrayArray of recipient objects.
metaobjectPagination metadata (itemsPerPage, totalItems, currentPage, totalPages, sortBy).
linksobjectPagination links (first, previous, current, next, last).
{
"data": [
{
"id": 88,
"uuid": "a1b2c3d4-...",
"gateway": "mygateway",
"gateway_recipient_id": "mock-recipient-88",
"bank_account_number": "0123456789",
"bank_account_name": "JOHN SELLER",
"bank_code": "058",
"bank_name": "Guaranty Trust Bank",
"name": "John Seller",
"created_at": "2026-04-05T13:00:00Z",
"updated_at": "2026-04-05T13:00:00Z"
}
],
"meta": {
"itemsPerPage": 50,
"totalItems": 1,
"currentPage": 1,
"totalPages": 1,
"sortBy": [["created_at", "DESC"]]
},
"links": {
"first": "https://api.orchestrapay.com/payout-recipients?page=1&limit=50",
"previous": null,
"current": "https://api.orchestrapay.com/payout-recipients?page=1&limit=50",
"next": null,
"last": "https://api.orchestrapay.com/payout-recipients?page=1&limit=50"
}
}