Skip to main content

Update Beneficiary (Atlas)

Overview

The PUT /banking/ibans/v2/recipients/{recipientId} endpoint updates an existing beneficiary record. Field updates are merged with the current record state.

[!IMPORTANT] currencyId, paymentMode, and beneficiaryType must always be supplied in the request body so downstream validation engines can correctly resolve the currency and clearing rail rules for the updated payload.

Runtime validation rules apply identically to the updated fields:

  • Sanctioned (OORA) SWIFT bank codes remain strictly prohibited.
  • For financial services and crypto clients, nestedType must be supplied.
  • Name and address formatting rules (maximum lengths, allowed character sets) are enforced.

Resource Access

  • HTTP Method: PUT
  • Endpoint: /banking/ibans/v2/recipients/{recipientId}
  • Authentication: Bearer token required

Request Headers

HeaderValueRequiredDescription
AuthorizationBearer {access_token}YesJWT Bearer access token
Content-Typeapplication/jsonYesRequest payload format
Acceptapplication/jsonYesResponse payload format
x-api-keystringNoOptional API key

Path Parameters

ParameterTypeRequiredDescription
recipientIdstringYesUnique identifier of the beneficiary record to update.

Request Body

Mandatory Base Fields

FieldTypeRequiredDescription
currencyIdintegerYesCurrency identifier (e.g. 1).
paymentModestringYesMode: LOCAL, INTERNATIONAL, MOBILE_MONEY, STABLECOIN, HK_BANK.
beneficiaryTypestringYesEntity type: company, individual, myOrganisation.

Updatable Fields

FieldTypeDescription
companyNamestringUpdated corporate name (when beneficiaryType is company).
firstNamestringUpdated first name (when beneficiaryType is individual).
lastNamestringUpdated last name (when beneficiaryType is individual).
accountNumberstringUpdated account number or IBAN.
bankCodestringUpdated sort code, routing number, or BIC.
bankNamestringUpdated receiving bank institution name.
bankAddressobjectUpdated bank location object (countryCode, city, address).
beneficiaryAddressobjectUpdated recipient address object (addressLine1, city, countryCode, postCode, mobileNumber, email).
customReferenceLabelstringClient-defined tracking tag or custom label.
forFurtherCreditobjectIntermediary correspondent routing object (accountNumber, routingNumber, bankName, bankAddress, countryCode).
isAccountActivebooleanSet to true or false to activate or suspend beneficiary payout routing.

Request Example

{
"currencyId": 1,
"paymentMode": "LOCAL",
"beneficiaryType": "company",
"companyName": "Acme Logistics International Ltd",
"beneficiaryAddress": {
"countryCode": "GB",
"city": "London",
"addressLine1": "250 Bishopsgate",
"postCode": "EC2M 4AA",
"email": "finance@acmelogistics.co.uk"
},
"customReferenceLabel": "Operations-Vendor-01"
}

Response

Success Response (200 OK)

{
"success": true,
"accounts": {
"id": 948201,
"companyId": "1045",
"currencyId": 1,
"paymentMode": "LOCAL",
"beneficiaryType": "company",
"companyName": "Acme Logistics International Ltd",
"accountNumber": "20406080",
"bankCode": "200000",
"bankName": "Barclays Bank UK",
"verificationState": "pending",
"isAccountActive": true,
"customReferenceLabel": "Operations-Vendor-01"
}
}

Response Fields

FieldTypeDescription
successbooleanIndicates if the update succeeded.
accounts.idnumberBeneficiary record ID.
accounts.verificationStatestringNew verification state (pending if re-screening is triggered, or approved).
accounts.companyNamestringMerged company name.

Error Responses

  • 400 Bad Request: Missing mandatory base fields (currencyId, paymentMode, beneficiaryType) or invalid format.
  • 401 Unauthorized: Missing or expired Bearer token.
  • 404 Not Found: Beneficiary ID not found.
  • 500 Internal Server Error: Internal platform error.

Code Examples

cURL

curl -X PUT "https://gateway.ahrvo.network/banking/ibans/v2/recipients/948201" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"currencyId": 1,
"paymentMode": "LOCAL",
"beneficiaryType": "company",
"companyName": "Acme Logistics International Ltd"
}'

Python

import requests

url = "https://gateway.ahrvo.network/banking/ibans/v2/recipients/948201"
headers = {
"Authorization": "Bearer YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
"Accept": "application/json"
}

payload = {
"currencyId": 1,
"paymentMode": "LOCAL",
"beneficiaryType": "company",
"companyName": "Acme Logistics International Ltd"
}

response = requests.put(url, json=payload, headers=headers)
print(response.status_code, response.json())

JavaScript (Node.js)

const axios = require('axios');

const url = 'https://gateway.ahrvo.network/banking/ibans/v2/recipients/948201';
const headers = {
'Authorization': 'Bearer YOUR_ACCESS_TOKEN',
'Content-Type': 'application/json',
'Accept': 'application/json'
};

const payload = {
currencyId: 1,
paymentMode: 'LOCAL',
beneficiaryType: 'company',
companyName: 'Acme Logistics International Ltd'
};

axios.put(url, payload, { headers })
.then(res => console.log('Updated:', res.data))
.catch(err => console.error(err.response ? err.response.data : err.message));

Interactive API Explorer