Money that moves like a message

Press Send and race $50 on Base against ACH, SWIFT and a card. Then pay for one API request and one coffee.

App
Your app
Send $50 toSim
Base: real timeBanks: 1 s = 1 min
  1. BaseLive—

    About 200 ms to a preconfirmation, about 2 s to a block

  2. Same Day ACH—

    Settles at the next FedACH window

  3. SWIFT gpi—

    Most arrive within 30 min; nearly all within 24 h

  4. Card—

    Merchant funded within ~48 h of daily settlement (Visa)

Different milestones: a preconfirmation is not final settlement, a card authorization is not merchant funding.

GET/api/x402/weather
  1. No requests yet

This server speaks x402's headers. The payment leg is simulated: no USDC moves.

Coffee$3.50Sim

No account, no card form, no subscription. Two calls.

Code
17 lines
import { createPublicClient, createWalletClient, custom, erc20Abi, http, parseUnits, type Address } from 'viem'import { base } from 'viem/chains'const USDC = '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913' // native USDC on Base, 6 decimalsconst wallet = createWalletClient({ chain: base, transport: custom(window.ethereum!) })const client = createPublicClient({ chain: base, transport: http() })export async function send(to: Address, dollars: string) {  const [account] = await wallet.requestAddresses()  // Dry-run the transfer first: it fails here, not onchain, if the balance is short.  const { request } = await client.simulateContract({    account, address: USDC, abi: erc20Abi, functionName: 'transfer',    args: [to, parseUnits(dollars, 6)],  })  // The wallet asks the sender to confirm, then broadcasts.  const hash = await wallet.writeContract(request)  // Preconfirmed in about 200 ms, included in a 2 s block.  return client.waitForTransactionReceipt({ hash })}
Make a payment to see the code and the chain
Chain
Cost to send $100 right nowLive
Checking

Gas for a USDC transfer

Measured on Base

Preconfirmed inLive
Measuring

Flashblock interval measured in this tab, nearest 10 ms

Included in a blockLive
Measuring

Block interval

Token

USDC, native on Base

Protocol

x402 is an open standard under the Linux Foundation's x402 Foundation.

What the server does
1 middleware, 1 route

PAYMENT-REQUIRED

What this server asked forSim
scheme
—
network
—
amount
—

Send a request to see the PAYMENT-REQUIRED header

A USDC transfer on Base costsLive
Checking

Gas for a USDC transfer

Settles in USDC on BaseLive
Checking

Gas for a USDC transfer

The two calls

pay()
in the browser
getPaymentStatus()
on your server
Make a payment to see the code and the chain

Nothing on this page moves money. The transfer, the paid request and the checkout are simulated; the fee, the block and the preconfirmation time are measured on Base as you watch. Bank, card and SWIFT timings are published figures for different milestones, linked above.

Base · Block — · —