Automate sanctions screening before money moves
A screening agent checks each new counterparty and its directors in ComplyAdvantage, applies your match rules, and holds the payment for a reviewer whenever there is a possible match.
Works with

- Custom REST
- Payments system · via Custom REST
and any system with an API via Custom REST
What is sanctions screening?
The procedure
Sanctions screening checks a counterparty, its directors and its owners against the lists your policy names before money moves. Many possible matches are common names, so the work is comparing identifiers such as date of birth and country. A match that cannot be ruled out keeps the payment on hold and goes up the chain.
What the agent does
Screens the counterparty, directors and owners in ComplyAdvantage
Puts the match details next to the counterparty record for the reviewer
Releases the payment hold through Custom REST once screening is clear
Re-screens your counterparty list on the schedule you set
What your team decides
Whether each possible match is a false positive
When a payment held on a match is released
Escalations to your MLRO or compliance officer
Next steps on a confirmed match, under your policy
Example runs for sanctions analysts, payments operations, MLROs or compliance officers
Sanctions Screening Agent
Screens each new counterparty before the first payment goes out.

- +1
Trigger: Inbound webhook · new counterparty
From a procedure Sanctions screening · v2.0
Priya
Screen the new counterparty Corvid Freight before the first payment.
Sanctions Screening Agent
Screened Corvid Freight and its 2 directors in ComplyAdvantage- No possible matches on the company or the directors
screening.hits == 0 - Recorded the result against the counterparty
- Released the payment hold in the payments system through Custom REST
Cleared. No matches. The screening result and the procedure version are stored with the counterparty record.
4 steps · 0 reviews
Sanctions Screening Agent
Screens each new counterparty before the first payment goes out.

- +1
Trigger: Inbound webhook · new counterparty
From a procedure Sanctions screening · v2.0
Tom
Screen the new counterparty Ostrava Metals before the first payment.
Sanctions Screening Agent
Screened Ostrava Metals and its directors in ComplyAdvantage
Found 1 possible match on a director's name- Asked a reviewer, because any sanctions hit needs a person Waiting for a reviewerLena: false positive, date of birth differs
- Recorded the decision and released the payment hold
Cleared after review. One possible match, ruled a false positive by Lena. The match details, her reason and the procedure version are in the audit log.
4 steps · 1 review
Sanctions Screening Agent
Screens each new counterparty before the first payment goes out.

- +1
Trigger: Inbound webhook · new counterparty
From a procedure Sanctions screening · v2.0
Marcus
Screen the new counterparty Harbor Lane before the first payment.
Sanctions Screening Agent
Screened Harbor Lane and its owners in ComplyAdvantage
Found 1 possible match on an owner, with strong identifier overlap- Held the payment and paused for a reviewer on the owner match Waiting for a reviewerPriya: match stands, escalate to your MLRO or compliance officer
- Kept the payment hold and recorded the escalation
Escalated. Priya could not rule the match out. The payment stays on hold while your compliance officer reviews the evidence.
4 steps · 1 review
Setting up the Sanctions Screening Agent
Connect your systems
Screen in ComplyAdvantage, save evidence to Google Drive, and place or release holds in your payments system through Custom REST.


- Custom REST
- Payments system · via Custom REST
Write the rules
Any possible match goes to a person. The rule that decides it is plain CEL you can read, test and version.
screening.hits > 0Ask a reviewerscreening.hits == 0Release holdreview.decision == "match_stands"EscalateAdd reviewers where the procedure says
A named reviewer sees the match details next to the counterparty record, and the payment hold stays until they decide.
Review requested: Ostrava Metals
- Reason
- Possible sanctions match on a director
- Rule
- screening.hits > 0
- Procedure
- Sanctions screening · v2.0
False positiveEscalate
Start it from the event
Screen a counterparty as soon as your payments system posts it to a webhook, again when its details change, and on a nightly schedule across the whole counterparty list.
- Inbound webhook · new counterparty
- Daily at 02:00 · re-screen the counterparty list
- Inbound webhook · counterparty details changed
Version and evaluate
Keep scenarios for a clean counterparty, a false positive on a common name and a match that stands. Each sanctions screening version must pass them before it can be published.
Sanctions screening · v2.0Published
12/12 scenarios passed
Sanctions screening · v1.2 Superseded
Sanctions screening · v1.1 Superseded
Share with the team
Sanctions analysts review possible matches, payments operations can read why a payment is held, and auditors see each screen with the version it used. An Author owns the match rules.
Admin
Author
Reviewer
Auditor
Questions about sanctions screening automation
Does the agent ever clear a possible match?
No. Each possible match goes to a named reviewer, and the payment hold stays until they decide. The agent releases a hold only when screening returns no matches or a reviewer rules the match out.
Which lists does it screen against?
The lists set up in your ComplyAdvantage account. Verkflo runs the screen in ComplyAdvantage and applies your match rules to the results.
Can it re-screen existing counterparties?
Yes. A schedule can re-screen the counterparty list each night, and a webhook can start a screen when a counterparty's details change.
What does the reviewer see?
The match details, the counterparty record and the rule that paused the run. Their decision and reason are written to the audit log.
Controls your auditors will ask about
These controls apply to each agent you build. Sample data
Admin
Author
Reviewer
Auditor
Role-based access
Admin, Author, Reviewer and Auditor roles, scoped to each workspace.
- 41
7c2e… - 42
a91f… ← 7c2e - 43
03d8… ← a91f
Hash-chained audit log
Each entry carries the hash of the one before it. Verifying the log recomputes the chain and flags entries that no longer match.
- 41
- v1.1v1.2v1.3Published
Versioned specs
Each run records the exact version it followed; old versions stay readable.
- vault/sumsub/key
Secrets in a vault
Steps point to a vault path, and the key stays in the vault.
- Signed delivery accepted
- Unsigned delivery rejected
Signed webhook triggers
Unsigned or stale deliveries are rejected before a run starts.
- SandboxLive
Sandbox before live
New versions run on test data first. Going live is a separate step.
Related use cases
-


KYC onboarding reviewCheck documents, screen the applicant and apply your risk rules, with a reviewer where the procedure asks.
-


KYB and beneficial ownershipMap owners and controllers above your threshold, screen each one and flag gaps for a reviewer.
-

PEP and adverse media reviewCompare each PEP or adverse media hit with the customer file and put the evidence in front of a reviewer.
Run this procedure as an agent
Book a demo with your own version of this procedure, and we'll show it running with each step logged.
Book a demo