Update Virtual Account
curl --request PUT \
--url https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/ \
--header 'Content-Type: <content-type>' \
--header 'api-key: <api-key>' \
--header 'api-secret: <api-secret>' \
--data '
{
"bvn": "22345678901",
"nin": "12345678901"
}
'import requests
url = "https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/"
payload = {
"bvn": "22345678901",
"nin": "12345678901"
}
headers = {
"api-key": "<api-key>",
"api-secret": "<api-secret>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'api-key': '<api-key>',
'api-secret': '<api-secret>',
'Content-Type': '<content-type>'
},
body: JSON.stringify({bvn: '22345678901', nin: '12345678901'})
};
fetch('https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/', 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.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'bvn' => '22345678901',
'nin' => '12345678901'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"api-key: <api-key>",
"api-secret: <api-secret>"
],
]);
$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.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/"
payload := strings.NewReader("{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-secret", "<api-secret>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/")
.header("api-key", "<api-key>")
.header("api-secret", "<api-secret>")
.header("Content-Type", "<content-type>")
.body("{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["api-key"] = '<api-key>'
request["api-secret"] = '<api-secret>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"service": "UPDATE_VIRTUAL_ACCOUNT",
"bvn": "22345678901",
"business": "061C074E2F91F944B93993B4",
"errors": []
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}Virtual Accounts
Update Virtual Account
Upgrade a 9PSB static virtual account by providing BVN and NIN to remove the 30k daily limit.
PUT
/
pms
/
api
/
external
/
request
/
customerReservedAccount
/
{account_number}
/
Update Virtual Account
curl --request PUT \
--url https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/ \
--header 'Content-Type: <content-type>' \
--header 'api-key: <api-key>' \
--header 'api-secret: <api-secret>' \
--data '
{
"bvn": "22345678901",
"nin": "12345678901"
}
'import requests
url = "https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/"
payload = {
"bvn": "22345678901",
"nin": "12345678901"
}
headers = {
"api-key": "<api-key>",
"api-secret": "<api-secret>",
"Content-Type": "<content-type>"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {
'api-key': '<api-key>',
'api-secret': '<api-secret>',
'Content-Type': '<content-type>'
},
body: JSON.stringify({bvn: '22345678901', nin: '12345678901'})
};
fetch('https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/', 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.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'bvn' => '22345678901',
'nin' => '12345678901'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: <content-type>",
"api-key: <api-key>",
"api-secret: <api-secret>"
],
]);
$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.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/"
payload := strings.NewReader("{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("api-key", "<api-key>")
req.Header.Add("api-secret", "<api-secret>")
req.Header.Add("Content-Type", "<content-type>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/")
.header("api-key", "<api-key>")
.header("api-secret", "<api-secret>")
.header("Content-Type", "<content-type>")
.body("{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["api-key"] = '<api-key>'
request["api-secret"] = '<api-secret>'
request["Content-Type"] = '<content-type>'
request.body = "{\n \"bvn\": \"22345678901\",\n \"nin\": \"12345678901\"\n}"
response = http.request(request)
puts response.read_body{
"status": true,
"service": "UPDATE_VIRTUAL_ACCOUNT",
"bvn": "22345678901",
"business": "061C074E2F91F944B93993B4",
"errors": []
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}{
"error": 123,
"message": "<string>"
}Upgrade a 9PSB static virtual account by providing the customer’s BVN and NIN. This removes the 30,000 NGN daily receive limit.
When to use this endpoint:
When a customer’s 9PSB static account (created without initial KYC) is about to or has exceeded the 30k daily receive limit, they must upgrade by providing their BVN and NIN. You can implement this upgrade flow on your platform using this endpoint, or merchants can upgrade directly on the PayVessel dashboard.
Request body:
Submit the customer’s BVN (Bank Verification Number) and NIN (National Identification Number) as strings.
Example request body:
Example response:
cURL:
Parameters:
{
"bvn": "22345678901",
"nin": "12345678901"
}
| Field | Type | Description |
|---|---|---|
bvn | string | Customer’s 11-digit Bank Verification Number |
nin | string | Customer’s 11-digit National Identification Number |
{
"status": true,
"service": "string",
"bvn": "string",
"business": "string",
"errors": []
}
curl -X PUT "https://api.payvessel.com/pms/api/external/request/customerReservedAccount/{account_number}/" \
-H "api-key: YOUR_API_KEY" \
-H "api-secret: YOUR_SECRET" \
-H "Content-Type: application/json" \
-d '{"bvn":"22345678901","nin":"12345678901"}'
- account_number (path, required): The virtual account number to upgrade
- api-key (header, required): Your API key
- api-secret (header, required): Your business API secret
Headers
Your Payvessel public API key
Your Payvessel secret
Request content type
Available options:
application/json Path Parameters
The virtual account number to upgrade
Body
application/json
