Update saved recipient
curl --request PATCH \
--url https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id} \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"account_name": "<string>",
"account_number": "<string>",
"bank_code": "<string>",
"bank_name": "<string>",
"chain": "<string>",
"country": "NGA",
"crypto_address": "<string>",
"currency": "<string>",
"label": "<string>"
}
'import requests
url = "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}"
payload = {
"account_name": "<string>",
"account_number": "<string>",
"bank_code": "<string>",
"bank_name": "<string>",
"chain": "<string>",
"country": "NGA",
"crypto_address": "<string>",
"currency": "<string>",
"label": "<string>"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_name: '<string>',
account_number: '<string>',
bank_code: '<string>',
bank_name: '<string>',
chain: '<string>',
country: 'NGA',
crypto_address: '<string>',
currency: '<string>',
label: '<string>'
})
};
fetch('https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_name' => '<string>',
'account_number' => '<string>',
'bank_code' => '<string>',
'bank_name' => '<string>',
'chain' => '<string>',
'country' => 'NGA',
'crypto_address' => '<string>',
'currency' => '<string>',
'label' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}"
payload := strings.NewReader("{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"account_name": "Example Recipient",
"account_number": "0123456789",
"bank_code": "044",
"bank_name": "Access Bank",
"chain": null,
"created_at": "2026-05-24T12:00:00Z",
"crypto_address": null,
"currency": "NGN",
"id": "0197f1f0-0000-7000-8000-000000000002",
"label": "Operations account",
"recipient_type": "fiat",
"updated_at": "2026-05-24T12:00:00Z"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "missing X-Api-Key header"
},
"status": "error"
}{
"error": {
"code": "FORBIDDEN",
"message": "request is not allowed"
},
"status": "error"
}{
"error": {
"code": "NOT_FOUND",
"message": "resource not found"
},
"status": "error"
}Wallets
Update saved recipient
Updates mutable recipient fields. Production requires approved KYB for every fiat-recipient update; bank detail changes also require account verification again. Updating a recipient does not submit a withdrawal or move funds.
PATCH
/
partner
/
wallets
/
recipients
/
{recipient_id}
Update saved recipient
curl --request PATCH \
--url https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id} \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"account_name": "<string>",
"account_number": "<string>",
"bank_code": "<string>",
"bank_name": "<string>",
"chain": "<string>",
"country": "NGA",
"crypto_address": "<string>",
"currency": "<string>",
"label": "<string>"
}
'import requests
url = "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}"
payload = {
"account_name": "<string>",
"account_number": "<string>",
"bank_code": "<string>",
"bank_name": "<string>",
"chain": "<string>",
"country": "NGA",
"crypto_address": "<string>",
"currency": "<string>",
"label": "<string>"
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
account_name: '<string>',
account_number: '<string>',
bank_code: '<string>',
bank_name: '<string>',
chain: '<string>',
country: 'NGA',
crypto_address: '<string>',
currency: '<string>',
label: '<string>'
})
};
fetch('https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'account_name' => '<string>',
'account_number' => '<string>',
'bank_code' => '<string>',
'bank_name' => '<string>',
'chain' => '<string>',
'country' => 'NGA',
'crypto_address' => '<string>',
'currency' => '<string>',
'label' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}"
payload := strings.NewReader("{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.stabyl.com/v1/partner/wallets/recipients/{recipient_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"account_name\": \"<string>\",\n \"account_number\": \"<string>\",\n \"bank_code\": \"<string>\",\n \"bank_name\": \"<string>\",\n \"chain\": \"<string>\",\n \"country\": \"NGA\",\n \"crypto_address\": \"<string>\",\n \"currency\": \"<string>\",\n \"label\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"account_name": "Example Recipient",
"account_number": "0123456789",
"bank_code": "044",
"bank_name": "Access Bank",
"chain": null,
"created_at": "2026-05-24T12:00:00Z",
"crypto_address": null,
"currency": "NGN",
"id": "0197f1f0-0000-7000-8000-000000000002",
"label": "Operations account",
"recipient_type": "fiat",
"updated_at": "2026-05-24T12:00:00Z"
},
"status": "success"
}{
"error": {
"code": "VALIDATION_FAILED",
"message": "invalid request parameters"
},
"status": "error"
}{
"error": {
"code": "UNAUTHORIZED",
"message": "missing X-Api-Key header"
},
"status": "error"
}{
"error": {
"code": "FORBIDDEN",
"message": "request is not allowed"
},
"status": "error"
}{
"error": {
"code": "NOT_FOUND",
"message": "resource not found"
},
"status": "error"
}Authorizations
API credential. Withdrawal quote and submit operations additionally require the documented Ed25519 timestamp, nonce, and signature headers.
Path Parameters
Saved recipient ID returned by create or list recipient endpoints.
Body
application/json
Mutable recipient fields to update. Bank detail changes require account verification again.
Mutable saved-recipient fields to update.
ISO-3166 alpha-3 country code for crypto recipients. Omit to keep the current value.
Example:
"NGA"
Was this page helpful?
⌘I