Faucet
Claim testnet USDC on supported blockchains for development and testing.
How it works:
- Call the faucet endpoint with a target chain, wallet address, and amount.
- OwlPay routes the request through Circle's sandbox infrastructure.
- 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
| Chain | chain value | Address Format | Example |
|---|---|---|---|
| Ethereum | ethereum | 0x + 40 hex chars | 0x1234567890abcdef1234567890abcdef12345678 |
| Polygon | polygon | 0x + 40 hex chars | 0x1234567890abcdef1234567890abcdef12345678 |
| Arbitrum | arbitrum | 0x + 40 hex chars | 0x1234567890abcdef1234567890abcdef12345678 |
| Avalanche | avalanche | 0x + 40 hex chars | 0x1234567890abcdef1234567890abcdef12345678 |
| Optimism | optimism | 0x + 40 hex chars | 0x1234567890abcdef1234567890abcdef12345678 |
| Stellar | stellar | G + 55 alphanumeric chars | GBXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX |
| Solana | solana | 32-44 base58 chars | 7EcDhSYGxXyscszYEp35KHN8vvw3svAuLKTzXwCFLtV |
API Reference
Claim Testnet USDC
POST /api/v1/applications/faucet/usdc
Headers
| Header | Required | Description |
|---|---|---|
X-API-KEY | Yes | Your application API key |
Content-Type | Yes | application/json |
Accept | Yes | application/json |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
chain | string | Yes | Target blockchain. One of: ethereum, polygon, arbitrum, avalanche, optimism, stellar, solana |
address | string | Yes | Recipient wallet address (10-256 characters) |
amount | string | Yes | USDC 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"
}| Field | Type | Description |
|---|---|---|
chain | string | The blockchain chain name |
address | string | The recipient wallet address |
amount | string | USDC amount claimed in this request |
daily_used | string | Total USDC claimed today on this chain |
daily_remaining | string | Remaining daily quota on this chain |
daily_limit | string | Daily limit per chain (always 500.00) |
circle_payout_id | string | Circle 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
| Code | Meaning | Action |
|---|---|---|
| 7001 | Daily limit exceeded | Reduce amount or wait for quota reset (midnight UTC) |
| 7002 | Circle recipient registration failed | Retry the request; contact support if persistent |
| 7003 | Circle payout creation failed | Retry the request; contact support if persistent |
| 7004 | Production environment blocked | Switch 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.
Updated about 12 hours ago