How routing works
CCTP V2
Used for USDC-only legs between CCTP-enabled chains (Solana and the
supported EVM chains). Native burn-and-mint via Circle’s protocol — no
wrapped assets, no liquidity pool slippage.
NEAR Intents
Used for everything CCTP doesn’t cover: USDT on any chain, BSC legs,
and any cross-asset swap. Solver-network routed via a deposit address.
POST /bridge/quote tells you which
one was selected ("route": "cctp_v2" or "route": "near_intents") along
with the network fee and an ETA, before you commit to it.
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:
bridgeTransfer
you can poll — or just wait for the webhook.
Webhooks
Subscribe tobridge.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.