T402 SandboxTESTNET

Test payments on 7 testnets. No API key. No real funds. Just code.

What is T402?

T402 is an open-source HTTP-native payment protocol for stablecoins. Servers return HTTP 402 with payment instructions — clients sign off-chain, resubmit, and the facilitator verifies and settles on-chain. This sandbox lets you test the entire flow with zero real funds.

Try the Playground →

Payment Flow

1
Client Request
GET /api/data
2
402 Response
Payment-Required header
3
Client Signs
Off-chain signature
4
Verify + Settle
Facilitator confirms
Access Granted
200 OK + data

Quick Start

import { HTTPFacilitatorClient } from "@t402/core";

const client = new HTTPFacilitatorClient({
  url: "https://sandbox.t402.io"
});
import "github.com/t402-io/t402/sdks/go/http"

client := http.NewFacilitatorClient(&http.FacilitatorConfig{
    URL: "https://sandbox.t402.io",
})
from t402 import FacilitatorClient

client = FacilitatorClient({"url": "https://sandbox.t402.io"})
import io.t402.client.HttpFacilitatorClient;

var client = new HttpFacilitatorClient("https://sandbox.t402.io");
# Check supported networks
curl -s https://sandbox.t402.io/supported | jq

# Get faucet links
curl -s https://sandbox.t402.io/faucets | jq

# Verify with magic test address (always succeeds)
curl -s -X POST https://sandbox.t402.io/verify \
  -H "Content-Type: application/json" \
  -d '{"paymentPayload":{"payload":{"payer":"0x0000000000000000000000000000000000CAFE01"}},"paymentRequirements":{"network":"eip155:84532"}}'
Open Playground →

Supported Networks

NetworkCAIP-2TokenStatus
Base Sepoliaeip155:84532USDC...
Ethereum Sepoliaeip155:11155111USDC...
Arbitrum Sepoliaeip155:421614USDC...
Solana Devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1USDC...
TON Testnetton:testnetUSDT...
TRON Niletron:nileUSDT...
Stellar Testnetstellar:testnetUSDC...

Get Test Tokens

Use faucets to get testnet tokens, or use magic test addresses to skip tokens entirely.

Base Sepolia Ethereum Sepolia Arbitrum Sepolia Solana Devnet TON Testnet TRON Nile Stellar Testnet

Magic Test Addresses

Use these as the payer field to get deterministic responses — no real tokens needed. Full list (JSON) →

AddressVerifySettle
0x...CAFE01✓ Valid✓ Success
0x...CAFE02✗ Bad signature✓ Success
0x...CAFE03✗ Expired✓ Success
0x...CAFE11✓ Valid✓ Success
0x...CAFE12✓ Valid✗ Insufficient funds
0x...CAFE13✓ Valid✗ Timeout
0x...CAFE99⏱ 2s delay⏱ 2s delay

Endpoints

MethodPathDescription
GET/healthHealth check
GET/readyReadiness (upstream status)
GET/supportedSupported testnet kinds
GET/faucetsTestnet token faucets
GET/test-addressesMagic test addresses (like Stripe test cards)
GET/examplesSample request/response payloads
GET/errorsError catalog with solutions
GET/usageUsage statistics
GET/historyRequest history (per session)
GET/metricsPrometheus metrics
GET/openapi.yamlOpenAPI spec
POST/verifyVerify payment
POST/settleSettle payment
POST/webhook/testTest webhook delivery
GET/playgroundInteractive API playground

Rate Limits

100 requests/minute per IP. Headers: X-RateLimit-Limit, X-RateLimit-Remaining.

When the upstream facilitator is unreachable, the sandbox returns error responses with "mock": true. Connect a testnet facilitator for real on-chain verification.

Sandbox → Production

SandboxProduction
URLsandbox.t402.iofacilitator.t402.io
API KeyNot neededRequired (X-API-Key)
Networks7 testnets39+ mainnets
TokensTest USDC/USDT (free)Real USDC/USDT
SettlementMock or testnetReal on-chain
Magic AddressesSupportedNot supported
To migrate: change the facilitator URL in your SDK config and add your API key. All request/response formats are identical.

Playground · Errors · OpenAPI · Docs · GitHub · npm · Powered by T402