https://github.com/t402-io/t402
t402 Payment Protocol - The Official Payment Protocol for USDT
https://github.com/t402-io/t402
erc-4337 ethereum gasless http-402 payments solana stablecoin ton tron usdt
Last synced: 4 months ago
JSON representation
t402 Payment Protocol - The Official Payment Protocol for USDT
- Host: GitHub
- URL: https://github.com/t402-io/t402
- Owner: t402-io
- License: apache-2.0
- Created: 2026-01-09T06:07:50.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2026-02-05T17:00:48.000Z (5 months ago)
- Last Synced: 2026-02-05T20:53:56.728Z (5 months ago)
- Topics: erc-4337, ethereum, gasless, http-402, payments, solana, stablecoin, ton, tron, usdt
- Language: TypeScript
- Homepage: https://docs.t402.io
- Size: 141 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Support: SUPPORT.md
- Roadmap: ROADMAP.md
- Notice: NOTICE
Awesome Lists containing this project
README
# t402
[](https://www.npmjs.com/package/@t402/core)
[](https://pypi.org/project/t402/)
[](https://pkg.go.dev/github.com/t402-io/t402/sdks/go)
[](https://central.sonatype.com/artifact/io.t402/t402)
[](LICENSE)
[](https://t402.io/t402-whitepaper.pdf)
t402 is an open standard for internet native payments. It aims to support all networks (both crypto & fiat) and forms of value (stablecoins, tokens, fiat).
```typescript
app.use(
paymentMiddleware(
{
"GET /weather": {
accepts: [...], // As many networks / schemes as you want to support
description: "Weather data", // what your endpoint does
},
},
),
);
// That's it! See examples/ for full details
```
## Package Architecture
```
@t402/core Core types, client, server, facilitator abstractions
@t402/extensions Bazaar, Sign-In-With-X extensions
Mechanisms (Chain-specific payment implementations):
@t402/evm EIP-3009, ERC-4337, USDT0 bridge for EVM chains (19 networks)
@t402/evm-core Shared EVM utilities
@t402/svm Solana SPL token support
@t402/ton TON Jetton (TEP-74) support
@t402/tron TRON TRC-20 support
@t402/near NEAR NEP-141 token support
@t402/aptos Aptos Fungible Asset support
@t402/tezos Tezos FA2 token support
@t402/polkadot Polkadot Asset Hub support
@t402/stacks Stacks (Bitcoin L2) SIP-010 support
@t402/cosmos Cosmos (Noble) native USDT support
@t402/erc8004 ERC-8004 Trustless Agents (identity, reputation)
HTTP Integrations:
@t402/express Express.js middleware
@t402/hono Hono middleware
@t402/fastify Fastify middleware
@t402/next Next.js integration
@t402/fetch Fetch API wrapper
@t402/axios Axios interceptor
@t402/paywall Payment wall UI components
@t402/react React hooks and components
@t402/vue Vue composables and components
WDK (Wallet Development Kit):
@t402/wdk Tether WDK integration
@t402/wdk-gasless ERC-4337 gasless payments
@t402/wdk-bridge LayerZero cross-chain bridging
@t402/wdk-multisig Safe multi-sig support
@t402/wdk-ton TON wallet management
@t402/wdk-ton-gasless Gasless TON transactions via relay
@t402/wdk-tron-gasfree Gas-free TRON USDT transfers
@t402/wdk-defi DeFi pre-payment processor (swap, borrow, bridge-swap)
@t402/wdk-protocol High-level T402Protocol (auto balance + bridge + pay)
Transports:
@t402/a2a Agent-to-Agent transport
Mobile:
@t402/react-native React Native SDK with PaymentSheet
Mechanisms (Additional):
@t402/btc Bitcoin (PSBT on-chain + Lightning BOLT11)
Tools:
@t402/mcp AI Agent MCP server (Claude, etc.)
@t402/cli Command-line tools
```
Installation
### TypeScript (v2.7.1)
```shell
# Core packages
pnpm add @t402/core @t402/evm
# With specific framework
pnpm add @t402/express # Express.js
pnpm add @t402/next # Next.js
pnpm add @t402/hono # Hono
# Gasless payments
pnpm add @t402/wdk-gasless
# MCP Server for AI Agents
pnpm add @t402/mcp
npx @t402/mcp # Run directly
# CLI tool
pnpm add -g @t402/cli
t402 --help
```
### Python (v1.12.1)
```shell
pip install t402
# Or with uv
uv add t402
# CLI tool included
t402 --help
```
### Go (v1.12.1)
```shell
go get github.com/t402-io/t402/sdks/go@v1.12.1
# CLI tool
go install github.com/t402-io/t402/sdks/go/cmd/t402@v1.12.1
t402 --help
```
### Java (v1.12.1)
```xml
io.t402
t402
1.12.1
```
Or with Gradle:
```groovy
implementation 'io.t402:t402:1.12.1'
```
Supported Networks
### EVM (Ethereum Virtual Machine) - 19 USDT0 Networks
- Ethereum (`eip155:1`), Arbitrum (`eip155:42161`), Optimism (`eip155:10`)
- Base (`eip155:8453`), Polygon (`eip155:137`), Ink (`eip155:57073`)
- Berachain (`eip155:80094`), Unichain (`eip155:130`), Mantle (`eip155:5000`)
- Sei (`eip155:1329`), Conflux (`eip155:1030`), Monad (`eip155:143`)
- Flare (`eip155:14`), Rootstock (`eip155:30`), XLayer (`eip155:196`)
- Plasma (`eip155:9745`), HyperEVM (`eip155:999`), MegaETH (`eip155:4326`)
- Corn (`eip155:21000000`)
- Legacy USDT: BNB Chain, Avalanche, Fantom, Celo, Kaia
### ERC-4337 Account Abstraction
- **Gasless Transactions**: Users pay zero gas fees via paymaster sponsorship
- **Smart Accounts**: Safe 4337 Module v0.3.0 integration
- **Bundlers**: Pimlico, Alchemy, and generic bundler support
- **Paymasters**: Pimlico, Biconomy, Stackup integrations
- **EntryPoint v0.7**: Full support for latest ERC-4337 specification
### SVM (Solana Virtual Machine)
- Solana Mainnet (`solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp`)
- Solana Devnet (`solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1`)
- Supports USDC and native SOL
### TON (The Open Network)
- TON Mainnet (`ton:mainnet`)
- TON Testnet (`ton:testnet`)
- Supports USDT Jetton (TEP-74 standard)
### TRON
- TRON Mainnet (`tron:mainnet`)
- TRON Nile Testnet (`tron:nile`)
- TRON Shasta Testnet (`tron:shasta`)
- Supports USDT TRC-20 (TIP-20 standard)
### NEAR Protocol
- NEAR Mainnet (`near:mainnet`)
- NEAR Testnet (`near:testnet`)
- Supports USDT NEP-141 token
### Aptos
- Aptos Mainnet (`aptos:1`)
- Aptos Testnet (`aptos:2`)
- Supports USDT Fungible Asset
### Tezos
- Tezos Mainnet (`tezos:NetXdQprcVkpaWU`)
- Tezos Ghostnet (`tezos:NetXnHfVqm9iesp`)
- Supports USDt FA2 token
### Polkadot
- Polkadot Asset Hub (`polkadot:68d56f15f85d3136970ec16946040bc1`)
- Westend Asset Hub (testnet)
- Supports USDT (Asset ID: 1984)
### Stacks (Bitcoin L2)
- Stacks Mainnet (`stacks:1`)
- Stacks Testnet (`stacks:2147483648`)
- Supports sBTC and SIP-010 tokens
### Cosmos (Noble)
- Noble Mainnet (`cosmos:noble-1`)
- Noble Testnet (`cosmos:grand-1`)
- Supports native USDC via MsgSend
### USDT0 Cross-Chain Bridge (LayerZero)
- **All 19 USDT0 networks** fully supported
- **Message tracking** via LayerZero Scan API
## CLI Tools
All SDKs include CLI tools for payment operations.
```bash
# Verify a payment payload
t402 verify
# Settle a payment
t402 settle
# List supported networks
t402 supported
# Encode/decode payloads
t402 encode payment.json
t402 decode
# Network information
t402 info eip155:8453
```
**Available in**: TypeScript (`@t402/cli`), Python (`pip install t402`), Go (`go install .../cmd/t402`)
## Principles
- **Open standard:** the t402 protocol will never force reliance on a single party
- **HTTP Native:** t402 is meant to seamlessly complement the existing HTTP request made by traditional web services
- **Chain and token agnostic:** we welcome contributions that add support for new chains, signing standards, or schemes
- **Trust minimizing:** all payment schemes must not allow for the facilitator or resource server to move funds, other than in accordance with client intentions
- **Easy to use:** t402 needs to be 10x better than existing ways to pay on the internet
## SDK Feature Matrix
| Feature | TypeScript | Go | Python | Java |
|---------|-----------|-----|--------|------|
| Core Client | ✅ | ✅ | ✅ | ✅ |
| Core Server | ✅ | ✅ | ✅ | ✅ |
| Facilitator | ✅ | ✅ | ✅ | ✅ |
| EVM (19 USDT0 networks) | ✅ | ✅ | ✅ | ✅ |
| SVM (Solana) | ✅ | ✅ | ✅ | ✅ |
| TON | ✅ | ✅ | ✅ | ✅ |
| TRON | ✅ | ✅ | ✅ | ✅ |
| NEAR | ✅ | ✅ | ✅ | ✅ |
| Aptos | ✅ | ✅ | ✅ | ✅ |
| Tezos | ✅ | ✅ | ✅ | ✅ |
| Polkadot | ✅ | ✅ | ✅ | ✅ |
| Stacks | ✅ | ✅ | ✅ | ✅ |
| Cosmos | ✅ | ✅ | ✅ | ✅ |
| ERC-4337 Gasless | ✅ | ✅ | ✅ | ✅ |
| USDT0 Bridge | ✅ | ✅ | ✅ | ✅ |
| WDK Integration | ✅ | ✅ | ✅ | ✅ |
| MCP Server | ✅ | ✅ | ✅ | ✅ |
| CLI Tool | ✅ | ✅ | ✅ | ✅ |
Legend: ✅ Complete | ❌ Not Available
**Total Supported Networks: 50** across 10 blockchain families (81 network+scheme kinds)
## Latest Releases
| SDK | Version | Release Date | Changelog |
|-----|---------|--------------|-----------|
| TypeScript | v2.7.1 | 2026-02-23 | [CHANGELOG](CHANGELOG.md) |
| Go | v1.12.1 | 2026-02-23 | [CHANGELOG](sdks/go/CHANGELOG.md) |
| Python | v1.12.1 | 2026-02-23 | [CHANGELOG](sdks/python/CHANGELOG.md) |
| Java | v1.12.1 | 2026-02-23 | [CHANGELOG](sdks/java/CHANGELOG.md) |
## Ecosystem
The t402 ecosystem is growing! Check out our [ecosystem page](https://t402.io/ecosystem) to see projects building with t402.
- **Whitepaper:** [T402 Protocol Whitepaper](https://t402.io/t402-whitepaper.pdf) (PDF)
- **Roadmap:** [ROADMAP.md](https://github.com/t402-io/t402/blob/main/ROADMAP.md)
- **Documentation:** [docs.t402.io](https://docs.t402.io)
## Terms
- `resource`: Something on the internet (webpage, API, RPC service, etc.)
- `client`: An entity wanting to pay for a resource
- `facilitator`: A server that facilitates verification and execution of payments
- `resource server`: An HTTP server that provides an API or resource for a client
## Typical t402 Flow
```mermaid
sequenceDiagram
participant Client
participant Server as Resource Server
participant Facilitator
participant Blockchain
Client->>Server: GET /api
Server->>Client: 402 Payment Required
Note over Client: Create payment payload
Client->>Server: GET /api + PAYMENT-SIGNATURE header
Server->>Facilitator: POST /verify
Facilitator->>Server: Verification result
Note over Server: Process request
Server->>Facilitator: POST /settle
Facilitator->>Blockchain: Submit transaction
Blockchain->>Facilitator: Confirmed
Facilitator->>Server: Settlement result
Server->>Client: 200 OK + Content
```
1. `Client` makes an HTTP request to a `resource server`
2. `Resource server` responds with `402 Payment Required` and `PAYMENT-REQUIRED` header
3. `Client` creates a `PaymentPayload` based on selected `scheme` & `network`
4. `Client` sends request with `PAYMENT-SIGNATURE` header
5. `Resource server` verifies via facilitator's `/verify` endpoint
6. `Facilitator` validates and returns verification response
7. If valid, server fulfills request and settles payment via `/settle`
8. `Resource server` returns `200 OK` with `PAYMENT-RESPONSE` header
## Quick Start Examples
TypeScript Client
```typescript
import { t402Client, wrapFetchWithPayment } from "@t402/fetch";
import { registerExactEvmScheme } from "@t402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = new t402Client();
registerExactEvmScheme(client, {
signer: privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`),
});
const fetchWithPayment = wrapFetchWithPayment(fetch, client);
const response = await fetchWithPayment("https://api.example.com/data");
```
TypeScript Server (Express)
```typescript
import express from "express";
import { paymentMiddleware, t402ResourceServer } from "@t402/express";
import { ExactEvmScheme } from "@t402/evm/exact/server";
const app = express();
app.use(
paymentMiddleware(
{
"GET /api/data": {
accepts: [
{ scheme: "exact", price: "$0.01", network: "eip155:8453", payTo: "0x..." },
],
description: "Premium API data",
},
},
new t402ResourceServer(facilitatorClient)
.register("eip155:8453", new ExactEvmScheme()),
),
);
```
Python Server (Flask)
```python
from flask import Flask
from t402.flask import create_paywall
app = Flask(__name__)
paywall = create_paywall(
routes={
"GET /api/data": {
"price": "$0.01",
"network": "eip155:8453",
"pay_to": "0x...",
"description": "Premium API data",
},
},
facilitator_url="https://facilitator.t402.io",
)
app.register_blueprint(paywall)
@app.route("/api/data")
def get_data():
return {"data": "premium content"}
```
Go Server
```go
package main
import (
"net/http"
t402 "github.com/t402-io/t402/sdks/go"
t402http "github.com/t402-io/t402/sdks/go/http"
)
func main() {
server := t402.NewResourceServer(facilitatorClient)
mux := http.NewServeMux()
mux.Handle("/api/data", t402http.PaymentMiddleware(
server,
t402http.RouteConfig{
Path: "GET /api/data",
Accepts: []t402.PaymentRequirement{
{Scheme: "exact", Price: "$0.01", Network: "eip155:8453", PayTo: "0x..."},
},
},
http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
w.Write([]byte(`{"data": "premium content"}`))
}),
))
http.ListenAndServe(":8080", mux)
}
```
ERC-4337 Gasless Payments
```typescript
import { SafeSmartAccount, createBundlerClient, createPaymaster } from "@t402/evm/erc4337";
// Create Safe smart account
const safeAccount = new SafeSmartAccount({
owner: privateKeyToAccount(ownerPrivateKey),
chainId: 8453,
});
// Connect bundler and paymaster
const bundler = createBundlerClient({ provider: "pimlico", apiKey, chainId: 8453 });
const paymaster = createPaymaster({ provider: "pimlico", apiKey, chainId: 8453 });
// Build, sponsor, and submit UserOperation
const callData = safeAccount.encodeExecute(targetAddress, 0n, data);
const userOp = await bundler.buildUserOperation({ sender: smartAccountAddress, callData });
const paymasterData = await paymaster.sponsorUserOperation(userOp);
const hash = await bundler.sendUserOperation({ ...userOp, ...paymasterData, signature });
```
MCP Server for AI Agents
```bash
# Install and run
npx @t402/mcp
# Claude Desktop config (~/.config/claude/claude_desktop_config.json)
{
"mcpServers": {
"t402": {
"command": "npx",
"args": ["@t402/mcp"],
"env": { "T402_DEMO_MODE": "true" }
}
}
}
```
**Available Tools:**
- `t402/getBalance` - Check wallet balance
- `t402/getAllBalances` - Check all chain balances
- `t402/pay` - Execute payment
- `t402/payGasless` - Gasless payment via ERC-4337
- `t402/getBridgeFee` - Get bridge fee quote
- `t402/bridge` - Bridge USDT0 between chains
USDT0 Cross-Chain Bridge
```typescript
import { Usdt0Bridge, LayerZeroScanClient } from "@t402/evm";
const bridge = new Usdt0Bridge(signer, "arbitrum");
// Get quote
const quote = await bridge.quote({
fromChain: "arbitrum",
toChain: "ethereum",
amount: 100_000000n,
recipient: "0x...",
});
// Execute bridge
const result = await bridge.send({ ...quote });
// Track delivery
const scanClient = new LayerZeroScanClient();
await scanClient.waitForDelivery(result.messageGuid);
```
## Specification
See `specs/` for full documentation of the t402 standard.
### Schemes
A scheme is a logical way of moving money. Different schemes support different payment flows:
- `exact` - Transfer a specific amount (e.g., pay $1 to read an article)
- `upto` - Transfer up to an amount based on usage (e.g., LLM token generation)
See `specs/schemes/` for detailed scheme specifications.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) for development setup and guidelines.
## Security
See [SECURITY.md](SECURITY.md) for security policy and vulnerability reporting.
## License
Apache 2.0 - See [LICENSE](LICENSE) for details.