> ## 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.

# Treasury Management with Fiat-to-Stablecoin Conversion

> Convert company funds between fiat and stablecoins for treasury operations — yield, faster settlement, or multi-currency strategy.

Use SpherePay to manage your company's treasury by converting between USD and stablecoins. This enables you to hold funds in stablecoins for yield, faster settlement, or as part of a multi-currency treasury strategy.

## Overview

Treasury management with SpherePay involves three motions:

1. **On-ramping** — Converting USD from your bank account to USDC or USDT.
2. **Off-ramping** — Converting stablecoins back to USD when fiat is needed.
3. **Monitoring** — Tracking balances and transfer status across both rails.

```mermaid theme={"dark"}
flowchart LR
    BA["Company<br/>bank account"] -->|On-ramp (USD → USDC)| SP["SpherePay"]
    SP -->|USDC| W["Company<br/>wallet"]
    W -->|Off-ramp (USDC → USD)| SP
    SP -->|USD| BA
```

## First-party transactions

Treasury operations are typically **first-party transactions** — you're moving funds on behalf of your own legal entity, not a third party.

<Info>
  First-party transactions still require KYB verification. Complete [business verification](/concepts/onboarding/business-kyb) for your company before executing transfers.
</Info>

## Implementation options

### Option 1 — Manual transfers via API

Best for ad-hoc conversions based on market conditions or cash needs.

```bash theme={"dark"}
# Convert $10,000 USD to USDC on Solana
curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "10000.00",
    "customer": "customer_your_company",
    "source": {
      "type": "bank_account",
      "id": "bankAccount_xxx",
      "currency": "usd",
      "network": "ach"
    },
    "destination": {
      "type": "wallet",
      "id": "wallet_xxx",
      "currency": "usdc",
      "network": "sol"
    }
  }'
```

### Option 2 — Virtual accounts for automated on-ramping

Best for regular deposits that should automatically convert to stablecoins.

1. [Create an Onramper Account](/concepts/automation/onramper-accounts) linked to your customer.
2. Wire funds to the virtual account's bank details.
3. SpherePay automatically converts deposits to stablecoins.

### Option 3 — Offloader Wallet for automated off-ramping

Best for stablecoin payouts that should automatically convert to fiat.

1. [Create an Offloader Wallet](/concepts/automation/offloader-wallets) linked to your customer.
2. Send stablecoins to the Offloader Wallet address.
3. SpherePay automatically converts to USD and deposits to your bank.

## Example — round-trip treasury flow

### Step 1 — On-ramp (USD → USDC)

```bash theme={"dark"}
curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "50000.00",
    "customer": "customer_your_company",
    "source": {
      "type": "bank_account",
      "id": "bankAccount_xxx",
      "currency": "usd",
      "network": "wire"
    },
    "destination": {
      "type": "wallet",
      "id": "wallet_xxx",
      "currency": "usdc",
      "network": "ethereum"
    }
  }'
```

### Step 2 — Hold and manage USDC

Store USDC in your registered wallet. You can:

* Transfer between wallets on different networks.
* Send to external addresses.
* Monitor balances via the dashboard or API.

### Step 3 — Off-ramp (USDC → USD)

When you need fiat:

```bash theme={"dark"}
curl -X POST https://api.spherepay.co/v2/transfer \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": "25000.00",
    "customer": "customer_your_company",
    "source": {
      "type": "wallet",
      "id": "wallet_xxx",
      "currency": "usdc",
      "network": "ethereum"
    },
    "destination": {
      "type": "bank_account",
      "id": "bankAccount_xxx",
      "currency": "usd",
      "network": "wire"
    }
  }'
```

## Monitoring and reporting

### Via dashboard

1. Navigate to **Transfers** to view all treasury movements.
2. Filter to show only your company's transactions.
3. Export reports for accounting.

### Via API

```bash theme={"dark"}
# Get all transfers for your company
curl "https://api.spherepay.co/v2/transfer?customer=customer_your_company" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

## Best practices

* **Use dedicated customer records.** Create a separate customer for treasury vs. customer-facing operations to keep reporting clean.
* **Poll for status.** Use `GET /v2/transfer/{id}` to check transfer and deposit status.
* **Plan for settlement times.** ACH takes 1–2 business days; wires are same/next day.
* **Pre-fund for liquidity needs.** If you'll need fiat on a specific day, off-ramp ahead of the deadline rather than at the moment of need.

## Related

<CardGroup cols={2}>
  <Card title="Transfers API" icon="arrow-right-left" href="/concepts/transfers/overview">
    Full transfer creation and tracking reference.
  </Card>

  <Card title="Onramper Accounts" icon="landmark" href="/concepts/automation/onramper-accounts">
    Automated on-ramping via virtual bank accounts.
  </Card>

  <Card title="Offloader Wallets" icon="wallet" href="/concepts/automation/offloader-wallets">
    Automated off-ramping from a dedicated wallet address.
  </Card>

  <Card title="Business KYB" icon="building" href="/concepts/onboarding/business-kyb">
    KYB requirements for treasury operations.
  </Card>
</CardGroup>
