const customer = await afriex.customers.update("customer-id", {
fullName: "Jane Doe",
});curl --request PATCH \
--url https://sandbox.api.afriex.com/api/v1/customer/{customerId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"fullName": "Jane Doe"
}
'import requests
url = "https://sandbox.api.afriex.com/api/v1/customer/{customerId}"
payload = { "fullName": "Jane Doe" }
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({fullName: 'Jane Doe'})
};
fetch('https://sandbox.api.afriex.com/api/v1/customer/{customerId}', 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://sandbox.api.afriex.com/api/v1/customer/{customerId}",
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([
'fullName' => 'Jane Doe'
]),
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://sandbox.api.afriex.com/api/v1/customer/{customerId}"
payload := strings.NewReader("{\n \"fullName\": \"Jane Doe\"\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://sandbox.api.afriex.com/api/v1/customer/{customerId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fullName\": \"Jane Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.afriex.com/api/v1/customer/{customerId}")
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 \"fullName\": \"Jane Doe\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone": "+2348192837465",
"customerId": "69d5ffe1ab82306f11b032f3",
"reference": "afx121011",
"countryCode": "NG",
"createdAt": "2026-04-08T07:12:33.519Z",
"updatedAt": "2026-04-08T07:20:11.004Z"
}
}Update Customer
Partially updates a customer’s profile. Send at least one of fullName, email, or phone; omitted fields are left unchanged. Unrecognised keys are ignored, and a body with none of the three recognised keys fails with 422. phone is validated against the customer’s stored countryCode (it cannot be changed here) and stored in E.164 format.
const customer = await afriex.customers.update("customer-id", {
fullName: "Jane Doe",
});curl --request PATCH \
--url https://sandbox.api.afriex.com/api/v1/customer/{customerId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"fullName": "Jane Doe"
}
'import requests
url = "https://sandbox.api.afriex.com/api/v1/customer/{customerId}"
payload = { "fullName": "Jane Doe" }
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({fullName: 'Jane Doe'})
};
fetch('https://sandbox.api.afriex.com/api/v1/customer/{customerId}', 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://sandbox.api.afriex.com/api/v1/customer/{customerId}",
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([
'fullName' => 'Jane Doe'
]),
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://sandbox.api.afriex.com/api/v1/customer/{customerId}"
payload := strings.NewReader("{\n \"fullName\": \"Jane Doe\"\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://sandbox.api.afriex.com/api/v1/customer/{customerId}")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fullName\": \"Jane Doe\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.api.afriex.com/api/v1/customer/{customerId}")
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 \"fullName\": \"Jane Doe\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"name": "Jane Doe",
"email": "jane.doe@example.com",
"phone": "+2348192837465",
"customerId": "69d5ffe1ab82306f11b032f3",
"reference": "afx121011",
"countryCode": "NG",
"createdAt": "2026-04-08T07:12:33.519Z",
"updatedAt": "2026-04-08T07:20:11.004Z"
}
}Authorizations
Static business API key issued from the dashboard. A business can provision multiple API keys, each scoped to a configurable set of permissions (e.g. read transactions, create deposits, etc). Permissions are chosen per key at creation time in the dashboard and may be revoked by deleting the key. Manage your keys and their permissions under Developer → API keys in the dashboard.
A request whose key does not carry the permission the target
endpoint requires is rejected with 401 Unauthorized, the same
response an unrecognised, malformed, revoked or disabled key
returns. The API does not distinguish the two cases on the wire.
See the Permissions reference for the permission each endpoint requires.
Headers
Signature of the request payload, used for request authentication where payload signing is enabled for your business.
API version in ISO 8601 format. The only supported version is 2026-05-18, which is also the default when the header is omitted. Any other value is rejected with a 400 Bad Request.
Path Parameters
The unique identifier of the customer
Body
Partial profile update. At least one of fullName, email, or phone must be present. Unrecognised keys are ignored.
Response
Customer updated successfully.
Show child attributes
Show child attributes
