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:

  1. Seamless Crypto Purchases: Simplify the process of buying cryptocurrency by enabling direct fiat deposits that are instantly converted and credited to a wallet.
  2. 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.
  3. 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.

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"
}

POST/v1/customer/:customerId/virtualAccount

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 or usdc.

  • Name
    network
    Type
    string
    Description

    The crypto network to which funds are sent. Can be either ethereum, sol, polygon, base, arbitrum, or avalanche.

  • Name
    walletAddress
    Type
    string
    Description

    The wallet address to which funds are sent.

Request

POST
/v1/customer/:customerId/virtualAccount
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"
}

GET/v1/customer/:customerId/virtualAccount/:id

Retrieve a virtual account

Request

GET
/v1/customer/:customerId/virtualAccount/:id
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"
}

GET/v1/customer/:customerId/virtualAccount

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

GET
/v1/customer/:customerId/virtualAccount
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"
    }
]


PATCH/v1/customer/:customerId/virtualAccount/:id

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 or usdc.

  • Name
    network
    Type
    string
    Description

    The crypto network to which funds are sent. Can be either ethereum, sol, polygon, base, arbitrum, or avalanche.

  • Name
    walletAddress
    Type
    string
    Description

    The wallet address to which funds are sent.

Request

PATCH
/v1/customer/:customerId/virtualAccount/:id
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"
}

PATCH/v1/customer/:customerId/virtualAccount/:id/deactivate

Deactivate a virtual account

This endpoint allows you to deactivate a virtual account.

Request

PATCH
/v1/customer/:customerId/virtualAccount/:id/deactivate
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"
}

PATCH/v1/customer/:customerId/virtualAccount/:id/reactivate

Reactivate a virtual account

This endpoint allows you to reactivate a virtual account.

Request

PATCH
/v1/customer/:customerId/virtualAccount/:id/reactivate
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"
}

Was this page helpful?