Get testnet tokens
Native gas
You need a little of each chain’s native token to deploy your pool and to claim. Chain faucets provide it free.
Test stablecoins
Circle runs a public faucet for testnet USDC and EURC across most supported chains.
The happy path
Deploy a pool
Pick a cheap chain — Base Sepolia is a good default.
Open your checkout
Confirm the verified badge appears before payment options.
Pay both ways
Once with a connected wallet, once by copying the deposit address and sending manually. They behave differently and both need to work.
Watch the webhook
Confirm
payment_confirmed arrives and your signature verification passes.Claim
Do a full round trip. Confirm the funds land in your payout wallet and the amount matches 99% of the order.
The failure paths
More valuable than the happy path, because these are what actually cost you money in production.Customer closes the tab immediately
Customer closes the tab immediately
Pay, then close before the success screen.Expect: no browser callback, but the webhook still arrives and the order still fulfils. If your fulfilment depended on the callback, you’ve just found it.
Duplicate webhook delivery
Duplicate webhook delivery
Replay a delivery from your logs, or return a 500 once and let us retry.Expect: the second delivery is a no-op. If you shipped twice, key on
X-Webhook-Id.Underpayment
Underpayment
Send less than quoted on the deposit rail.Expect: status
underpaid with the shortfall shown. Confirm you have a documented response. Edge cases.Overpayment
Overpayment
Send more than quoted.Expect: the full amount arrives. The excess is yours to refund manually.
Wrong token
Wrong token
Send a token you haven’t enabled.Expect:
wrong_token, surfaced rather than silently lost.Late payment
Late payment
Let a quote expire, then pay the address anyway.Expect: funds arrive and are credited as paid late. Decide whether you honour the old price.
Broken verification
Broken verification
Temporarily change
settlementAnchor to a different address.Expect: the checkout blocks with a configuration mismatch and hides the payment address. If it lets the customer pay, your anchor isn’t wired up. Change it back afterwards.Testing webhooks locally
Your endpoint needs to be reachable from the internet. A tunnel works:Before you switch to mainnet
Go-live checklist
Everything to confirm before real money.