Spec72 · Audit sample · JSON version

Spec72 A2A receipt sample

What an agent gets back after buying a Spec72 SKU agent-to-agent: what was paid, where it settled, proof it is final, and a hash of what was delivered.

Order

Receipt idspec72-rcpt-SAMPLE-0001
SKUspec72-audit ($99)
IncludesAgent drop-off map + 5 PASS/FAIL prompts for one skill, delivered in 48h
Not includedCode changes, live sessions, machine access
DeliverableAUDIT-sample.md
Deliverable sha256dbeb52261e5da72bb042f0aa56461ec6814493a977a9ff0a22eff77653cc2f6d
Delivered at2026-11-13T15:00:00Z

Rail 1: x402 v2 on Base Sepolia (testnet)

x402Version2
Schemeexact
Networkeip155:84532 (Base Sepolia) — SAMPLE, not the live mainnet rail
AssetUSDC · 0x036CbD53842c5426634e7929541eC2318f3dCF7e
payTo0xPAYTO_PLACEHOLDER
Amount99.00 USDC (99000000 atomic, 6 decimals)
maxTimeoutSeconds300
Tx hash0x5a4d504c45000000000000000000000000000000000000000000000000000000
Timestamp2026-11-13T14:58:12Z
VerifyisValid: true
Settlesuccess: true
Explorerhttps://sepolia.basescan.org/tx/{tx_hash} (placeholder, will not resolve)

x402 v2 headers (aligned with the live Worker): unpaid POST /api/a2a/order/{sku} returns HTTP 402 with header PAYMENT-REQUIRED (base64 of the JSON body). Retry with PAYMENT-SIGNATURE. On success the Worker returns PAYMENT-RESPONSE (base64 SettlementResponse). New clients should use these v2 names. The Worker still accepts v1 X-PAYMENT on Base as compatibility and may also expose X-PAYMENT-RESPONSE in that case.

Sample 402 body / decoded PAYMENT-REQUIRED (field names match the live Worker; values are SAMPLE / placeholder):

{
  "x402Version": 2,
  "error": "PAYMENT-SIGNATURE header is required",
  "resource": {
    "url": "https://spec72.dev/api/a2a/order/audit",
    "description": "SAMPLE. Spec72 Audit — 48h SLA, async delivery (poll status_url or callback_url).",
    "mimeType": "application/json",
    "serviceName": "Spec72 / Opslane",
    "tags": ["agent-skills", "security", "audit", "ops"],
    "iconUrl": "https://spec72.dev/brand/spec72-seal.svg"
  },
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:84532",
      "amount": "99000000",
      "asset": "0x036CbD53842c5426634e7929541eC2318f3dCF7e",
      "payTo": "0xPAYTO_PLACEHOLDER",
      "maxTimeoutSeconds": 300,
      "extra": { "name": "USD Coin", "version": "2" }
    }
  ]
}

Retry header shape (PAYMENT-SIGNATURE, base64 of this JSON):

{"x402Version": 2, "resource": "(echo of PAYMENT-REQUIRED.resource)", "accepted": "(the exact accepts[] entry you paid)", "payload": {"signature": "0xSAMPLE_SIGNATURE_PLACEHOLDER"}}

Sample PAYMENT-RESPONSE (base64 SettlementResponse):

PAYMENT-RESPONSE: eyJzdWNjZXNzIjp0cnVlLCJ0cmFuc2FjdGlvbiI6IjB4NWE0ZDUwNGM0NTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsIm5ldHdvcmsiOiJlaXAxNTU6ODQ1MzIiLCJwYXllciI6IjB4U0FNUExFX1BBWUVSX1BMQUNFSE9MREVSIn0=

decoded: {"success": true, "transaction": "0x5a4d504c45000000000000000000000000000000000000000000000000000000", "network": "eip155:84532", "payer": "0xSAMPLE_PAYER_PLACEHOLDER"}

Rail 2: Spec72 XRPL quote flow (XRPL Testnet)

Not x402. Order via POST /api/a2a/xrpl/quote/{sku}. RLUSD or XRP (XRP priced at quote time, valid 15 min; DestinationTag required).

Networkxrpl:1 (XRPL Testnet) — SAMPLE
AssetRLUSD or XRP (XRP priced at quote time, valid 15 min; DestinationTag required)
Amount99.00 RLUSD
DestinationTag72000001 (required; the account rejects untagged payments)
Tx hashSAMPLE0000000000000000000000000000000000000000000000000000000000
Timestamp2026-11-13T14:58:40Z
ResulttesSUCCESS, validated: true (final once in a validated ledger)
Explorerhttps://testnet.xrpl.org/transactions/{tx_hash} (placeholder, will not resolve)

References: x402 v2 spec · x402 migration guide · XRPL finality · llms.txt