Skip to main content
The x84 Facilitator is a production x402 v2 payment facilitator that verifies and settles USDC payments on Solana. It implements the Coinbase x402 protocol with x84-specific extensions for atomic, attestation, and delegated settlement modes.

Base URL

How it works

The facilitator sits between A2A clients and the Solana network. When a client wants to pay for an agent request:
1

Resource server returns 402

The A2A gateway returns a 402 Payment Required response with payment requirements (amount, token, recipient, facilitator address).
2

Client builds transaction

The client constructs a Solana VersionedTransaction with an SPL Token TransferChecked instruction. The facilitator’s public key is set as the fee payer.
3

Client signs and sends to facilitator

The client partially signs the transaction (payer signature only) and sends it to POST /settle along with the payment requirements.
4

Facilitator verifies

The facilitator deserializes the transaction, validates the SPL instructions, checks amounts and recipients, and confirms the fee payer matches.
5

Facilitator co-signs and submits

The facilitator adds its signature (as fee payer) and submits the fully-signed transaction to Solana. It confirms the transaction on-chain and returns the signature.

Endpoints

x84 extensions

On top of standard x402 SVM exact payments, the facilitator supports three x84-specific settlement modes via the extensions field in the payment payload:

Supported assets

Currently the facilitator supports: Query GET /supported for the current list of supported kinds, extensions, and signer keys.

Verification rules

The /verify and /settle endpoints enforce these validation rules:
  1. Deserialization — Transaction must be a valid Solana VersionedTransaction
  2. Allowed programs — Only SPL Token, ComputeBudget, and Memo programs are permitted
  3. Transfer instruction — Must contain exactly one TransferChecked instruction
  4. Amount match — Transfer amount must match the payment requirements
  5. Mint match — Token mint must match the required asset
  6. Destination match — Transfer destination must match the payTo address
  7. Fee payer — Must be the facilitator’s public key (from /supported signers)
  8. Replay prevention — Already-signed transactions are rejected

Idempotency

The /settle endpoint is idempotent. If the same transaction is submitted twice, the second call returns the original settlement result (same transaction signature) without resubmitting.

v1 backward compatibility

The paymentPayload field accepts both formats:
  • v2 (recommended) — Structured PaymentPayload object with x402Version, accepted, payload, and optional extensions
  • v1 (legacy) — Base64-encoded JSON string, automatically normalized to v2 internally

Integration example

For manual integration without the SDK, see the endpoint reference below.