Skip to main content
Puffin’s Wallet-as-a-Service (WaaS) API lets you create and operate stablecoin wallets programmatically — no key management, no chain-specific infrastructure, no custody build-out. It’s the same X-API-Key you already use for payment intents.
WaaS launches scoped to USDC and USDT on Solana, Polygon, BSC, and Base (Base is USDC-only — there’s no canonical Tether-issued USDT contract there). For collecting any Puffin-supported chain/token as a one-off payment, use payment intents instead.

What you get

Wallets on demand

POST /v1/gateway/api/wallets mints a wallet for a chain + token pair and returns its address immediately.

Balances & deposits

Query live balance and deposit history per wallet — no chain explorer required.

Withdrawals

Send from any wallet you created to an external address, with the same idempotency-key semantics as payment intents.

Deposit webhooks

wallet.deposit.detected and wallet.deposit.confirmed fire the moment funds land — see Webhooks.

Create a wallet

Wallet creation is subject to your plan’s wallet limit, same as the dashboard-created wallets you may already have.

Check a balance

Send a withdrawal

The Idempotency-Key header works exactly like it does for payment intents — replaying the same key returns the original response instead of sending twice.

Full reference

See the Wallets API reference for every field and error code, and Bridging & swaps if you need to move funds between chains rather than just out to an address on the same chain.