For facilitators
Screen every x402 payment before you settle it. One call tells you whether the payer or the payee is on the U.S. Treasury OFAC sanctions list, and whether the payout wallet and price match what the seller set up. You decide what to do with the answer.
Overview deck: Lumière PayCheck for facilitators (PDF, 11 slides)
Pricing: 10,000 checks a month free, then $1.50 per 1,000 checks, invoiced monthly. No base fee, no minimum. Testnet checks are free. Get a key.
Why screen before settlement
- Sanctions. Settling a USDC transfer to or from an OFAC-listed wallet is the kind of thing a facilitator wants to catch before it signs, not after. We screen both sides against Treasury's SDN list, refreshed daily.
- Wallet hijacks. If a seller's server is compromised, the first sign is usually a 402 quote with a different
payTo. We monitor the payout wallets of the endpoints listed in the x402 Bazaar and read the wallets sellers declare, so we can tell you when the wallet in front of you isn't the one the seller set up. - Overcharges. We know what each monitored endpoint quotes. A payment above that price is flagged.
Decisions
| decision | when | what we suggest |
|---|---|---|
block | The payer or the payee is on the OFAC SDN list, or the endpoint's monitored payout wallet is. | Don't settle. |
review | payTo isn't the wallet we monitor or the one the seller declares (possible hijack), the amount is above the endpoint's quoted price, the payout wallet changed unexpectedly and nobody could confirm it, or the endpoint was withdrawn. | Your call: hold, settle and alert the seller, or settle. |
allow | Nothing found. | Settle. |
Grades come back as context in endpoint, but a grade never decides a payment on its own. A new or low-graded seller is not flagged. Sellers can't buy grades, and the screening isn't a way to push sellers out.
The call
POST /v1/facilitator/screen with your key in the x-paycheck-key header (or Authorization: Bearer).
Send the same body you already get at your own /verify:
{ "paymentPayload": { ... }, "paymentRequirements": { ... } }or the plain fields:
{ "payer": "0x…", "payTo": "0x…", "amount": "10000", "network": "eip155:8453", "resource": "https://seller.example/api", "ref": "your-id" }amountis in atomic units (USDC:10000= $0.01).resourceis optional, but without it only sanctions screening runs.refis echoed back so you can match results.- Batch:
{ "payments": [ ... ] }, up to 100 per call. Each payment is one check.
Response (one payment):
{
"ref": "your-id",
"decision": "review",
"block": [],
"review": ["payTo differs from the monitored payout wallet (possible hijack)"],
"info": [],
"payer": { "address": "0x…", "screened": true, "sanctioned": false },
"payTo": { "address": "0x…", "screened": true, "sanctioned": false, "matchesMonitored": false },
"endpoint": { "monitored": true, "url": "https://seller.example/api", "grade": "A", "verdict": "proceed", "delivery": "verified" },
"sanctionsListDate": "2026-10-08",
"counted": 1,
"ms": 2.1
}For a batch you get { count, counted, ms, results: [ ... ] } in the order you sent.
Usage and billing
- See your usage any time:
GET /v1/facilitator/usage(same header) returns checks this month, free checks left, and the estimated bill. - What's counted: each payment you screen is one check, counted as it happens. A batch of 100 is 100 checks. Testnet checks are free and aren't counted.
- Free tier: 10,000 checks every calendar month (UTC), reset on the 1st.
- Above that: $1.50 per 1,000 checks ($0.0015 each). No base fee, no minimum. Example: 25,000 checks in a month is 15,000 above the free tier, so $22.50.
- Invoices: on the 1st of each month, last month is invoiced through Stripe and emailed to your billing address, with a line like "15,000 checks above 10,000 included". Payment is due in 14 days, paid from the invoice's Stripe link. A month that stays within the free tier isn't invoiced at all.
- New keys start on the free tier. Screening pauses (
403 free_tier_used) at 10,000 checks until billing is turned on; reply to your key email and we turn it on, usually the same day. Nothing is ever charged without that. - Pilots aren't invoiced: pilot months are free with no cap, and billing starts the month after the pilot ends, at the price above.
- Limit: 6,000 checks a minute per key by default. Need more? Ask.
What we keep
Counts, not payments. Payer, payee and amounts are screened in memory and are not stored. Your key is stored only as a hash.
Later: data license
Facilitators and analytics teams can also license our data: endpoint grades and history, payout-wallet changes, delivery tests and real-buyer counts across the x402 ecosystem. Tell us what you need.
Pilots
Early partners get a free pilot: no cap, free for the first two months, set up the same day. Talk to us or reply to your key email.