Authoring x402 specs
Guidance for writing x402 specification files under specs/. Use RFC-2119 keywords for normative statements (MUST / MUST NOT, SHOULD / SHOULD NOT, MAY).
General rules
These apply to every spec type (scheme, extension). The references below add type-specific detail.
Naming
- Name schemes and extensions in lowercase, hyphen-separated kebab-case (e.g.
batch-settlement,offer-receipt), never camelCase.
Protocol version, networks, and units
- Target protocol v2 only:
x402Version: 2, theamountfield (not v1'smaxAmount), and thePAYMENT-REQUIRED/PAYMENT-SIGNATURE/PAYMENT-RESPONSEheaders (not v1'sX-PAYMENT/X-PAYMENT-RESPONSE). See the v1 to v2 migration guide. - Use canonical CAIP-2 network notation (e.g.
eip155:84532, notbase-sepolia). - Use atomic units for all amounts.
Wire format
- Be transport agnostic: specify message contents, not how a particular transport carries them.
- Reference core types (
PaymentRequirements,PaymentPayload,SettlementResponse) fromx402-specification-v2.md. - Every field a spec defines on the wire must be consumed by a downstream role. Do not include human-readable or otherwise purely informational fields.
- Reuse field names, patterns, and conventions established by existing specs instead of coining new ones.
References
- New network scheme spec (
scheme_<name>_<chain>.md): see references/new-network-scheme-spec.md. - New extension spec: to be added.