---
title: "Create an x402 payment settlement on Solana"
method: POST
path: "/settle"
tags: ["x402 Facilitator (Path B)"]
---

# Create an x402 payment settlement on Solana

`POST /settle`

## Request

- Base URL: `https://intel.twzrd.xyz`
- URL: `https://intel.twzrd.xyz/settle`
- Auth: none required

Path B facilitator /settle: permanent message-hash reservation, cosign feePayer, submit, fail-closed confirm. Returns twzrd_receipt (V7) + merchant_attach for payTo. Gas-sponsored settle + trust memory in one hop. Attach is best-effort - never voids on-chain settle. Policy/replay failures usually HTTP 200 with success=false. Not Path A multi-rail paid-trust 402. settle_gate_enabled does not gate this rail when false (current prod default).

## Request body

- object
  - `x402Version` integer
  - `paymentPayload` object, required: Same envelope accepted by POST /verify.
  - `paymentRequirements` object, required: extra.feePayer must be GWRLgRB6diC2zG9BaoGJsan9T8JvJCk7usFruiefnfMP.

## Response `200`

Settle result. success=true includes transaction + best-effort twzrd_receipt/merchant_attach; success=false with errorReason for policy/replay (e.g. duplicate_settlement) still HTTP 200.

- object
  - `success` boolean, required
  - `errorReason` string, nullable: Set when success=false. Examples: duplicate_settlement, policy:reservation_unavailable, settle_error:*, bad_request:…
  - `transaction` string: Solana tx signature when success=true; empty on reject.
  - `network` string
  - `payer` string
  - `settlement_recorded` string: Durable ledger status: recorded | replay | error | …
  - `twzrd_receipt` object: Portable V7 Ed25519 receipt (leaf/preimage/signature). Best-effort; may be absent with twzrd_receipt_note.
    - `version` string: v6
    - `leaf` string
    - `preimage` object
    - `signature` string
    - `signing_pubkey` string
    - `signing_alg` string
    - `key_id` string
  - `twzrd_receipt_note` string: Why receipt was omitted (best-effort attach).
  - `merchant_attach` object: Best-effort payTo track-record attach. Never voids chain success. Down-only graph snapshot — not identity or delivery vouch.
    - `attached` boolean
    - `seller` string
    - `payer` string
    - `settlement_tx` string
    - `amount_micro` integer
    - `facilitator` 'twzrd'
    - `signed` boolean
    - `reason` string, nullable
    - `demand_quality_snapshot` object
  - `ack_pay_credential` object: Optional ACK-Pay VC transform of twzrd_receipt (best-effort).

## Other responses

- `400`: Malformed body (missing paymentPayload/paymentRequirements).
- `503`: Facilitator unavailable or agent_intel_disabled.

## Changes

- **2026-09-01** `e233ad9a9406`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/changes/settle/post.md)

---

[API](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails.md) - [All operations](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/llms.txt) - [OpenAPI document](https://skmtc.dev/twzrd/apis/twzrd-agent-reputation-rails/revisions/beddd4662a76?raw)
