Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.spherepay.co/llms.txt

Use this file to discover all available pages before exploring further.

The Transfers API lets you create on-ramp and off-ramp transfers for your customers and track their lifecycle from creation to completion or failure. An on-ramp converts fiat currency (USD, EUR, BRL) into a stablecoin (USDC, USDT, EURC) deposited to a blockchain wallet. An off-ramp does the reverse — it converts stablecoin into fiat and delivers it to a bank account. Both directions use the same POST /v2/transfer endpoint; the direction is determined by what you set as source and destination.

When to use the Transfers API

Use the Transfers API when you want to embed transfers directly into your product and control your own UX. You initiate each transfer explicitly, and SpherePay returns unique deposit instructions per request — the customer sends funds to those instructions, and SpherePay matches the memo to process it. If you want a pre-built, hosted experience with no frontend work, use the Ramp Widget instead.
Transfers APIRamp Widget
ControlFull — you initiate and track every transferMinimal — SpherePay hosts the UX
UX ownershipYour productSpherePay-hosted widget
Best forCustom integrations, programmatic flowsQuick embeds, prototypes

Integration overview

1

Onboard the customer

Complete KYC (individuals) or KYB (businesses) before any transfer can be created. The customer’s verification profile must be approved. See Customers & Onboarding.
2

Create funding instruments

Register the bank account and wallet that will be used as the source and destination for the transfer.
3

Create a transfer

Call POST /v2/transfer with the customer, amount, source, and destination. See full examples below.
4

Track status and handle outcomes

Poll GET /v2/transfer/{id} until the transfer reaches a terminal state (succeeded, failed, refunded, etc.). See Transfer Lifecycle.

Transfer creation

POST https://api.spherepay.co/v2/transfer Use the tabs below to see request bodies for each supported transfer direction.
Sends USD from a bank account via ACH and delivers USDC to an Ethereum wallet.
curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer {{api_key}}" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "100.00",
    "customer": "{{customer_id}}",
    "source": {
      "type": "bank_account",
      "id": "{{bank_account_id}}",
      "currency": "usd",
      "network": "ach"
    },
    "destination": {
      "type": "wallet",
      "id": "{{wallet_id}}",
      "currency": "usdc",
      "network": "ethereum"
    }
  }'

Response

A successful request returns a transfer object with an id, type, and initial status:
{
  "id": "payout_1234567890abcdef12345678",
  "type": "on_ramp",
  "status": "pendingFunding",
  "customer": "customer_123abc..."
}
Store the id — you will use it to poll for status updates.

BRL/PIX transfer constraints

BRL transfers use Brazil’s PIX instant payment network and are subject to additional rules beyond standard USD/EUR transfers. Transfer limits
  • On-ramp (PIX BRL → USDC/USDT): R1.00R1.00 – R7,500.00 per transfer
  • Off-ramp (USDC/USDT → PIX BRL): 1.001.00 – 7,500.00 (stablecoin units, approximately 1:1 with USD)
Limits may be increased based on due diligence. Contact your SpherePay representative for details. Supported wallet networks BRL transfers support polygon, ethereum, base, and tron. Solana is not supported for BRL transfers — requests that pass "network": "sol" will be rejected. Supported stablecoins
StablecoinPolygonEthereumBaseTron
USDC
USDT
USDT on Base and USDC on Tron are not supported for BRL transfers.
Fee parameter Only integratorBpsFeeRate (basis points) is accepted for BRL transfers. integratorFixedFee is not allowed because fees are collected on the stablecoin side, and a fiat-denominated fixed fee would require cross-currency conversion. Verification profile BRL transfers require a separate verification profile (kyc_profile_b for individuals, kyb_profile_b for businesses) in addition to the standard profile. Contact your SpherePay representative to enable access.

Track transfers

List all transfers

GET https://api.spherepay.co/v2/transfer Returns a paginated list of transfers for your account. See the List Transfers API reference for query parameters and response shape.

Retrieve a transfer by ID

GET https://api.spherepay.co/v2/transfer/{id} Returns the current state of a single transfer. Poll this endpoint to track progress. See the Get a Transfer API reference for the full response schema.
Poll GET /v2/transfer/{id} after creation and after each status update until the transfer reaches a terminal state: succeeded, refunded, failed, or canceled. See Transfer Lifecycle for the full status reference.
Last modified on May 12, 2026