Effortless customer verification now available   View changelog
SpherePaySpherePay

Onramper Accounts

Learn how to automate fiat-to-stablecoin transfers using SpherePay’s Onramper Accounts, simplifying your payment infrastructure.

Overview

SpherePay's Onramper Account provides a streamlined, automatic solution to convert fiat currency into stablecoins directly. Designed specifically for developers and businesses integrating with SpherePay, Onramper Accounts leverage dedicated virtual bank accounts linked a specific wallet address, ensuring a seamless fiat-to-stablecoin conversion experience.

High-level workflow

When you set up a virtual account via API, SpherePay creates a unique virtual bank account associated directly with a specific wallet address. Each incoming transfer to this bank account automatically triggers an instant conversion from fiat (USD) into a supported stablecoin (USDC or USDT), which is then immediately delivered to the linked wallet address.

Note

Onramper Accounts are only available via API and are a separate product from SpherePay's Transfers API (Core) and do not share the same data or API endpoints. Any transfers to an Onramper Account are not subjected to the same operation as a normal transfer. Thus, features such as webhooks, Transfer Fees and bank account creation via API are not supported.

Supported Rails & Currencies

Currently, SpherePay supports:

  • Fiat Currency: USD on ACH, Wire, EUR on SEPA
  • Stablecoins:
    • USDC on Arbitrum, Avalanche, Base, Ethereum, Polygon, Solana
    • USDT on Ethereum, Tron

Supported Regions

SpherePay Virtual Accounts are available to end-users globally, except in regions sanctioned or otherwise prohibited by law.

Requirements before creating a Virtual Account

To successfully set up and utilize a Virtual Account, follow these steps:

1. Merchant Setup

2. Customer Setup (if applicable)

If you're opening a Virtual Account for your customers, ensure each customer:

Virtual Account APIs

Create Virtual Account

POST https://api.spherepay.co/v2/virtual-account
POST https://api.sandbox.spherepay.co/v2/virtual-account

For full request/response details, see the Create Virtual Account API Reference.

Request Example

  {
    "customerId": "customer_1ab2c3d4",
    "sourceCurrency": "USD",
    "destinationCurrency": "USDC",
    "network": "ethereum",
    "walletAddress": "0x1234...abcd"
  }

Response Example

{
  "id": "virtualAccount_987xyz654",
  "active": true,
  "fees": {
    "totalBpsRate": "20",
    "integratorFee": {
      "bpsRate": "10"
    },
    "platformFee": {
      "bpsRate": "10"
    }
  },
  "depositInstructions": {
    "currency": "USD",
    "bankName": "Bank of Example",
    "bankAccountNumber": "000123456789",
    "bankRoutingNumber": "1234567890",
    "bankBeneficiaryName": "John Doe",
    "bankBeneficiaryAddress": "123 Main St, Anytown, USA"
  },
  "destination": {
    "currency": "USDC",
    "walletAddress": "0x1234...abcd",
    "network": "ethereum"
  },
  "created": "2025-04-20T21:49:46.697Z",
  "updated": "2025-04-20T21:50:18.854Z"
}

Virtual Account Retrieval (API)

GET https://api.spherepay.co/v2/virtual-account/{virtual_account_id}
GET https://api.sandbox.spherepay.co/v2/virtual-account/{virtual_account_id}

For full request/response details, see the Get a Virtual Account API Reference.


Virtual Account Update (API)

PATCH https://api.spherepay.co/v2/virtual-account/{virtual_account_id}
PATCH https://api.sandbox.spherepay.co/v2/virtual-account/{virtual_account_id}

For full request/response details, see the Update Virtual Account API Reference.


List Virtual Accounts

GET https://api.spherepay.co/v2/virtual-account
GET https://api.sandbox.spherepay.co/v2/virtual-account

For full request/response details, see the List Virtual Accounts API Reference.


Deactivate Virtual Account

PATCH https://api.spherepay.co/v2/virtual-account/{virtual_account_id}/deactivate
PATCH https://api.sandbox.spherepay.co/v2/virtual-account/{virtual_account_id}/deactivate

For full request/response details, see the Deactivate Virtual Account API Reference.


Reactivate Virtual Account

PATCH https://api.spherepay.co/v2/virtual-account/{virtual_account_id}/reactivate
PATCH https://api.sandbox.spherepay.co/v2/virtual-account/{virtual_account_id}/reactivate

For full request/response details, see the Reactivate Virtual Account API Reference.


Transaction Timing

Transfers to your virtual bank account are converted instantly once funds arrive, excluding the transfer time from the customer's bank to the virtual account itself.

Virtual Account verification

When customers link their Virtual Account to another financial platform (e.g. Fintech app, payroll provider, etc.), they may need to verify ownership via:

  • Micro-deposit verification - A small amount (< $1) is deposited and withdrawn to confirm the account is owned by the customer.
  • Challenge deposit verification - One or more small deposits are made, and the customer must enter the exact amounts (e.g. $0.56, $0.84).

Notes:

  • No onramping - Deposits under $1 are always treated as verification, not payments or transfers.
  • Virtual Accounts only - Shared memo/static deposit flows don't support micro-deposit verification.
  • Events generated - Each attempt creates a micro-deposit event with amount, source bank details, and timestamp, which you can display to your user.

Security and Compliance

SpherePay's Virtual Accounts strictly adhere to comprehensive KYB and KYC verification protocols to ensure compliance and security.

Additional Notes

  • Currently, SpherePay Virtual Accounts do not support webhook notifications.
  • To maintain operational simplicity and reliability, event ordering or additional sandbox testing environments for Virtual Accounts are not supported or required.
  • You can list transfers for a specific virtual account using the List Virtual Account Transfers API Reference.

Information

For detailed information regarding applicable fees and transaction limits, please contact your SpherePay sales representative.