Faucet

Claim testnet USDC on supported blockchains for development and testing.

How it works:

  1. Call the faucet endpoint with a target chain, wallet address, and amount.
  2. OwlPay routes the request through Circle's sandbox infrastructure.
  3. Testnet USDC arrives in your wallet (typically within seconds).

Key constraints:

  • Available in sandbox environments only
  • Each application has a daily quota of 500 USDC per chain, resetting at midnight UTC.
  • Each chain's quota is tracked independently.

Supported Chains

Chainchain valueAddress FormatExample
Ethereumethereum0x + 40 hex chars0x1234567890abcdef1234567890abcdef12345678
Polygonpolygon0x + 40 hex chars0x1234567890abcdef1234567890abcdef12345678
Arbitrumarbitrum0x + 40 hex chars0x1234567890abcdef1234567890abcdef12345678
Avalancheavalanche0x + 40 hex chars0x1234567890abcdef1234567890abcdef12345678
Optimismoptimism0x + 40 hex chars0x1234567890abcdef1234567890abcdef12345678
StellarstellarG + 55 alphanumeric charsGBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Solanasolana32-44 base58 chars7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV

API Reference

Claim Testnet USDC

POST /api/v1/applications/faucet/usdc

Headers

HeaderRequiredDescription
X-API-KEYYesYour application API key
Content-TypeYesapplication/json
AcceptYesapplication/json

Request Body

ParameterTypeRequiredDescription
chainstringYesTarget blockchain. One of: ethereum, polygon, arbitrum, avalanche, optimism, stellar, solana
addressstringYesRecipient wallet address (10-256 characters)
amountstringYesUSDC amount to claim. Min: 0.01, Max: 500.00. Up to 2 decimal places.

Success Response 200 OK

{
    "chain": "ethereum",
    "address": "0x1234567890abcdef1234567890abcdef12345678",
    "amount": "100.00",
    "daily_used": "100.00",
    "daily_remaining": "400.00",
    "daily_limit": "500.00",
    "circle_payout_id": "b8627ae8-732b-4d25-b947-1df8f4007a29"
}
FieldTypeDescription
chainstringThe blockchain chain name
addressstringThe recipient wallet address
amountstringUSDC amount claimed in this request
daily_usedstringTotal USDC claimed today on this chain
daily_remainingstringRemaining daily quota on this chain
daily_limitstringDaily limit per chain (always 500.00)
circle_payout_idstringCircle payout transaction ID for tracking

Examples

Basic Claim

curl -X POST 'https://harbor-sandbox.owlpay.com/api/v1/applications/faucet/usdc' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY' \
  -d '{
    "chain": "ethereum",
    "address": "0x1234567890abcdef1234567890abcdef12345678",
    "amount": "100.00"
  }'

Claim on Multiple Chains

Each chain has its own independent 500 USDC daily quota, so you can claim across chains freely.

# 200 USDC on Ethereum
curl -X POST 'https://harbor-sandbox.owlpay.com/api/v1/applications/faucet/usdc' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY' \
  -d '{"chain": "ethereum", "address": "0xabc...def", "amount": "200.00"}'

# 300 USDC on Polygon (separate quota)
curl -X POST 'https://harbor-sandbox.owlpay.com/api/v1/applications/faucet/usdc' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY' \
  -d '{"chain": "polygon", "address": "0xabc...def", "amount": "300.00"}'

Check Remaining Quota

There is no separate quota endpoint. Instead, every successful claim response includes daily_used, daily_remaining, and daily_limit, so you can track your usage after each request.

Solana Example

curl -X POST 'https://harbor-sandbox.owlpay.com/api/v1/applications/faucet/usdc' \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY' \
  -d '{
    "chain": "solana",
    "address": "7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV",
    "amount": "50.00"
  }'

Error Code Reference

CodeMeaningAction
7001Daily limit exceededReduce amount or wait for quota reset (midnight UTC)
7002Circle recipient registration failedRetry the request; contact support if persistent
7003Circle payout creation failedRetry the request; contact support if persistent
7004Production environment blockedSwitch to sandbox/staging environment

FAQ

Q: How long does it take to receive the USDC? Testnet payouts typically arrive within a few seconds to a minute, depending on the chain's block confirmation time.

Q: When does the daily quota reset? At midnight UTC each day. Each chain's quota is tracked independently.

Q: Can I claim 500 USDC on Ethereum AND 500 USDC on Polygon in the same day? Yes. The 500 USDC daily limit applies per chain, not across all chains combined.

Q: What happens if a payout fails on Circle's side? You will receive a 7003 error. The amount is not deducted from your daily quota if the payout fails. Retry the request.

Q: Can I use the same wallet address across multiple chains? Yes, for EVM-compatible chains (Ethereum, Polygon, Arbitrum, Avalanche, Optimism) you can use the same 0x address. Stellar and Solana require their native address formats.

Q: Is there a rate limit on API calls (beyond the daily USDC quota)? The standard OwlPay API rate limits apply. There is no additional per-minute throttle specific to the faucet endpoint.