Skip to main content
You’ve created a service and a paywall. Now confirm the full payment flow works against the generated URL.
Testing with Mainnet mode off? Grab testnet USDC from the Testnet USDC Faucet before you run the steps below.

With curl (x402)

The first request should return 402. The second request — with payment proof — should return your upstream response.
Step 1 — request the protected resource
curl -i https://myproceeds.xyz/api/x402/pay/{serviceId}/{slug}
Step 2 — retry with payment proof
curl -i \
  -H "X-Payment: YOUR_PAYMENT_RECEIPT" \
  https://myproceeds.xyz/api/x402/pay/{serviceId}/{slug}
For a complete x402 client implementation in JavaScript or React, see x402.

With an MPP-aware client

Tempo-enabled paywalls expose an MPP URL. The mppx CLI handles the 402 challenge and retry for you:
npx mppx https://myproceeds.xyz/api/mpp/pay/{serviceId}/{slug}
For programmatic use, see MPP.

From Claude Code, Cursor, or Codex

You can also test by letting an AI agent pay the URL for you. Install a wallet tool, fund it, and hand your agent the paywall URL — see Pay with an agent.

What success looks like

StatusMeaning
402 Payment RequiredPaywall is live, no payment was provided.
200 OKPayment was validated and the upstream response was proxied.
4xx/5xx after paymentPayment succeeded, but the upstream call failed. Check Events.
When the request completes, the matching transaction in the dashboard moves from Pending to Completed. A failed flow ends in Failed.

Next

Monitor payments

Watch transactions and events as your tests run.

Troubleshooting

Resolve challenge, payment, and fulfillment failures.