Skip to main content
PATCH
Update Beneficiary
Update the details of an existing saved beneficiary.
PATCH is the current update verb. PUT /beneficiaries/{beneficiaryId} remains supported as a backward-compatible alias with identical behaviour, but new integrations should use PATCH.

Example Request

PATCH/PUT is also how you backfill the new classification fields on an existing beneficiary that predates them — send account_owner_type (and account_category for USD) to bring a legacy record into compliance.

Example Response

The same validation rules apply as when creating a beneficiary, including the new account_owner_type and account_category fields and their grace-period behaviour. See the Create Beneficiary endpoint for required fields by withdrawal method, and the Beneficiary Account Fields migration guide.
The body is validated as a whole, not as a partial patch — send the method’s full required field set, not just the fields you are changing. In particular, a beneficiary on "withdrawal_method": "ach" or "domestic_wire" must include routing_number in the same request, now that it is enforced for both rails.

Authorizations

X-API-Key
string
header
required

Your Rolla API key

Path Parameters

beneficiaryId
string<uuid>
required

Beneficiary UUID

Body

application/json
currency
string
required

Currency code (e.g., NGN, USD)

Example:

"NGN"

label
string

Friendly label for the beneficiary

account_name
string

Account holder name

Maximum string length: 100
Example:

"JOHN DOE"

account_number
string

Bank account number

Maximum string length: 50
Example:

"0123456789"

bank_name
string

Bank name

Maximum string length: 100
Example:

"Access Bank"

bank_code
string

Bank code (required for NGN beneficiaries)

Maximum string length: 20
Example:

"000014"

bank_address
object

Bank's physical address. Required for USD domestic and international wire transfers.

swift_code
string

SWIFT/BIC code (required for international wire)

Maximum string length: 20
email
string<email>

Beneficiary email

Maximum string length: 100
contact_person
string

Contact person name

Maximum string length: 100
beneficiary_address
object

Beneficiary's physical address. Required for USD domestic and international wire transfers.

withdrawal_method
enum<string>

Withdrawal method

Available options:
domestic_wire,
international_wire,
ach,
crypto_usdt,
crypto_usdc,
rolla_transfer
routing_number
string

9-digit ABA routing number. Required for USD ach and domestic_wire.

Maximum string length: 20
wallet_address
string

Crypto wallet address (for crypto withdrawals)

wallet_chain
string

Blockchain network (for crypto withdrawals)

Maximum string length: 50
intermediary_bank_name
string

Intermediary bank name

Maximum string length: 255
intermediary_bank_routing_number
string

Intermediary bank routing number

Maximum string length: 50
recipient_business_id
string<uuid>

Required for rolla_transfer. The UUID of the destination Rolla business.

Example:

"d4e5f6a7-b8c9-0123-defa-456789012345"

account_owner_type
enum<string>

Whether the account is held by an individual or a business. Required for every bank-account beneficiary (any fiat method that is not crypto or rolla_transfer, including NGN bank transfer, domestic_wire, and international_wire). Not applicable to crypto_usdt, crypto_usdc, or rolla_transfer. During the deprecation grace period, requests that omit this field still succeed but return a deprecation_warning object; after the enforcement date the request is rejected with a 400. See the Beneficiary Account Fields migration guide.

Available options:
individual,
business
Example:

"business"

account_category
enum<string>

Whether a USD account is checking or savings. Required only when currency is USD. If you are not sure, use "checking". Subject to the same grace-period behaviour as account_owner_type.

Available options:
checking,
savings
Example:

"checking"

Response

Beneficiary updated successfully

success
boolean
Example:

true

message
string
Example:

"Beneficiary updated successfully"

data
object