Virtual Accounts
Virtual accounts provide unique routing and account numbers under a customer's name, enabling seamless acceptance of wire transfers and ACH deposits. These deposits are directly on-ramped to a designated wallet address chosen by the customer.
Example use cases:
- Seamless Crypto Purchases: Simplify the process of buying cryptocurrency by enabling direct fiat deposits that are instantly converted and credited to a wallet.
- Streamlined Business Operations: Businesses can use virtual accounts to collect payments from clients in fiat and convert them into crypto for treasury management or operational needs.
- Proof of Ownership for Compliance: For individuals or businesses requiring documented proof of ownership, such as for regulatory compliance, having the virtual account under the customer's name ensures credibility and trust.
This feature ensures a seamless and personalized experience for customers.
Endpoints
How to Access Virtual Accounts
Note that Virtual Accounts are a standalone product with separate pricing. Contact the Sphere team to get started.
The Virtual Account object
The following is the json object representation of a Sphere virtualAccount.
Properties
- Name
id
- Type
- string
- Description
A unique identifier for the object.
- Name
active
- Type
- boolean
- Description
Whether the virtual account is active.
- Name
depositInstructions
- Type
- object
- Description
The deposit instructions for the virtual account.
- Name
currency
- Type
- string
- Description
The currency of the virtual account.
- Name
bankName
- Type
- string
- Description
The name of the bank associated with the virtual account.
- Name
bankAddress
- Type
- string
- Description
The address of the bank associated with the virtual account.
- Name
bankAccountNumber
- Type
- string
- Description
The account number of the bank associated with the virtual account.
- Name
bankRoutingNumber
- Type
- string
- Description
The routing number of the bank associated with the virtual account.
- Name
bankBeneficiaryName
- Type
- string
- Description
The name of the beneficiary of the bank associated with the virtual account.
- Name
bankBeneficiaryAddress
- Type
- string
- Description
The address of the beneficiary of the bank associated with the virtual account.
- Name
destination
- Type
- object
- Description
The destination of the virtual account.
- Name
currency
- Type
- string
- Description
Currency of the crypto received from sending funds to the virtual account.
- Name
walletAddress
- Type
- string
- Description
The wallet address to which funds are sent.
- Name
network
- Type
- string
- Description
The crypto network to which funds are sent.
- Name
updated
- Type
- string
- Description
Datetime at which the account was last updated.
- Name
created
- Type
- string
- Description
Datetime at which the account was created.
Virtual Account Object
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": true,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}
Create a virtual account
Parameters
- Name
destinationCurrency
- Type
- string
- Description
The currency of the crypto received from sending funds to the virtual account. Can be either
usdt
orusdc
.
- Name
network
- Type
- string
- Description
The crypto network to which funds are sent. Can be either
ethereum
,sol
,polygon
,base
,arbitrum
, oravalanche
.
- Name
walletAddress
- Type
- string
- Description
The wallet address to which funds are sent.
Request
curl https://api.spherepay.co/v1/customer/:customerId/virtualAccount \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"destinationCurrency": "usdt",
"network": "ethereum",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051"
}'
Response
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": true,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}
Retrieve a virtual account
Request
curl https://api.spherepay.co/v1/customer/:customerId/virtualAccount/virtualAccount_d5e591a16b1849a1b7596fd5b663cd83 \
-H "Authorization: Bearer {token}"
Response
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": true,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}
List virtual accounts
This endpoint allows you to retrieve a paginated list of all your virtual accounts. By default, a maximum of ten virtual accounts are shown per page.
Parameters
- Name
limit
- Type
- number
- Description
Limit the number of bank accounts returned. The maximum value per query is 200. Defaults to 25.
- Name
startDate
- Type
- string
- Description
The start datetime of the bank accounts to retrieve.
- Name
endDate
- Type
- string
- Description
The end datetime of the bank accounts to retrieve.
Request
curl -G https://api.spherepay.co/v1/customer/:customerId/virtualAccount \
-H "Authorization: Bearer {token}" \
-d limit=2
Response
[
{
"id": "virtualAccount_341d1ac9820d4f478abc4c91c85c3d0a",
"active": true,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:28:00.738Z",
"updated": "2025-01-03T08:33:59.750Z"
},
{
"id": "virtualAccount_7ad88e9377424d05bb144034d82f29ef",
"active": false,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "444444444444",
"bankRoutingNumber": "333333333",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdc",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T09:05:11.483Z",
"updated": "2025-01-03T09:05:45.249Z"
}
]
Update a virtual account
Parameters
- Name
destinationCurrency
- Type
- string
- Description
The currency of the crypto received from sending funds to the virtual account. Can be either
usdt
orusdc
.
- Name
network
- Type
- string
- Description
The crypto network to which funds are sent. Can be either
ethereum
,sol
,polygon
,base
,arbitrum
, oravalanche
.
- Name
walletAddress
- Type
- string
- Description
The wallet address to which funds are sent.
Request
curl https://api.spherepay.co/v1/customer/:customerId/virtualAccount/:id \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"destinationCurrency": "usdt",
"network": "ethereum",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051"
}'
Response
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": true,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}
Deactivate a virtual account
This endpoint allows you to deactivate a virtual account.
Request
curl https://api.spherepay.co/v1/customer/:customerId/virtualAccount/:id/deactivate \
-H "Authorization: Bearer {token}"
Response
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": false,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}
Reactivate a virtual account
This endpoint allows you to reactivate a virtual account.
Request
curl https://api.spherepay.co/v1/customer/:customerId/virtualAccount/:id/reactivate \
-H "Authorization: Bearer {token}"
Response
{
"id": "virtualAccount_d5e591a16b1849a1b7596fd5b663cd83",
"active": false,
"depositInstructions": {
"currency": "usd",
"bankName": "Lead Bank",
"bankAddress": "1801 Main St., Kansas City, MO 64108",
"bankAccountNumber": "111111111111",
"bankRoutingNumber": "222222222",
"bankBeneficiaryName": "JOHN DOE",
"bankBeneficiaryAddress": "Lala Land Road 123, Chicago, IL 60606"
},
"destination": {
"currency": "usdt",
"walletAddress": "0xc257274276a4e539741ca11b590b9447b26a8051",
"network": "ethereum"
},
"created": "2025-01-03T08:19:25.234Z",
"updated": "2025-01-03T08:47:43.366Z"
}