Skip to content

Protocol position · September 2026

x402 is young.
Leave V1 behind.

Backward compatibility should help a protocol migrate. It should not force every seller, client, facilitator, and directory to preserve the first draft forever.

Our position: stop creating new V1 dependencies now. Sellers should emit canonical V2. Buyer clients can read V1 temporarily for migration and measurement. Adapters should live at the edge, carry a sunset date, and disappear when their traffic does.
May 2025x402 launches. V1 proves that HTTP-native stablecoin payments can work.
→
December 2025V2 arrives after six months of production learning.
→
NowConverge on V2 before temporary compatibility becomes permanent infrastructure.

The unusually easy migration

Most protocols do not get this chance.

Mature protocols carry decades of clients, embedded devices, contractual interfaces, and forgotten middleware. x402 does not. It launched in May 2025. V2 followed in December, based on only six months of real-world use. V1 was the generation that proved the idea; V2 is the generation designed to scale it.

That distinction matters. The cost of retiring a version grows with every new dependency. Every month that sellers emit V1, clients add V1-specific parsers, facilitators preserve V1 branches, and examples teach V1 patterns is another month of deliberate technical debt.

There is a familiar instinct in infrastructure: never break anyone. It sounds responsible. In a young protocol, it can be the less responsible choice. Permanent backward compatibility enlarges the test matrix, creates ambiguous wire behavior, and teaches builders that every experimental shape will be supported forever.

A compatibility layer is a bridge. If it has no removal date, it is a second protocol.

V2 is not a cosmetic revision.

V2 cleans up the protocol at exactly the layer where interoperability matters. It separates protocol types, payment schemes, network logic, and transport representation. For HTTP, payment data moves into canonical headers. Networks use CAIP-2 identifiers. Extensions provide a path for experimentation without repeatedly changing the core.

Legacy V1 signallingX-PAYMENT X-PAYMENT-RESPONSE requirements duplicated in JSON body
Canonical V2 signallingPAYMENT-REQUIRED PAYMENT-SIGNATURE PAYMENT-RESPONSE network: eip155:8453

This is the right foundation for more chains, payment schemes, transports, identity extensions, and facilitators. Carrying the older representation in every new server does not make that foundation stronger. It makes the boundary less clear.

The lagging-client problem is real—and solvable.

Not every participant is on V2 today. A public Coinbase Payments MCP issue documents the practical failure mode: a V2 server correctly returns its challenge in PAYMENT-REQUIRED, while an older client looks only in the response body and concludes that no payment options exist.

The wrong lesson is that every V2 seller must duplicate its challenge forever. The better lesson is that compatibility belongs where it is cheapest and most observable:

  • Seller servers emit V2. One canonical challenge, one payment path, one set of conformance tests.
  • Buyer clients can read V1 and V2 during migration. They already need selection logic, and they can log which version they encounter.
  • Gateways can translate when a legacy buyer is known. Translation remains isolated from the seller’s business logic.
  • Directories expose protocol version explicitly. A buyer should know whether an endpoint is current before attempting payment.

The official reference SDKs are backward-compatible with V1. Good. That is migration machinery. It should help the ecosystem cross the bridge, not justify building new houses on both sides.

Four rules

Move forward without being reckless.

01 / CANONICAL

One wire format

V2 is the protocol. Compatibility output is an adapter behavior, not an alternative definition of success.

02 / MEASURED

Count legacy traffic

Do not preserve V1 because someone might need it. Instrument it and find out whether anyone does.

03 / EXPLICIT

Name the sunset

Every V1 compatibility path should publish an owner, a warning, and a removal date.

04 / REVERSIBLE

Keep the bridge outside

A gateway shim can be extended briefly. V1 branches woven through core payment code are much harder to remove.

A practical sunset

Retire V1 in 90 days, not someday.

A young protocol does not need a multi-year deprecation ceremony. It needs a short, observable migration with clear escalation points.

Day 0

Stop new V1

New endpoints and examples ship V2 only. Registries label V1-only listings as legacy.

Day 30

Warn and measure

Clients log V1 use. Sellers publish migration notices. SDKs surface deprecation warnings.

Day 60

Move the exceptions

Known legacy buyers use an explicit gateway or opt-in adapter, not the default seller path.

Day 90

Remove the default

V1 support leaves default builds and public endpoints. Extend only a named adapter with proven traffic.

Do preserve receipts and audit history.

Retiring a wire format does not mean erasing settlement records or breaking verification of old transactions.

Do not invent a hybrid V1.5.

Duplicated headers and bodies may help during transition, but they should not become another permanent dialect.

Do test complete paid flows.

A parser accepting a 402 challenge is not enough; verify signature, settlement, fulfillment, and response receipts.

Do publish the observed version.

Directories, probes, and receipts should make the protocol version visible instead of forcing buyers to infer it.

ResolveBots position

Backward-compatible buyers. V2 sellers. No permanent V1 baggage.

ResolveBots is updating its public manifest to V2 and treats V2 HTTP signalling as the canonical seller path. Our buyer-side review tools may continue to recognize legacy behavior so they can diagnose the market, but recognition is not endorsement.

  • ResolveBots manifests now declare x402Version: 2.
  • ResolveBots seller routes use PAYMENT-REQUIRED, accept PAYMENT-SIGNATURE, and return PAYMENT-RESPONSE.
  • Endpoint reviews distinguish canonical V2 behavior from legacy compatibility.
  • Legacy observations belong in evidence and migration guidance, not in the definition of the current protocol.

We applied the same rule to the examples we control. The current x402 Handbook source and its public temperature-server companion use the V2 package line, CAIP-2 network identifiers, and V2 HTTP headers. Old receipts and dated field notes remain intact as historical evidence; we do not rewrite the past to make a migration chart look cleaner.

The decision

Protocols either converge or collect dialects.

x402 is still early enough to choose convergence. The ecosystem can spend the next year preserving every early assumption—or spend the next 90 days making V2 boring, predictable, and universal.

V1 did its job. It proved that agents, apps, and people could pay through HTTP without accounts, API keys, or invoice workflows. The respectful way to treat that achievement is not to preserve its implementation forever. It is to build on what it taught us.

Move forward. Keep the bridge short. Delete it when everyone is across.