curl --request PATCH \
--url https://api.spherepay.co/v2/virtual-account/{virtualAccountId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destinationCurrency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97",
"integratorFeeBps": "100"
}
'import requests
url = "https://api.spherepay.co/v2/virtual-account/{virtualAccountId}"
payload = {
"destinationCurrency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97",
"integratorFeeBps": "100"
}
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({
destinationCurrency: 'usdc',
network: 'ethereum',
walletAddress: '0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97',
integratorFeeBps: '100'
})
};
fetch('https://api.spherepay.co/v2/virtual-account/{virtualAccountId}', 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.spherepay.co/v2/virtual-account/{virtualAccountId}",
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([
'destinationCurrency' => 'usdc',
'network' => 'ethereum',
'walletAddress' => '0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97',
'integratorFeeBps' => '100'
]),
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.spherepay.co/v2/virtual-account/{virtualAccountId}"
payload := strings.NewReader("{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}")
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.spherepay.co/v2/virtual-account/{virtualAccountId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spherepay.co/v2/virtual-account/{virtualAccountId}")
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 = "{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}"
response = http.request(request)
puts response.read_body{
"active": true,
"created": "2025-01-15T10:30:00.000Z",
"depositInstructions": {
"bankAccountNumber": "9876543210",
"bankAddress": "1801 Main St, Kansas City, MO 64108",
"bankBeneficiaryAddress": "123 Finance St, San Francisco, CA 94105",
"bankBeneficiaryName": "Bridge Financial Inc.",
"bankName": "Lead Bank",
"bankRoutingNumber": "021000089",
"bic": "COBADEFFXXX",
"currency": "usd",
"iban": "DE89370400440532013000"
},
"destination": {
"currency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97"
},
"id": "virtualAccount_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"updated": "2025-01-15T12:00:00.000Z",
"customer": "customer_b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
"fee": {
"integratorFee": {
"bpsRate": "100"
},
"platformFee": {
"bpsRate": "30"
},
"totalBpsRate": "130"
}
}{
"code": "address/invalid",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Invalid request parameters",
"status": 400
}{
"code": "resource/not-found",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Resource not found",
"status": 404
}{
"code": "validation/failed",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Validation failed",
"errors": [
{
"detail": "Invalid email format",
"pointer": "/email"
},
{
"detail": "Name is required",
"pointer": "/name"
}
],
"status": 422
}Actualizar la Billetera de Destino de un Onramper Account
Update the destination, network, or fee configuration of a virtual account.
curl --request PATCH \
--url https://api.spherepay.co/v2/virtual-account/{virtualAccountId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"destinationCurrency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97",
"integratorFeeBps": "100"
}
'import requests
url = "https://api.spherepay.co/v2/virtual-account/{virtualAccountId}"
payload = {
"destinationCurrency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97",
"integratorFeeBps": "100"
}
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({
destinationCurrency: 'usdc',
network: 'ethereum',
walletAddress: '0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97',
integratorFeeBps: '100'
})
};
fetch('https://api.spherepay.co/v2/virtual-account/{virtualAccountId}', 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.spherepay.co/v2/virtual-account/{virtualAccountId}",
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([
'destinationCurrency' => 'usdc',
'network' => 'ethereum',
'walletAddress' => '0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97',
'integratorFeeBps' => '100'
]),
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.spherepay.co/v2/virtual-account/{virtualAccountId}"
payload := strings.NewReader("{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}")
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.spherepay.co/v2/virtual-account/{virtualAccountId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spherepay.co/v2/virtual-account/{virtualAccountId}")
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 = "{\n \"destinationCurrency\": \"usdc\",\n \"network\": \"ethereum\",\n \"walletAddress\": \"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97\",\n \"integratorFeeBps\": \"100\"\n}"
response = http.request(request)
puts response.read_body{
"active": true,
"created": "2025-01-15T10:30:00.000Z",
"depositInstructions": {
"bankAccountNumber": "9876543210",
"bankAddress": "1801 Main St, Kansas City, MO 64108",
"bankBeneficiaryAddress": "123 Finance St, San Francisco, CA 94105",
"bankBeneficiaryName": "Bridge Financial Inc.",
"bankName": "Lead Bank",
"bankRoutingNumber": "021000089",
"bic": "COBADEFFXXX",
"currency": "usd",
"iban": "DE89370400440532013000"
},
"destination": {
"currency": "usdc",
"network": "ethereum",
"walletAddress": "0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97"
},
"id": "virtualAccount_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6",
"updated": "2025-01-15T12:00:00.000Z",
"customer": "customer_b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7",
"fee": {
"integratorFee": {
"bpsRate": "100"
},
"platformFee": {
"bpsRate": "30"
},
"totalBpsRate": "130"
}
}{
"code": "address/invalid",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Invalid request parameters",
"status": 400
}{
"code": "resource/not-found",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Resource not found",
"status": 404
}{
"code": "validation/failed",
"correlationId": "28c61e885c6e5eaa78c1a2183a9b883c",
"detail": "Validation failed",
"errors": [
{
"detail": "Invalid email format",
"pointer": "/email"
},
{
"detail": "Name is required",
"pointer": "/name"
}
],
"status": 422
}Autorizaciones
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parámetros de ruta
Cuerpo
The crypto currency deposited funds are converted into. See Supported Rails & Currencies.
usdc, usdt, eurc "usdc"
The blockchain network the destination wallet is on. See Supported Rails & Currencies.
arbitrum, avalanche, base, ethereum, polygon, sol, tron "ethereum"
The on-chain wallet address where converted crypto is sent. Must be valid for the selected network.
"0x4838B106FCe9647Bdf1E7877BF73cE8B0BAD5f97"
Integrator fee in basis points (1 bps = 0.01%). Defaults to 0 if not provided.
"100"
Respuesta
Whether the virtual account is currently active and accepting deposits.
true
Timestamp when the virtual account was created (ISO 8601).
"2025-01-15T10:30:00.000Z"
Bank account details that depositors should use to send fiat funds into the virtual account.
Show child attributes
Show child attributes
The crypto destination where converted funds are sent after deposit.
Show child attributes
Show child attributes
Unique identifier for the virtual account.
"virtualAccount_a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6"
Timestamp when the virtual account was last updated (ISO 8601).
"2025-01-15T12:00:00.000Z"
The customer ID who owns the virtual account.
"customer_b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7"
Fee breakdown for the virtual account, including integrator and platform fees.
Show child attributes
Show child attributes