# x402 OFAC SDN API – Pre-Payment Screen

> x402 OFAC SDN API – Pre-Payment Screen is a paid API for AI agents from x402-ofac-api.vercel.app, paid per call via x402, $0.003/call, status unknown (last checked 2026-10-12).

Performs a directional OFAC SDN check on a payee's wallet address, name, and domain before an x402 micropayment is made, returning a CLEAR or POTENTIAL_MATCH verdict.

## Facts

- Endpoint: POST https://x402-ofac-api.vercel.app/pay-check?utm_source=zero.xyz
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-12
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-ofac-sdn-api-pre-payment-screen-ac3d2e8f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_qGdNiaZ87-XtQlaOOblx1

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-ofac-sdn-api-pre-payment-screen-ac3d2e8f -d '<json body>'
```

Example prompt: Before sending that $0.003 USDC x402 payment, screen the payee — their wallet is 0xAbC123…, the operator name is 'Acme Data LLC', and the endpoint URL is https://api.example.com/data — run an OFAC SDN check and tell me if it comes back CLEAR.

## When to prefer this

Choose this endpoint when an AI agent needs a lightweight, pay-per-call OFAC SDN pre-flight check before authorizing an x402 micropayment — especially useful for autonomous agents that must perform basic sanctions due diligence without integrating a full compliance platform. Prefer this over manual OFAC lookups when you need a machine-readable verdict with a signed, timestamped receipt. Not a substitute for full AML/KYC or chain analysis.

## Known failure modes

- Missing both wallet and name returns empty/unhelpful result — at least one must be provided
- Fuzzy name match may produce false positives for common names — top_score is returned for human review
- OFAC wallet list in SDN remarks may lag official publications — list_as_of timestamp indicates data freshness
- Does not perform chain analysis or check UK/EU/UN lists — only OFAC SDN
- Domain RDAP lookup may fail for new or obscure TLDs, returning no host age
- Payment via x402 required ($0.003 USDC) — unpaid calls will receive a 402 response

## How this service works

Pay-per-call directional OFAC SDN screen for AI agents (USDC on Base + Solana via x402). Potential matches only — not clearance.

## Output

A JSON object containing: a top-level 'verdict' (CLEAR or POTENTIAL_MATCH), structured 'checks' for host domain age, price sanity, OFAC wallet hits, and fuzzy name match score, a 'reasons' array listing any flags, and a signed 'receipt' with receipt_id, algorithm, SHA-256 hash, and SDN list timestamp. Includes a disclaimer that CLEAR is directional only, not a legal clearance.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "type": "string",
   "description": "Endpoint URL being paid (for host age)"
  },
  "name": {
   "type": "string",
   "description": "Optional payee/operator legal name for SDN fuzzy match"
  },
  "wallet": {
   "type": "string",
   "description": "Payee wallet to check against OFAC SDN crypto addresses"
  },
  "wallets": {
   "type": "array",
   "items": {
    "type": "string"
   },
   "description": "Up to 10 extra wallets"
  },
  "price_usd": {
   "type": "number",
   "description": "Optional price in USD if not in payment_required"
  },
  "mpp_request": {
   "type": "object",
   "description": "Decoded MPP challenge request object (recipient/amount/resource)"
  },
  "check_host_age": {
   "type": "boolean",
   "description": "RDAP domain age lookup (default true)"
  },
  "payment_required": {
   "type": "object",
   "description": "x402 PAYMENT-REQUIRED body/header (object, JSON string, or base64). payTo, amount, asset, resource are read from it."
  },
  "www_authenticate": {
   "type": "string",
   "description": "MPP WWW-Authenticate Payment challenge header value (method=\"tempo\"|\"stripe\", request=<base64url>)"
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "checks": {
   "host": {
    "status": "ok",
    "age_days": 3650
   },
   "price": {
    "status": "ok",
    "max_usd": 0.01,
    "trap_threshold_usd": 1000
   },
   "name_match": {
    "status": "no_match",
    "top_score": 0
   },
   "ofac_wallet": {
    "hits": [],
    "status": "no_match"
   }
  },
  "reasons": [],
  "receipt": {
   "alg": "Ed25519",
   "sha256": "…",
   "signed": true,
   "list_as_of": "2026-10-10T04:18:02.953473+00:00",
   "receipt_id": "pc_…"
  },
  "verdict": "CLEAR",
  "disclaimer": "Directional pre-payment check only. CLEAR means none of these checks raised a flag; it is not a clearance, certification, or attestation, and not legal or compliance advice. OFAC SDN only (wallets listed in SDN remarks + name fuzzy match) — no chain analysis, no UK/EU/UN lists. Verify against official OFAC publications.",
  "potential_matches_only": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-ofac-sdn-api-pre-payment-screen-ac3d2e8f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-ofac-api.vercel.app](https://www.zero.xyz/host/x402-ofac-api.vercel.app/llms.txt)
