---
title: "OFAC SDN screening attestation (x402, $0.01 USDC on Base or RLUSD on XRPL)"
method: GET
path: "/api/x402/screen/ofac"
tags: ["Screening"]
---

# OFAC SDN screening attestation (x402, $0.01 USDC on Base or RLUSD on XRPL)

`GET /api/x402/screen/ofac`

## Request

- Base URL: `https://www.xrplhub.io`
- URL: `https://www.xrplhub.io/api/x402/screen/ofac`
- Auth: none declared

The same OFAC SDN screening attestation as /api/screen/ofac, priced for agents at $0.01 per call and settled in USDC on Base via the CDP x402 facilitator — no API key, no signup. Compares one XRPL address against a vintage-pinned SDN snapshot (exact match only) and returns a Merkle-anchored receipt. A 'no match' is not a statement that the address is clean or unsanctioned. Attests to process, not ground truth. Not legal/compliance advice; does not discharge your screening obligations. Verify at GET /api/attest/verify?queryId=.

## Query parameters

- `address` string, required

## Response `200`

The screening receipt.

- object
  - `attestation` object, required
    - `queryId` string: UUID. GET /api/attest/verify?queryId= for the Merkle inclusion proof once anchored.
    - `canonVersion` 'sanctions-screen-v2'
    - `engineVersion` 'sanction-screen-v2': Immutable per receipt — the exact match algorithm.
    - `leafHash` string: 64-hex SHA-256(0x00 || canonical leaf).
    - `verify` string
  - `subject` string, required
  - `subjectChain` 'xrpl' | 'evm' | 'btc' | 'tron'
  - `screenedAt` string, date-time, required
  - `method` 'exact-match', required
  - `ledgerIndex` integer: Validated XRPL ledger pinned as a time anchor; 0 if unavailable.
  - `lists` object[], required
    - `name` 'OFAC-SDN' | 'EU-FSF' | 'UK-SL'
    - `vintage` string: The list's published version (ISO date) that was screened against.
    - `sha256` string: Hash of the canonical archive of that exact list snapshot — makes the snapshot reproducible.
    - `chainAddressCount` integer: How many addresses this list snapshot names on the subject's chain. 0 is meaningful (e.g. the EU list names no XRP Ledger address).
  - `result` object, required
    - `listed` boolean, required: true = the address string is on at least one of the named list versions. false = it did not appear. false is NOT a statement that the address is clean, safe, or unsanctioned.
    - `matches` object[]
      - `list` string
      - `entryId` string: The list's own entry id (OFAC SDN uid, EU reference, UK Unique ID).
      - `entryName` string: The entry's own listed name (the publisher's fact).
      - `addressField` string: Where the list names the address, e.g. 'Digital Currency Address - XRP', or the free-text element for EU/UK.
  - `statement` string, required: The one factual paragraph: compared X against list L at vintage V (names N addresses on this chain), and did / did not appear.
  - `canonicalLeaf` string: The exact JSON that was leaf-hashed.
  - `retention` string: The retention commitment in force at screening time (see /legal/screening).
  - `disclaimer` string, required

## Other responses

- `402`: Payment Required — x402 challenge. Pay EITHER in USDC on Base (v1 body; retry with X-PAYMENT) OR in RLUSD on the XRP Ledger (v2: PAYMENT-REQUIRED header, network xrpl:0; retry with PAYMENT-SIGNATURE, result wrapped as { data, x402 }).

---

[API](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions.md) · [All operations](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/llms.txt) · [OpenAPI document](https://skmtc.dev/xrplhub/apis/xrplhub-xrplscore-and-prebuilt-xrpl-transactions/revisions/a5d4e13aff32?raw)
