Skip to main content
Prepaid suppliers need an onchain balance before they will serve a paid request, and putting that balance onchain is normally the one step that demands gas. The top-up gateway removes it. You sign a gasless USDC authorization; Meridian settles it, bridges it to Base if needed, and a relayer performs the onchain credit on your behalf.

The lifecycle

1

Ask for a challenge

POST /v1/{merchant}/topups with a buyer and no payment returns 402 Payment Required. The response carries one payment requirement per eligible source chain in accepts[] and per-source bounds in topup.sources[]. Omit amount and the gateway quotes your full headroom.
2

Sign a gasless authorization

Pick a source and sign an EIP-3009 TransferWithAuthorization against that chain’s token domain. The signature fixes the token, amount, facilitator, validity window, payer, and nonce.
3

Submit and poll

Retry the same request with the base64 payment in the X-PAYMENT header. Same-chain payments settle directly; other sources enter bridging while Across delivers to Base. The gateway then measures the exact Base credit and calls the merchant contract from its relayer wallet.
Every response reports the source settlementTx, the optional Base fillTx, the Base depositTx, and the exact credited amount, so the whole path is auditable onchain.

Payment sources

Most sources pay in USDC; Robinhood Chain pays in USDG. Cross-chain payments are delivered as USDC on Base. Always use the token address and EIP-712 domain returned in the payment requirements rather than a local table.

Why it’s gasless

Payments pass through the verified X402ProxyFacilitator contract on Base. The relayer holds settled funds only in the window between settlement and merchant fulfilment, and every transaction it makes is recorded in the top-up status.

Top-up API

Endpoints, request shapes, status codes, and reject codes.

Suppliers

Which supplier balances can be funded.