Skip to main content
Puffin automatically routes cross-chain transfers the fastest safe way for the specific pair you’re moving — you call one endpoint, we handle picking and executing the route.

How it works

Smart routing

Every transfer is evaluated against the assets and chains involved, and routed however it completes fastest and most reliably — no wrapped assets, no manual liquidity-pool slippage to account for.

One endpoint, always

Same-asset transfers between chains and cross-asset swaps both go through the same call. You never choose the mechanism yourself.
POST /bridge/quote tells you the network fee and an ETA before you commit — route in the response is an internal routing identifier for support purposes only; it’s not something you need to branch on client-side.

Quote, then execute

ourFee is Puffin’s platform + gas-recovery charge on top of the quoted network fee — see Pricing for how it’s configured. When you’re ready:
This debits the source wallet immediately and returns a bridgeTransfer you can poll — or just wait for the webhook.

Webhooks

Subscribe to bridge.completed and bridge.failed — see Webhooks for the full payload shape.
Bridging is USDC/USDT-only today, matching the Wallet-as-a-Service chain/token matrix (Solana, Polygon, BSC, Base). A bridge request for an unconfigured route returns bridge_not_configured — this is an operational gate on our side while a corridor is being rolled out, not something you can work around client-side.