Pause or reactivate a virtual account
curl --request PATCH \
--url https://api.platform.chipper.ai/v1/virtual-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.platform.chipper.ai/v1/virtual-accounts/{id}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.platform.chipper.ai/v1/virtual-accounts/{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.platform.chipper.ai/v1/virtual-accounts/{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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.platform.chipper.ai/v1/virtual-accounts/{id}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.platform.chipper.ai/v1/virtual-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.platform.chipper.ai/v1/virtual-accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"virtualAccount": {
"id": "va_k3m9x2pq7wz4t6vbn8hd",
"status": "active",
"currency": "NGN",
"bank": "Wema Bank",
"accountNumber": "7812345678",
"accountName": "Chipper / Acme Ltd",
"externalReference": "customer-8841",
"createdAt": "2026-08-01T09:12:44.000Z",
"metadata": {},
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "validation_error",
"message": "Request validation failed",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "unauthorized",
"message": "Invalid API key",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "forbidden",
"message": "API key does not have the required scope",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "not_found",
"message": "Virtual account not found",
"requestId": "req_q7vei435zifs51ia0lqr"
}Virtual accounts
Pause or reactivate a virtual account
Pause an account you no longer want to hand out (a churned customer, suspected abuse) and reactivate it later. The account number never changes, so nothing the customer saved goes stale.
PATCH
/
v1
/
virtual-accounts
/
{id}
Pause or reactivate a virtual account
curl --request PATCH \
--url https://api.platform.chipper.ai/v1/virtual-accounts/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.platform.chipper.ai/v1/virtual-accounts/{id}"
payload = {}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({})
};
fetch('https://api.platform.chipper.ai/v1/virtual-accounts/{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.platform.chipper.ai/v1/virtual-accounts/{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([
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.platform.chipper.ai/v1/virtual-accounts/{id}"
payload := strings.NewReader("{}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.platform.chipper.ai/v1/virtual-accounts/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.platform.chipper.ai/v1/virtual-accounts/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{}"
response = http.request(request)
puts response.read_body{
"virtualAccount": {
"id": "va_k3m9x2pq7wz4t6vbn8hd",
"status": "active",
"currency": "NGN",
"bank": "Wema Bank",
"accountNumber": "7812345678",
"accountName": "Chipper / Acme Ltd",
"externalReference": "customer-8841",
"createdAt": "2026-08-01T09:12:44.000Z",
"metadata": {},
"updatedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "validation_error",
"message": "Request validation failed",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "unauthorized",
"message": "Invalid API key",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "forbidden",
"message": "API key does not have the required scope",
"requestId": "req_q7vei435zifs51ia0lqr"
}{
"error": "not_found",
"message": "Virtual account not found",
"requestId": "req_q7vei435zifs51ia0lqr"
}Authorizations
Your API key: sk_test_… (sandbox) or sk_live_… (production).
Path Parameters
Virtual account id.
Example:
"va_k3m9x2pq7wz4t6vbn8hd"
Body
application/json
Available options:
active, paused Response
The updated virtual account.
Show child attributes
Show child attributes