Counterparty check by tax ID: an AI agent compiles a report from registries and sanctions lists
A tax ID goes in, a structured counterparty report comes out — sourced, linked, and rated green, yellow or red. From hours of manual searching to a report in minutes.
- Scale
- State registry, 300+ sanctions sources, litigation history
- Stage
- In production
- Delivered
- March 2026
TL;DR. Checking a counterparty before signing took hours of manual searching across different websites. The agent takes a tax ID, queries open registries, sanctions and PEP lists and litigation history, then assembles a structured report with links to every source and a traffic-light recommendation: green, yellow or red.
Situation: why counterparty checks get postponed
Before signing, a counterparty is supposed to be checked: is the legal entity active, who is the director, are they on any sanctions list, what does the litigation history show, are there signs of impending insolvency.
In practice that means walking through several websites by hand, each with its own interface and its own output format. One counterparty took several hours. When a contract has to be signed today, the check is either done superficially or skipped — and the risk surfaces after the deposit has been paid.
Task
- Reduce the check to a single input: the tax ID.
- Query different types of source — registry, sanctions, litigation — in one run.
- Return a report that supports a decision, not a raw database dump.
- Keep links to primary sources: every statement in the report has to be verifiable.
What we built
The agent takes a tax ID and queries three types of source in parallel.
Registry data from the state register of legal entities: entity status, the director's name, registered address, primary and secondary activity codes, registration date.
Sanctions and PEP lists through an aggregator covering more than 300 sources: OFAC, EU, UN and UK sanctions lists, and lists of politically exposed persons. Both the company and the director's name — pulled from the registry in the previous step — are checked.
Litigation history: cases involving the company, whether as claimant or defendant, the nature of the disputes and the amounts claimed.
Everything collected goes to a language model, which aggregates the disparate sources into one structured report: what was found, how material it is, what to watch for when signing. The result is a traffic-light recommendation with a link to every primary source.
Result
- A counterparty check went from hours of manual searching across sites to one report in minutes.
- Both the company and the director's name are screened against sanctions and PEP lists.
- Every statement in the report carries a link to its primary source, so the report can be re-checked.
- The check stops being the step that gets skipped because the contract is urgent.
Key technical decisions
- The director's name comes from the registry, not from typing. Screening an individual is only possible once the agent has pulled the director out of the state register by tax ID. Manual entry here is a source of typos and missed matches.
- A traffic light rather than a numeric score. A human makes the decision. Green / yellow / red plus a list of findings tells you more than a score that hides what was actually found.
- Source links on every item. A report without links can't be attached to a decision to sign. The agent stores a link to the primary source for every fact found.
- Collection separated from aggregation. Querying the sources is deterministic; the language model only works at the stage of assembling facts into a report. It composes what was collected rather than inventing data.
FAQ
Which sources does the agent check?
Open registries of legal entities, sanctions and PEP lists through an aggregator of more than 300 lists — including OFAC, the EU, the UN and the UK — plus litigation history for the company.
Is only the company checked, or the director too?
Both. The agent gets the director's name from the registry by tax ID and screens it separately against sanctions and PEP lists — a legal entity can be clean while there are questions about the individual behind it.
Can the report be trusted without checking it?
The report is material for a decision, not the decision itself. That's why every item carries a link to its primary source: a questionable finding can be opened and read in seconds.
Does this work for screening counterparties in bulk?
Yes — the input is a tax ID, so checks can be launched as a batch. The limit is the quotas of the sources used: some APIs are free within a daily allowance, others are billed per request.
What would come next
The natural continuation is periodic re-screening of active counterparties: entity status and sanctions lists change after the contract is signed. After that, wiring it to contract review, so the company report arrives together with an analysis of the draft they sent.
If counterparty checks are done by hand, or not at all, let's talk it through in 30 minutes.
Stack
- Python
- Dadata API
- OpenSanctions API
- litigation search
- LLM source aggregation