Every integration does the same things (the conformance suite checks this) and comes with a complete, runnable example. Each integration page shows its example in full.

Which one do I use?

Express. One line: app.use(forge.middleware()) before paymentMiddleware.
Express (x402 v1). Same one line. v1 challenges carry no extensions, so agents see the description sentence only.
Hono. One line: app.use(forge.middleware()) before paymentMiddleware.
Next.js. Wrap each paid route: forge.withForge(withX402(…)), plus one route file for Forge’s routes.
Use the core until there’s an adapter. You call a few functions at the points where your server already builds the 402 and the paid response.

How integrations are tested

Each integration runs the same conformance suite (packages/conformance) against the real x402 packages for its framework, using the published SDK entry points (only the facilitator is faked): Express with @x402/express, Hono with @x402/hono, Next.js with @x402/next, and the core with @x402/core. It checks that:
  • the challenge gets the sentence once and the extension after the merchant’s own, with accepts unchanged
  • a real @x402/core client echoes the extension back, and the payment still verifies and settles
  • paid JSON gets the feedback fields and header; strict schemas and text get the header only
  • the OpenAPI document is enriched, and the rating routes validate and forward correctly
  • the payment receipt carries the extension with the real ID, and the lifecycle tone reaches the challenge and body
  • agent context is reported with the call and never reaches the merchant’s handler (body and query)
  • challenge and interaction events are reported