Accepting Transfers through the API
Ready to automate fiat on‑ramps and off‑ramps? Integrate Sphere’s Transfer API in minutes to let your users move seamlessly between fiat and stablecoins.
Easily integrate Sphere’s Transfer API into your backend so that your users can convert fiat into stablecoins (on‑ramp) or redeem stablecoins for fiat (off‑ramp), all through a single, secure endpoint.
Prerequisites
- A Sphere account with an active API secret key.
- A verified Customer (KYC approved).
- Wallet addresses and bank accounts registered for transfers.
Transfer API
https://api.spherepay.co/v1/transfer
https://api.sandbox.spherepay.co/v1/transfer
For full request/response details, see the Create Transfer API Reference.
Request Example
{
"amount": "100",
"customer": "{{customer_id}}",
"source": {
"id": "{{bank_account_id}}",
"currency": "usd",
"network": "achPush"
},
"destination": {
"id": "{{wallet_account_id}}",
"currency": "usdc",
"network": "ethereum"
}
}
Tip: Make sure your source.currency and destination.currency align (e.g. "usd" → "usdc").
If you receive a 200
response with "status"
: "pending"
, the transfer is created and awaiting funds.
Response Example
{
"ok": true,
"object": "object",
"statusCode": 200,
"error": null,
"message": "success",
"data": {
"transfer": {
"id": "{{transfer_id}}",
"number": 18,
"type": "onRamp",
"status": "pending",
"meta": {},
"lookupKey": null,
"amount": "10.00",
"finalAmount": null,
"source": {
"id": "{{bank_account_id}}",
"currency": "usd",
"network": "wire"
},
"destination": {
"id": "{{wallet_account_id}}",
"currency": "usdc",
"network": "ethereum"
},
"instructions": {
"memo": "BRGSFNHQBH3RKPEQDMD2",
"imad": null,
"omad": null,
"human": "Send 10 usd via the wire network from {{bank_account_id}} with an account number of ********5771 to {{bank_account_id}} with an account number of ********2035. After sending usd, the transfer will be funded and 10 of usdc will be on-ramped to {{wallet_account_id}} with an address of {{wallet_address}} on the ethereum network.",
"machine": "",
"resource": {
"id": "{{bank_account_id}}",
"status": "active",
"bankName": "Lead Bank",
"accountHolderName": "Sphere Bank Account",
"accountName": "Sphere Bank Account",
"accountNumber": "1234567890",
"customer": "{{customer_id}}",
"last4": "2035",
"routingNumber": "0987654321",
"bankAddressString": "1801 Main St. Kansas City MO 64108, Kansas, United States of America",
"meta": {},
"currency": "usd",
"accountType": "checking",
}
},
"mock": false,
"customer": "{{customer_id}}",
}
},
"ts": "{{timestamp}}",
"request": "{{request_id}}"
}
Request Example
{
"amount": "100",
"customer": "{{customer_id}}",
"source": {
"id": "{{wallet_account_id}}",
"currency": "usdc",
"network": "ethereum"
},
"destination": {
"id": "{{bank_account_id}}",
"currency": "usd",
"network": "achPush"
}
}
Tip: Make sure your source.currency and destination.currency align (e.g. "usdc" → "usd").
If you receive a 200
response with "status"
: "pending"
, the transfer is created and awaiting funds.
Response Example
{
"ok": true,
"object": "object",
"statusCode": 200,
"error": null,
"message": "success",
"data": {
"transfer": {
"id": "{{transfer_id}}",
"number": 18,
"type": "onRamp",
"status": "pending",
"meta": {},
"lookupKey": null,
"amount": "10.00",
"finalAmount": null,
"source": {
"id": "{{bank_account_id}}",
"currency": "usd",
"network": "wire"
},
"destination": {
"id": "{{wallet_account_id}}",
"currency": "usdc",
"network": "ethereum"
},
"instructions": {
"memo": "BRGSFNHQBH3RKPEQDMD2",
"imad": null,
"omad": null,
"human": "Send 10 usdc on the base network from 0x02cXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXD3 to 0x9dXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX1d4.",
"machine": "",
"resource": {
"id": "{{bank_account_id}}",
"status": "active",
"bankName": "Lead Bank",
"accountHolderName": "Sphere Bank Account",
"accountName": "Sphere Bank Account",
"accountNumber": "1234567890",
"customer": "{{customer_id}}",
"last4": "2035",
"routingNumber": "0987654321",
"bankAddressString": "1801 Main St. Kansas City MO 64108, Kansas, United States of America",
"meta": {},
"currency": "usd",
"accountType": "checking",
}
},
"mock": false,
"customer": "{{customer_id}}",
}
},
"ts": "{{timestamp}}",
"request": "{{request_id}}"
}
Choosing Your SpherePay Solution
Explore the different integration options—Dashboard, Ramp, API, and combinations—to find the best fit for your business needs.
Accepting Transfers through Ramp Widget
Seamlessly integrate Sphere's Ramp Widget into your platform to enable users to convert fiat currencies into stablecoins with ease and security.