Sanctions-screen a beneficiary IBAN before an agent pays it
IBAN sanctions screening in one paid call: the issuing bank cleared against the OFAC, EU and UN lists and its jurisdiction rated for risk — plus how to read that verdict without overclaiming.
By Matthias Begot · · Updated
If an agent can move money, it can move money to the wrong place. Before an
autonomous workflow disburses to an IBAN it was handed — by a user, a vendor
feed, an invoice it parsed — it should establish that the issuing bank is not
sanctioned and the jurisdiction is not embargoed. That check is a single
paid call: GET /iban/screen. This article shows where
it belongs in the x402 loop and how to read its verdict honestly.
The problem: a payable IBAN is not a safe IBAN
A structurally valid IBAN passes its mod-97 checksum and nothing more. Validity says the number is well-formed; it says nothing about who sits behind it. An agent that resolves an IBAN to a bank and pays it can still be routing funds to an institution on an OFAC, EU, or UN sanctions list, or into a jurisdiction under an embargo. For any agent acting in a KYB or onboarding context, clearing the beneficiary is not optional — and a human is not in the loop to catch it.
The data needed to make that call — current sanctions registries and jurisdiction risk lists (FATF black/grey, EU-AML, embargoes) — is exactly the kind of bulky, frequently-updated public data an LLM cannot reliably hold in its weights. It is a good fit for a pay-per-call lookup against a fresh snapshot.
The check: one call, one risk band
GET /iban/screen takes an iban and returns a ScreenResult: the resolved
bank and BIC, whether that bank/BIC matched a sanctions list, the account
country’s jurisdiction level, and an aggregated risk band:
risk | What it means for your agent |
|---|---|
prohibited | Sanctioned bank/BIC or an embargoed jurisdiction — do not pay |
high | High-risk jurisdiction (FATF black / EU-AML), bank not sanctioned |
elevated | Monitored jurisdiction (FATF grey) — apply your own policy |
clear | No signal on the covered lists |
unknown | Valid IBAN, but bank/BIC or country outside coverage — no claim |
The band is the field your control flow keys on: gate on prohibited, escalate
high/elevated to whatever policy or human review you define, and treat
unknown as not cleared rather than cleared — the service deliberately
refuses to assert clear without data behind it.
Where it sits in the x402 loop
Screening is a gate placed before the disbursement, not a replacement for it. The agent’s loop becomes:
- Resolve the IBAN if you need bank/BIC details
(
GET /iban/resolve). - Screen it —
GET /iban/screen— and readrisk. - Branch: stop on
prohibited, escalate the risky bands, proceed onclear. - Pay the actual beneficiary through your own rails.
Each paid call follows the same x402 pattern as every Invoket endpoint: call,
receive the 402, sign the chosen rail, replay. The Quickstart
walks the whole discover → 402 → pay → replay cycle with runnable snippets.
The price and accepted rails are not pinned here — they are served live by the
catalog; see the
endpoint reference for the current figure.
Per the x402 golden rule, the agent pays for the answer to its question. “This
jurisdiction is high-risk” and “this IBAN is invalid” are both successful
answers — they return 200. The 4xx range is reserved for requests the
service genuinely cannot answer.
Screening a list, not just one IBAN
When the input is a batch — onboarding a vendor file, clearing a payout run —
POST /iban/screen/batch screens many IBANs
under one x402 settlement instead of one settlement per row, which is the
difference between a workable pre-payment gate and a per-item toll.
What this check does not do
Be precise about scope, because compliance language is easy to overclaim:
- It screens the bank/BIC against sanctions lists and the jurisdiction risk — it does not screen the account holder’s name. Sanctions/PEP name matching is out of scope for this endpoint.
- A
clearverdict means no signal was found on the covered lists as of the snapshot date returned inprovenance.freshness. It is not a legal compliance opinion and does not discharge your own AML obligations.
Used for what it is — a fast, honest, pre-payment gate on the bank and the
jurisdiction — it lets an autonomous agent refuse the payments it should refuse,
before the money leaves. For the full field reference and error codes, see the
GET /iban/screen documentation; for how agents
discover and call Invoket endpoints, see For agents.