Documentation
Counterparty Check is an API an AI agent calls before it sends money. Give it the payee's name and whatever else you know (email, website, bank or wallet details, how the payment request arrived) and it returns proceed, review or block, the reasons, and a signed receipt. A full check costs $0.25; a sanctions-only screen costs $0.05.
Quickstart
curl https://counterpartycheck.com/v1/check \
-H "Authorization: Bearer cc_live_…" \
-H "Content-Type: application/json" \
-d '{ "counterparty": { "name": "Acme Supply Co", "country": "US", "email": "ar@acme-supp1y.com" }, "payment": { "method": "ach", "routing_number": "021000021", "amount": 48000, "currency": "USD" }, "context": { "known_good_domain": "acmesupply.com", "bank_details_changed": true, "change_requested_via": "email", "requested_urgency": true } }'
That request returns "verdict": "block": the email domain imitates the vendor's real domain, and the bank details changed by email under time pressure.
Endpoints
POST https://counterpartycheck.com/v1/check: full check, $0.25. Sanctions, jurisdictions, lookalike domains, domain age and email authentication, payment-detail validation, invoice-fraud context.POST https://counterpartycheck.com/v1/screen: sanctions and jurisdiction screen only, $0.05.POST https://counterpartycheck.com/v1/receipts/verify: verify a receipt from an earlier check, free.GET https://counterpartycheck.com/v1/account: API key balance, free.- MCP server at
https://counterpartycheck.com/mcpwith toolscheck_counterparty,screen_sanctions,check_balance,verify_receipt. - Machine-readable: OpenAPI, llms.txt, llms-full.txt, MCP server card, x402 manifest.
Paying
- Prepaid API key: buy credit by card at https://counterpartycheck.com/#pricing and send
Authorization: Bearer cc_live_…. - x402 (no account): call the endpoint without payment, get HTTP 402 with a
PAYMENT-REQUIREDheader, pay in USDC on Base, retry withPAYMENT-SIGNATURE. - MPP: the same 402 carries a
WWW-Authenticate: Paymentchallenge for USDC on Tempo.
Request fields
Only counterparty.name is required. Every other field adds checks.
counterparty:name,country(ISO code),website,email,address.payment:method(ach, wire, card, crypto, check, other),routing_number,iban,swift_bic,crypto_address,crypto_network,amount,currency.context:first_payment_to_payee,bank_details_changed,change_requested_via(email, phone, portal, in_person, chat, other),requested_urgency,requester_email,known_good_domain(the vendor's domain on file),payer_domain(your own domain),previous_payment(the routing number, IBAN or wallet used last time).
The context fields are what separate a routine invoice from a fraud attempt. Fill in everything your agent knows.
Reading the result
verdict: block means do not pay; review means a person must look first; proceed means no risk signals in the checks that ran.findings: each with an id, severity, plain-English title and detail, evidence and source.not_checked: anything that could not be checked. Treat these as unknown, not clean.receipt: an Ed25519-signed record of the verdict and a SHA-256 of your request, verifiable at/v1/receipts/verifyagainst the key at/.well-known/receipt-key.
What it checks
- Sanctions: fuzzy name and alias matching against the U.S. Treasury OFAC SDN and consolidated lists, refreshed several times a day; sanctioned crypto wallet addresses; embargoed and elevated-risk jurisdictions.
- Lookalike domains: typos, homoglyphs (a 1 for an l), TLD swaps and keyword combinations against the vendor's real domain, your own domain, and frequently impersonated brands.
- Domain and email: registration age via RDAP, unregistered domains, MX, SPF and DMARC records, free and disposable email used by a business.
- Payment details: ABA routing check digits, IBAN check digits and lengths, SWIFT/BIC format, EVM, Bitcoin, Solana, TRON and Litecoin address validation.
- Invoice-fraud context: bank or wallet changes, changes requested by email, urgency, the combined business-email-compromise pattern, large first payments.
Limits
It is a screening aid, not a compliance program or legal advice. It does not verify company registrations. A sanctions match must be reviewed by a person. Request contents are not stored.