X402 Protocol
The X402 protocol is a payment-aware HTTP extension that enables AI agents to require and verify payments for API access. This guide provides a complete overview of X402 implementation in the Nevermined Payments Library.Overview of X402
X402 is an HTTP-based protocol for payment-protected resources:- 402 Payment Required: HTTP status code for payment requests
- PAYMENT-SIGNATURE: Header containing payment credentials (X402 v2)
- PAYMENT-REQUIRED: Header with payment requirements in 402 responses
- PAYMENT-RESPONSE: Header with payment settlement details in success responses
- Cryptographic Signatures: ERC-4337 account abstraction for secure payments
Supported Schemes
Nevermined supports two x402 payment schemes:| Scheme | Network | Use Case | Settlement |
|---|---|---|---|
nvm:erc4337 | eip155:84532 | Crypto payments | ERC-4337 UserOps + session keys |
nvm:card-delegation | stripe | Fiat/credit card | Stripe PaymentIntent + credit burn |
isCrypto: false use nvm:card-delegation; all others use nvm:erc4337. The SDK auto-detects the scheme via resolveScheme().
X402 Version 2 Specification
The Nevermined Payments Library implements X402 v2, which uses:PAYMENT-SIGNATUREheader for access tokens (replaces Authorization)PAYMENT-REQUIREDheader for payment requirements (replaces custom formats)PAYMENT-RESPONSEheader for settlement receipts- Structured payment credentials with cryptographic signatures
Generate X402 Access Tokens
Subscribers generate access tokens to query agents:Generate Tokens via Nevermined App
Users can also generate X402 access tokens through the Nevermined App:- Visit nevermined.app/permissions/agent-permissions
- Select the plan you’ve purchased
- Configure token parameters (agent, expiration, limits)
- Generate and copy the X402 access token
- Use the token in API requests
Generate Card-Delegation Tokens
For fiat plans usingnvm:card-delegation, pass X402TokenOptions with a CardDelegationConfig:
Auto Scheme Resolution
UseresolveScheme() to auto-detect the correct scheme from plan metadata:
DelegationAPI
List enrolled payment methods for card delegation:PaymentMethodSummary fields:
| Field | Type | Description |
|---|---|---|
id | string | Payment method ID (e.g., pm_...) |
brand | string | Card brand (e.g., visa, mastercard) |
last4 | string | Last 4 digits of the card number |
expMonth | number | Card expiration month |
expYear | number | Card expiration year |
X402 Access Token Structure
The access token is a JWT containing an X402 v2 payment credential:Card-Delegation Token Structure
For fiat plans usingnvm:card-delegation, the token contains a JWT-based delegation authorization:
Token Components
- x402Version: Protocol version (2 for current spec)
- accepted: Payment method specification
- scheme:
nvm:erc4337for crypto ornvm:card-delegationfor fiat - network:
eip155:84532(Base Sepolia) for crypto,stripefor fiat - planId: The payment plan being used
- extra: Additional metadata (version, agentId, etc.)
- scheme:
- payload: Payment authorization
- signature (erc4337): Cryptographic proof of payment authorization
- token (card-delegation): Signed JWT encoding the delegation claims
- authorization: Subscriber identity and session keys
- extensions: Optional protocol extensions
Verify X402 Permissions
Agents verify tokens before executing requests:Verification Response
Settle X402 Permissions
After successful execution, burn credits:Settlement Response
HTTP Headers (X402 v2)
PAYMENT-SIGNATURE Header
Subscribers include this header in requests:PAYMENT-REQUIRED Header (402 Response)
Agents return this header when payment is required:scheme and network vary by plan type:
Crypto plan:
PAYMENT-RESPONSE Header (Success)
Agents include this header in successful responses:Complete X402 Flow
Subscriber Side
Agent Side
buildPaymentRequired Helper
Simplifies creating X402PaymentRequired objects:scheme is set to 'nvm:card-delegation', the network is automatically set to 'stripe'.
Best Practices
- Always Verify Before Execute: Never skip token verification
- Settle After Success: Only burn credits after successful execution
- Use X402 v2 Headers: Prefer
PAYMENT-SIGNATUREover Authorization - Return 402 Properly: Include
PAYMENT-REQUIREDheader with details - Log Transactions: Record settlement transaction hashes
- Handle Errors: Provide clear error messages in 402 responses
- Token Reuse: Subscribers can reuse tokens for multiple requests
Related Documentation
- Querying an Agent - How subscribers use X402 tokens
- Validation of Requests - How agents verify and settle
- MCP Integration - Automatic X402 handling in MCP
- A2A Integration - Automatic X402 handling in A2A
Source References:
src/x402/token.ts(getX402AccessToken)src/x402/facilitator-api.ts(verifyPermissions, settlePermissions, buildPaymentRequired)tests/e2e/test_x402_e2e.test.ts(complete X402 flow)