Skip to main content

Create a Beneficiary

Overview

This service is used to create a beneficiary through the API. Beneficiaries undergo an approval process once they are created. This is subject to the type of business; if you are a Money Services Business (MSB), beneficiaries will go through an approval process in the live environment.

Supports individual bank accounts, corporate entities, and mobile money wallets across international banking schemes. Once registered, the beneficiary receives a unique id for subsequent payout execution.

Resource Access

  • HTTP Method: POST
  • Endpoint: /profile/v2.1/beneficiaries
  • Authentication: Bearer token required (Authorization: Bearer {access_token})

Request Headers

HeaderValueRequiredDescription
Acceptapplication/jsonYesContent type for response
AuthorizationBearer {access_token}YesBearer token for authentication
Content-Typeapplication/jsonYesRequest body content type
x-api-keystringNoOptional API key

Request Body

Individual Beneficiary Example

{
"beneficiaryEntityType": "individual",
"beneficiaryFirstName": "Jon",
"beneficiaryLastName": "Doe",
"currency": "INR",
"beneficiaryCountryCode": "IN",
"accountNumber": "2000293918130",
"nationalId": "PUNB0644100",
"country": "India",
"clientReference": "Test Beneficiary For Individual",
"isMobileMoney": false
}

Corporate Beneficiary Example

{
"beneficiaryEntityType": "company",
"beneficiaryCompanyName": "OLSEN INDUSTRIA E COMERCIO SA",
"currency": "INR",
"beneficiaryCountryCode": "IN",
"accountNumber": "2000293918130",
"nationalId": "PUNB0644100",
"country": "India",
"clientReference": "Test Beneficiary For Company",
"isMobileMoney": false
}

Mobile Money Beneficiary Example

{
"beneficiaryEntityType": "individual",
"currency": "KES",
"beneficiaryCountryCode": "KE",
"accountNumber": "+254-900888380",
"nationalId": "M-PESA",
"country": "Kenya",
"beneficiaryFirstName": "Jane",
"beneficiaryLastName": "Doe",
"beneficiaryEmail": "jane.doe@example.com",
"clientReference": "Test Mobile Money Beneficiary",
"isMobileMoney": true
}

Request Fields

FieldTypeRequiredDescription
beneficiaryEntityTypestringYesEither individual or company.
currencystringYes3-letter ISO 4217 currency code (e.g. INR, USD, KES).
beneficiaryCountryCodestringYes2-letter ISO country code (e.g. IN, US, KE).
accountNumberstringYesAccount number, IBAN, or mobile money phone number.
countrystringYesFull country name.
nationalIdstringNoBank IFSC code, routing code, or national identifier.
beneficiaryFirstNamestringRequired if individualFirst name of the individual recipient.
beneficiaryLastNamestringRequired if individualLast name of the individual recipient.
beneficiaryCompanyNamestringRequired if companyRegistered business name.
beneficiaryEmailstringNoEmail address of the recipient.
clientReferencestringNoClient internal reference identifier.
isMobileMoneybooleanNoSet to true for mobile money wallets (e.g. M-Pesa).

Response

Success Response (200 OK)

{
"success": true,
"account": {
"id": 3994,
"accountNumber": "2000293918130",
"bankName": "Punjab National Bank",
"beneficiaryAddress": "7, Bhikaji Cama Place Africa Avenue",
"beneficiaryCity": "New Delhi",
"beneficiaryCountryCode": "IN",
"beneficiaryEntityType": "individual",
"country": "India",
"reference": "RP-17062022-001",
"beneficiaryFirstName": "Jon",
"beneficiaryLastName": "Doe",
"nationalId": "PUNB0644100",
"currency": "INR",
"clientReference": "Test Beneficiary For Individual",
"status": "approved"
}
}

Response Fields

FieldTypeDescription
successbooleanIndicates whether the beneficiary creation succeeded (true or false).
account.idnumberUnique system-assigned identifier for the beneficiary.
account.accountNumberstringStored account number or IBAN.
account.bankNamestringFinancial institution name resolved by the banking network.
account.beneficiaryEntityTypestringRecipient entity type (individual or company).
account.currencystringPayout currency code.
account.referencestringSystem reference number.
account.statusstringApproval status (e.g. approved, pending verification).

Error Responses

  • 400 Bad Request: Validation failure or missing required fields.
  • 401 Unauthorized: Missing or expired access token.
  • 403 Forbidden: Insufficient account permissions.
  • 500 Internal Server Error: Internal system failure.

Code Examples

cURL

curl -X POST "https://api.ahrvo.network/banking/ibans/v2/profile/v2.1/beneficiaries" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"beneficiaryEntityType": "individual",
"beneficiaryFirstName": "Jon",
"beneficiaryLastName": "Doe",
"currency": "INR",
"beneficiaryCountryCode": "IN",
"accountNumber": "2000293918130",
"nationalId": "PUNB0644100",
"country": "India",
"clientReference": "Test Beneficiary For Individual",
"isMobileMoney": false
}'

Python

import requests

url = "https://api.ahrvo.network/banking/ibans/v2/profile/v2.1/beneficiaries"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
"Accept": "application/json"
}
payload = {
"beneficiaryEntityType": "individual",
"beneficiaryFirstName": "Jon",
"beneficiaryLastName": "Doe",
"currency": "INR",
"beneficiaryCountryCode": "IN",
"accountNumber": "2000293918130",
"nationalId": "PUNB0644100",
"country": "India",
"clientReference": "Test Beneficiary For Individual",
"isMobileMoney": False
}

response = requests.post(url, headers=headers, json=payload)
data = response.json()
print("Beneficiary ID:", data.get("account", {}).get("id"))

JavaScript / Node.js

const response = await fetch("https://api.ahrvo.network/banking/ibans/v2/profile/v2.1/beneficiaries", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify({
beneficiaryEntityType: "individual",
beneficiaryFirstName: "Jon",
beneficiaryLastName: "Doe",
currency: "INR",
beneficiaryCountryCode: "IN",
accountNumber: "2000293918130",
nationalId: "PUNB0644100",
country: "India",
clientReference: "Test Beneficiary For Individual",
isMobileMoney: false
})
});

const result = await response.json();
console.log("Created Beneficiary:", result.account?.id);

Interactive API Explorer