x402: код HTTP 402 стал платёжным протоколом

14 июля 2026 года Linux Foundation объявил об операционном запуске x402 Foundation — 40 организаций-участников, среди них Visa, Mastercard, Stripe, Shopify, Google, AWS, Cloudflare и Coinbase. Коротко: статус-код 402 Payment Required, зарезервированный «для будущего использования» ещё на заре веба, получил открытую спецификацию и вендор-нейтральное управление вместо статуса инициативы одной компании.

Проблема: агент умеет вызвать, но не умеет заплатить

Монетизация API сегодня спроектирована под человека. Регистрация, подтверждение почты, панель управления, привязка карты, копирование ключа, счёт в конце месяца. Для разработчика за клавиатурой это логично. И это полностью ломается, когда автономному агенту нужен один источник данных, один раз, посреди задачи.

Практическое следствие: любая платная интеграция превращается в предварительную работу — договор, ключ, квота, переменная окружения. По мере распространения агентных систем именно это трение, а не возможности моделей, оказывается настоящим потолком. Стандартного способа передать оплату внутри самого запроса до сих пор не существовало.

Что изменилось: рукопожатие из трёх заголовков

x402 помещает платёж внутрь цикла HTTP, а не рядом с ним. Спецификация V2 определяет три заголовка, все в base64:

  • PAYMENT-REQUIRED — от сервера клиенту, содержит платёжные требования.
  • PAYMENT-SIGNATURE — от клиента серверу, содержит подтверждение авторизации платежа.
  • PAYMENT-RESPONSE — от сервера клиенту, содержит результат расчёта.

На уровне провода обмен остаётся читаемым:

http
GET /v1/reports/q3 HTTP/1.1
Host: api.example.com

HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: <base64>

После декодирования заголовок — это явное описание того, что сервер готов принять:

json
{
  "x402Version": 2,
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "amount": "10000",
      "asset": "0x<usdc-contract>",
      "payTo": "0x<treasury-address>"
    }
  ]
}

Затем клиент повторяет тот же запрос уже с авторизацией:

http
GET /v1/reports/q3 HTTP/1.1
Host: api.example.com
PAYMENT-SIGNATURE: <base64>

HTTP/1.1 200 OK
PAYMENT-RESPONSE: <base64>

На стороне сервера подключение — это middleware, объявляющий, что принимает каждый маршрут:

js
import express from "express";
import { paymentMiddleware } from "@x402/express";

const app = express();

app.use(
  paymentMiddleware({
    "GET /v1/reports/:id": {
      accepts: [
        { scheme: "exact", network: "eip155:8453", payTo: process.env.TREASURY },
      ],
      description: "Квартальный отчёт",
    },
  })
);

Три модели тарификации

Спецификация определяет три schemes. exact — фиксированная объявленная цена, которую покупатель авторизует заранее. upto — оплата по факту потребления: покупатель авторизует потолок, а списывается фактически использованное; это подходит для трафика, вычислений или объёма токенов. batch-settlement накапливает повторяющиеся микроавторизации в переиспользуемом канале и погашает их одной пачкой — именно это делает высокочастотный доступ экономически осмысленным.

Проверку и расчёт берёт на себя facilitator — сервис, который верифицирует и проводит платежи от имени сервера ресурса. Существует несколько продакшн-фасилитаторов для сетей EVM и Solana, команда может поднять собственный, а для экспериментов доступен тестовый без настройки.

Что изменилось между v1 и v2

В старых репозиториях названия будут другими. Миграция v1→v2 переименовала заголовки: X-PAYMENT стал PAYMENT-SIGNATURE, X-PAYMENT-RESPONSEPAYMENT-RESPONSE. Идентификаторы сетей перешли на стандарт CAIP-2: baseeip155:8453, base-sepoliaeip155:84532. Пакеты разделены на более модульную структуру — @x402/core, @x402/express, @x402/evm, @x402/svm — с явной регистрацией схем вместо передачи кошелька напрямую в интерсептор.

Оговорки из практики

Стандарт перспективен, но решение о внедрении — инженерное и финансовое одновременно:

  • Ончейн-расчёт стоит денег. Именно поэтому и появился batch-settlement: рассчитывать каждый вызов по отдельности для нагруженного API невыгодно.
  • Выбор фасилитатора — вопрос доверия. Сервисы различаются поддерживаемыми сетями и комплаенс-проверками и находятся внутри денежного контура.
  • Платёж — это не идентичность. 402 отвечает на вопрос «оплачено ли?», но не «кто вы?». Аутентификация и авторизация остаются отдельным слоем — см. недавнюю спецификацию MCP.
  • Спецификация молодая. Переход с v1 на v2 уже сломал имена заголовков и пакетов. Разумно изолировать интеграцию за тонким заменяемым слоем.
  • Аналога возвратов и чарджбэков карточных сетей нет. Это требует прописанной политики, а не предположений.

Вывод

x402 не столько даёт агентам новую способность, сколько убирает старое препятствие: запрос теперь может нести свою цену сам. Команды, которые поднимут один тарифицированный маршрут за 402 уже сейчас — пусть даже в тестовой сети — накопят операционный опыт до того, как вопрос станет срочным.

Первоисточник: анонс Linux Foundation об операционном запуске x402 Foundation и официальная документация на docs.x402.org.

x402: код HTTP 402 стал платёжным протоколом · bahashwan.dev