# x402 OFAC SDN Pay-Check API

> x402 OFAC SDN Pay-Check API 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).

Screens a payee's wallet address, name, and domain against the OFAC Specially Designated Nationals list before an x402 micropayment is made

## Facts

- Endpoint: POST https://x402-ofac-api.vercel.app/api/v1/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-pay-check-api-4eaa4e3e
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap__FIkiUcJsxrai10eJ_QgQ

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-pay-check-api-4eaa4e3e -d '<json body>'
```

Example prompt: Before I pay this x402 API endpoint at https://some-api.example.com, screen the payee wallet 0xAbC123... and the operator name 'Acme Trading LLC' against the OFAC SDN list to make sure they're not sanctioned.

## When to prefer this

Use this endpoint when an AI agent or automated payment flow needs a fast, pay-per-call pre-payment OFAC SDN screen specifically designed for the x402 micropayment protocol — particularly when you have a wallet address, a payee name, and/or a domain to screen together in one call. Prefer it over generic sanctions APIs when you are already handling x402 payment_required objects and want native parsing of those headers. Not a substitute for full AML compliance, chain analysis, or EU/UK/UN list screening.

## Known failure modes

- Payment not received or invalid x402 payment header — returns 402 Payment Required
- Wallet address format unrecognized — check may return error or skip wallet sub-check
- OFAC list unavailable or stale — receipt will reflect list timestamp, potential delay
- Name field empty — name_match check skipped, status returned as 'skipped'
- Domain too new or RDAP lookup failure — host age check may return error status
- More than 10 wallets submitted — excess wallets silently ignored or error returned

## 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

Returns a JSON object with a top-level 'verdict' field (CLEAR or POTENTIAL_MATCH), per-check statuses for host age, price sanity, name fuzzy match, and wallet SDN hits, a list of any flagged reasons, and a signed receipt with the OFAC list timestamp and a unique receipt ID. Includes a prominent disclaimer that CLEAR is not a legal clearance or certification.

## 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-pay-check-api-4eaa4e3e/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)
