Offloader Wallets API now available  View changelog

Cross-Border Payments

Send international payments using stablecoins as a settlement layer.

Use SpherePay to facilitate cross-border payments by using stablecoins as an efficient settlement layer. This can significantly reduce costs and settlement times compared to traditional international wire transfers.


How It Works

Cross-border payments with stablecoins follow a two-step process:

Sender (Country A): USD → [SpherePay On-Ramp] → USDC

    [Blockchain Transfer - Near Instant]

Recipient (Country B): USDC → [Local Off-Ramp] → Local Fiat

SpherePay handles the USD ↔ USDC conversion. You or your partner handles the local fiat off-ramp in the destination country.


Advantages

Traditional WireStablecoin Settlement
3-5 business daysMinutes (blockchain) + local settlement
$25-50 wire feesLower fees
Opaque FX ratesTransparent on-chain
Limited visibilityFull tracking on blockchain

Current Limitations

Caution

Geographic Restrictions: SpherePay currently supports USD rails in the United States only. For cross-border payments, you'll need a local partner or alternative solution for the destination country's fiat off-ramp.

SpherePay can handle:

  • ✅ USD → USDC conversion (on-ramp in US)
  • ✅ USDC → USD conversion (off-ramp in US)
  • ✅ Stablecoin transfers between wallets

You'll need to handle:

  • ❌ Local fiat rails in other countries (EUR, GBP, MXN, etc.)
  • ❌ Local regulatory compliance

Implementation Pattern

Step 1: On-Ramp (Sender Side)

Convert the sender's USD to USDC:

curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "customer_sender",
    "type": "onRamp",
    "sourceAmount": "1000.00",
    "sourceCurrency": "USD",
    "destinationCurrency": "USDC",
    "destinationNetwork": "solana",
    "bankAccountId": "bank_sender",
    "walletId": "wallet_settlement"
  }'

Step 2: Blockchain Transfer

Transfer USDC to the recipient's wallet (or your partner's settlement wallet):

curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "customer_sender",
    "type": "cryptoToCrypto",
    "sourceAmount": "1000.00",
    "sourceCurrency": "USDC",
    "sourceNetwork": "solana",
    "destinationCurrency": "USDC",
    "destinationNetwork": "solana",
    "sourceWalletId": "wallet_settlement",
    "destinationAddress": "recipient_wallet_address"
  }'

Step 3: Off-Ramp (Recipient Side)

If the recipient is US-based, use SpherePay to convert back to USD:

curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "customerId": "customer_recipient",
    "type": "offRamp",
    "sourceAmount": "1000.00",
    "sourceCurrency": "USDC",
    "sourceNetwork": "solana",
    "destinationCurrency": "USD",
    "walletId": "wallet_recipient",
    "bankAccountId": "bank_recipient"
  }'

For non-US recipients, use a local partner or exchange for the final fiat conversion.


Use Case: Remittances

For remittance platforms:

  1. Collect USD from sender in the US
  2. Convert to USDC via SpherePay on-ramp
  3. Transfer USDC to your partner's settlement wallet in destination country
  4. Partner converts USDC to local currency and disburses to recipient
async function processRemittance(senderId, recipientCountry, amount) {
  // Step 1: On-ramp USD to USDC
  const onRamp = await createTransfer({
    customerId: senderId,
    type: 'onRamp',
    sourceAmount: amount,
    sourceCurrency: 'USD',
    destinationCurrency: 'USDC',
    destinationNetwork: 'solana',
    bankAccountId: senderBankAccount,
    walletId: settlementWallet,
  });

  // Wait for on-ramp completion
  await waitForTransfer(onRamp.id);

  // Step 2: Transfer to destination partner
  const partnerWallet = getPartnerWallet(recipientCountry);
  const cryptoTransfer = await createTransfer({
    customerId: senderId,
    type: 'cryptoToCrypto',
    sourceAmount: amount,
    sourceCurrency: 'USDC',
    sourceNetwork: 'solana',
    destinationCurrency: 'USDC',
    destinationNetwork: 'solana',
    sourceWalletId: settlementWallet,
    destinationAddress: partnerWallet,
  });

  // Notify partner of incoming settlement
  await notifyPartner(recipientCountry, cryptoTransfer.id, amount);

  return { onRamp, cryptoTransfer };
}

Compliance Requirements

Sender Side (US)

  1. KYC verification — All senders must complete KYC
  2. Source of funds — May require documentation for large amounts

Recipient Side

  1. Local regulations — Partner must comply with local money transmission laws
  2. KYC/AML — Recipient verification per local requirements
  3. Reporting — Cross-border transaction reporting as required

Best Practices

  1. Choose the right network: Use Solana or Base for lower fees and faster finality
  2. Monitor FX rates: If converting to non-USD, track rates for pricing accuracy
  3. Build redundancy: Have backup partners for destination countries
  4. Track end-to-end: Poll transfer status and use blockchain monitoring for full visibility
  5. Handle failures gracefully: Build retry and refund logic

Settlement Times

LegTime
USD → USDC (ACH)2-3 business days
USD → USDC (Wire)Same/next business day
USDC transfer (blockchain)Seconds to minutes
USDC → Local FiatDepends on local partner

Total time with wire: As fast as same-day for the SpherePay portion.


Coming Soon

SpherePay is actively expanding international support. Check our Changelog for updates on:

  • Additional fiat currencies (EUR, GBP, MXN)
  • International customer support
  • Direct cross-border rails