Skip to main content

Sanctions Screening

Overview

Sanctions screening is the mandatory compliance process of checking all payment parties โ€” individuals, entities, and financial institutions โ€” against government-issued and international watchlists. If a match is found, the payment must be blocked, the account may need to be frozen, and the incident reported to the regulator.

Sanctions & AML Compliance Fuzzy Screening Engine Simulator
SDN WATCHLIST SCORED MATCHES:
ALI HASSAN MOHAMMED
ID: SDN-101 โ€ข Country: IR โ€ข Program: SDGT
98.9%
ALERT
AL-RASHID TRADING CO
ID: SDN-102 โ€ข Country: SY โ€ข Program: SYRIA
70.4%
CLEAR
VLADIMIR PETROV
ID: SDN-103 โ€ข Country: RU โ€ข Program: RUSSIA-EO14024
47.6%
CLEAR
KIM JONG UN ENTERPRISES
ID: SDN-104 โ€ข Country: KP โ€ข Program: DPRK
44.5%
CLEAR
REAL-TIME COMPLIANCE ENGINE DECISION
โ›” POTENTIAL SANCTIONS HIT (AUTO-HOLD)
Match score 98.9% exceeds threshold 85% against SDN entry ALI HASSAN MOHAMMED.
Payment automatically held. Compliance Alert raised for Level 1 Analyst review.
ANALYST DISPOSITION WORKFLOW:

Sanctions are geopolitical tools. Governments use them to restrict economic activity with certain countries, regimes, terrorist organisations, weapons proliferators, and corrupt individuals. For banks, processing a sanctioned transaction โ€” even unknowingly โ€” can result in catastrophic penalties.

Key principle: Sanctions are not optional and not risk-based. If a name is on the list, the payment must stop โ€” no exceptions.


Why Sanctions Screening Matters

Real-World Penalty Examples

BankYearPenaltyReason
BNP Paribas2014USD 8.97BProcessing transactions for Sudan, Iran, Cuba
Standard Chartered2019USD 1.1BIran, Myanmar, Zimbabwe transaction processing
HSBC2012USD 1.9BMexican drug cartel + sanctions violations
Commerzbank2015USD 1.45BIran, Sudan payments stripped of identifying info
Westpac2020AUD 1.3BAML/CTF breaches including AUSTRAC violations

Consequences of Non-Compliance

ConsequenceDetails
Massive finesCan exceed the bank's annual profit
Criminal prosecutionSenior executives personally liable
Reputational damageLoss of correspondent banking relationships โ€” effectively cuts off international payments
SWIFT disconnectionExclusion from the global interbank network
Banking licence revocationRegulator can shut the bank down
Deferred Prosecution AgreementsBank placed under US government supervision for years

Types of Sanctions

1. Comprehensive Sanctions (Country-Level)

Broad prohibition on all economic activity with a country or regime.

Country / RegimeSanctioning BodyScope
IranOFAC (US), EU, UN, DFAT (AU)Near-total ban on transactions
North Korea (DPRK)OFAC, UN, EU, DFATComprehensive embargo
SyriaOFAC, EU, DFATBroad restrictions
CubaOFACUS-specific embargo; others vary
Russia (post-2022)EU, OFAC, DFAT, UKSectoral + targeted
BelarusEU, UK, OFACSenior regime figures + entities
MyanmarOFAC, EU, DFATMilitary junta + entities

โš ๏ธ Extraterritorial Reach of OFAC: Even a non-US bank can be penalised by OFAC if transactions touch the US financial system (USD clearing, US correspondent banks). This makes OFAC screening globally mandatory.

2. Targeted / Individual Sanctions

Prohibitions on specific named individuals and entities, regardless of their country.

  • Specially Designated Nationals (SDN) โ€” OFAC's primary list; includes terrorists, drug traffickers, WMD proliferators, and corrupt oligarchs
  • Consolidated UN List โ€” UN-designated individuals and entities
  • EU Consolidated List โ€” EU-designated individuals and entities
  • DFAT List (AU) โ€” Australia's autonomous sanctions on individuals and entities

3. Sectoral Sanctions

Restrictions on specific sectors of an economy rather than blanket bans โ€” common for Russia sanctions:

Sectoral Sanctions examples (Russia):
โ”œโ”€โ”€ Energy sector โ€” Restrictions on financing for oil projects
โ”œโ”€โ”€ Defence sector โ€” No finance/export of military equipment
โ”œโ”€โ”€ Finance sector โ€” Restrictions on major Russian banks (debt/equity financing)
โ””โ”€โ”€ Technology โ€” Export controls on dual-use technology

4. Secondary Sanctions

US secondary sanctions penalise non-US entities that do business with sanctioned parties โ€” even if no US person or USD is involved:

Iranian company โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ German company (non-US)
(sanctioned) โ”‚
โ”‚ US secondary sanctions risk
โ–ผ
German company could be cut off
from the US financial system

This is why banks globally โ€” not just US banks โ€” screen against OFAC lists.


Global Sanctions Lists

Primary Lists (Must Screen Against)

ListAuthorityNotes
OFAC SDNUS Treasury Office of Foreign Assets Control~13,000+ entries; most powerful list globally
OFAC Non-SDN / SSIUS TreasurySectoral Sanctions Identifications (SSI) list
UN Security Council ConsolidatedUnited NationsMandatory for all UN member states
EU Consolidated SanctionsEuropean CouncilMust screen for EU-connected transactions
UK OFSI ConsolidatedHM Treasury Office of Financial Sanctions ImplementationPost-Brexit, UK maintains its own list
DFAT ConsolidatedAustralian Dept of Foreign Affairs and TradeAustralia's autonomous sanctions
AUSTRAC GuidanceAUSTRACAML/CTF risk guidance (supplements DFAT)

Secondary / Supplementary Lists

ListSourceUsage
Interpol Red NoticesInterpolWanted persons (not legally binding)
World Bank DebarredWorld BankDebarred entities from WB projects
FATF High-Risk CountriesFATFEnhanced due diligence jurisdictions
Transparency International CPITICorruption Perception Index โ€” risk indicator
Internal Bank BlacklistsEach bankInternal watchlists from investigations

SDN List โ€” Structure Deep Dive

The OFAC SDN list entry contains:

SDN Entry Example:
โ”œโ”€โ”€ Name: ALI HASSAN MOHAMMED
โ”œโ”€โ”€ Aliases: HASSAN, Ali; MOHAMMED ALI, Hassan
โ”œโ”€โ”€ Type: Individual
โ”œโ”€โ”€ Program: SDGT (Specially Designated Global Terrorist)
โ”œโ”€โ”€ DOB: 01 Jan 1975
โ”œโ”€โ”€ POB: Yemen
โ”œโ”€โ”€ Nationality: Yemeni
โ”œโ”€โ”€ Passport: YE123456 (issued Yemen)
โ”œโ”€โ”€ Address: Sana'a, Yemen
โ””โ”€โ”€ Additional info: Associated with [terrorist org]

Associated entity:
โ”œโ”€โ”€ Name: AL-HASSAN TRADING CO.
โ”œโ”€โ”€ Type: Entity
โ”œโ”€โ”€ Program: SDGT
โ”œโ”€โ”€ Address: Sana'a, Yemen
โ””โ”€โ”€ ID: YE-REG-12345

Banks must screen against all fields โ€” name, alias, DOB, address, passport number.


What Must Be Screened

In Every Payment

pacs.008 / pain.001 Payment Instruction
โ”œโ”€โ”€ Debtor
โ”‚ โ”œโ”€โ”€ Name (and all name variants)
โ”‚ โ”œโ”€โ”€ Address / country
โ”‚ โ”œโ”€โ”€ Date of birth (individuals)
โ”‚ โ””โ”€โ”€ Registration number (entities)
โ”œโ”€โ”€ Debtor Account (IBAN, account number)
โ”œโ”€โ”€ Debtor Agent (BIC โ†’ country extraction)
โ”œโ”€โ”€ Instructing Party (if different from debtor)
โ”œโ”€โ”€ Ultimate Debtor (if present)
โ”œโ”€โ”€ Intermediary Agent(s) (correspondent banks)
โ”œโ”€โ”€ Creditor Agent (BIC โ†’ country extraction)
โ”œโ”€โ”€ Creditor
โ”‚ โ”œโ”€โ”€ Name
โ”‚ โ”œโ”€โ”€ Address / country
โ”‚ โ””โ”€โ”€ Registration number
โ”œโ”€โ”€ Creditor Account
โ”œโ”€โ”€ Ultimate Creditor (if present)
โ””โ”€โ”€ Remittance Information
โ””โ”€โ”€ Scan for entity names embedded in free text

At Customer Onboarding

  • Full name + aliases
  • Beneficial owners (โ‰ฅ 25% ownership โ€” see UBO rules in AML)
  • Directors and key controllers
  • Connected entities and subsidiaries

On List Updates

When OFAC/UN/DFAT publish a new list version, every existing customer in the bank must be re-screened against the new entries.


Sanctions Screening Architecture

The screening pipeline parses incoming party fields, normalises characters, runs exact and fuzzy matching algorithms (Jaro-Winkler, Levenshtein, Double Metaphone), and scores candidate matches against configured thresholds.

Use the interactive screening simulator at the top of this page to test fuzzy matching scores, thresholds, and analyst disposition workflows in real-time.


Name Matching Algorithms

Jaro-Winkler Similarity

Best for short strings (names). Gives extra weight to matches at the start of the string.

// Jaro-Winkler example
double score = jaroWinkler.apply("Mohammed Ali", "Mohammad Ali");
// Returns ~0.944 โ€” high confidence match

// Threshold typically set at 0.85 for sanctions
boolean isAlert = score >= 0.85;

Levenshtein Distance

Counts minimum edits (insert, delete, substitute) to transform one string to another.

int distance = levenshtein.apply("HASSAN", "HASAAN");
// Returns 1 (one substitution) โ€” likely a match

Double Metaphone (Phonetic)

Encodes names by how they sound, not how they're spelled.

String[] codes = metaphone.doubleMetaphone("Mohammed");
// Returns ["MHM", "MMT"] โ€” same codes as "Mohamed", "Muhammed"
// Catches transliteration variants

Token Set Ratio

Handles names in different word order.

// "Ali Hassan Mohammed" vs "Mohammed Ali Hassan"
// Standard fuzzy: low score (different order)
// Token set ratio: high score (same tokens, different order)
double score = tokenSetRatio("Ali Hassan Mohammed", "Mohammed Ali Hassan");
// Returns 1.0 โ€” same tokens

Match Threshold Strategy

ThresholdBehaviourTrade-off
100% (exact only)Minimal false positivesEasily evaded by minor spelling variants
85โ€“90%BalancedIndustry standard for high-volume screening
70โ€“80%More alertsHigh false positive rate; analyst workload โ†‘
60โ€“70%Very sensitiveUnusable false positive rate

Banks typically run multiple thresholds โ€” 85% for auto-hold, 70% for audit log only.


Country Risk and Embargo Screening

Beyond name matching, the country in a payment must be checked:

public class CountryRiskScreeningService {

public CountryRiskResult screen(String bicOrIban) {
String countryCode = extractCountry(bicOrIban); // e.g., "IR" from BKIRIRIA

if (comprehensiveEmbargo.contains(countryCode)) {
// e.g., IR (Iran), KP (North Korea), SY (Syria)
return CountryRiskResult.block("Comprehensive embargo: " + countryCode);
}

if (sectoralSanctions.contains(countryCode)) {
// e.g., RU (Russia) โ€” depends on transaction type
return CountryRiskResult.review("Sectoral sanctions apply: " + countryCode);
}

if (fatfHighRisk.contains(countryCode)) {
// FATF grey/black list countries
return CountryRiskResult.enhancedDueDiligence(countryCode);
}

return CountryRiskResult.clear(countryCode);
}

private String extractCountry(String bic) {
// BIC format: BBBB-CC-LL-BBB (CC = country)
return bic.length() >= 6 ? bic.substring(4, 6).toUpperCase() : "XX";
}
}

High-Risk / Embargoed Country Categories

CategoryExamplesTreatment
Comprehensive embargoIran, DPRK, Syria, Cuba (US)Block all transactions
Sectoral sanctionsRussia, BelarusBlock based on transaction type/sector
FATF Black ListIran, DPRKEnhanced due diligence + report to regulator
FATF Grey ListPakistan, UAE (past), PhilippinesIncreased monitoring
High-risk DFATCountries on DFAT concern listEnhanced scrutiny

False Positive Management

False positives are the biggest operational challenge in sanctions screening. A bank processing millions of payments per day may generate thousands of false alerts daily.

False Positive Rate Benchmarks

IndustryTypical FP RateTarget
Retail banking95โ€“99% of alerts are false positives< 95%
Correspondent banking90โ€“97%< 90%
Trade finance85โ€“95%< 85%

Reducing False Positives

Techniques:
โ”œโ”€โ”€ Whitelisting โ€” Known good entities (e.g., "Shell" the oil company vs "Shell" the person)
โ”œโ”€โ”€ Rule tuning โ€” Adjust thresholds per list / name type
โ”œโ”€โ”€ Context scoring โ€” Weight by address, DOB, account number match
โ”œโ”€โ”€ Entity disambiguation โ€” Resolve common names using LEI/registration numbers
โ”œโ”€โ”€ Suppression rules โ€” Suppress alert if same entity already reviewed + cleared
โ””โ”€โ”€ Post-review feedback loop โ€” Analyst decisions train the model

Analyst Workflow for False Positive Disposition

Alert Received
โ”‚
โ–ผ
Analyst Reviews:
โ”œโ”€โ”€ Does nationality/address/DOB match?
โ”œโ”€โ”€ Is this a common name? (e.g., "Mohammed Ali" โ€” millions worldwide)
โ”œโ”€โ”€ Additional identifiers available? (passport, LEI, registration)
โ”œโ”€โ”€ Context: what is the transaction for?
โ””โ”€โ”€ Has this entity been cleared before?
โ”‚
โ”œโ”€โ”€ CLEARLY DIFFERENT PERSON โ†’ False Positive
โ”‚ Document: name, why cleared, analyst ID, timestamp
โ”‚ Add to suppression list (if safe to do so)
โ”‚
โ”œโ”€โ”€ UNCERTAIN โ†’ Escalate to Senior Analyst
โ”‚ Request additional customer information
โ”‚ Apply de-risking measures
โ”‚
โ””โ”€โ”€ CONFIRMED MATCH โ†’ True Hit
Escalate to Compliance Manager
Block payment / freeze account
File with AUSTRAC/OFAC

Watchlist Maintenance and List Updates

Sanctions lists are updated frequently โ€” OFAC alone may update the SDN list multiple times per week:

List Update Workflow:
1. New list published by OFAC/UN/EU/DFAT
2. Compliance team notified (automated)
3. New list ingested into screening engine (automated, < 1 hour)
4. Delta screening run against:
โ”œโ”€โ”€ All existing customers (customer screening)
โ”œโ”€โ”€ All pending/queued payments
โ””โ”€โ”€ Recent transactions (look-back period, e.g., 30 days)
5. New alerts generated for newly added entries
6. Audit log of list version used for each screening event
@Service
public class WatchlistMaintenanceService {

@Scheduled(fixedDelay = 3_600_000) // Every hour
public void checkForListUpdates() {
for (SanctionsList list : SanctionsList.values()) {
String latestVersion = listProvider.getLatestVersion(list);
String currentVersion = listVersionRepository.getCurrent(list);

if (!latestVersion.equals(currentVersion)) {
List<SanctionsEntry> delta = listProvider.getDelta(
list, currentVersion, latestVersion);

// Update local list
listRepository.applyDelta(list, delta);
listVersionRepository.update(list, latestVersion);

// Re-screen impacted customers
screeningJobQueue.submit(new DeltaScreeningJob(delta));

auditLog.info("Sanctions list updated: {} from {} to {}",
list, currentVersion, latestVersion);
}
}
}
}

Sanctions Evasion Red Flags

Banks must be alert to attempts to circumvent sanctions controls:

Red FlagDescription
StrippingRemoving identifying information from SWIFT MT messages (e.g., removing Iranian bank BIC)
Name misspellingDeliberate typos to avoid fuzzy matching (e.g., "Khaminei" for "Khamenei")
Shell company routingUsing non-sanctioned shell companies owned by sanctioned individuals
Third-country routingRouting payments through a non-sanctioned jurisdiction to obscure origin/destination
Proxy ownershipSanctioned individual owns < 50% but controls the entity through nominees
Mixed jurisdictionLegitimate entity registered in a sanctioned country (e.g., a branch in Iran)
PayID maskingUsing a phone number or email PayID to hide account details
Correspondent layeringUsing chains of correspondent banks to obscure the sanctioned party

Payment Stripping (Historical SWIFT MT)

Original MT103:
:52A: BKIRIRIA โ† Iranian bank BIC
:59: /IR987654321 John Smith

Stripped MT103 sent to US correspondent:
:52A: (field removed)
:59: John Smith

US correspondent bank sees no Iranian connection โ†’ processes
โ†’ Bank later fined for knowing about the stripping

ISO 20022 makes stripping much harder โ€” structured XML fields are harder to remove without breaking validation.


Correspondent Banking and De-Risking

Banks are reducing their correspondent banking relationships to avoid sanctions exposure โ€” known as de-risking:

Bank A (small, high-risk jurisdiction)
โ”‚
โ”‚ Applies for USD correspondent account
โ”‚
โ–ผ
Major US Bank (potential correspondent)
โ”‚
โ”‚ Assesses:
โ”œโ”€โ”€ Does Bank A have robust sanctions controls?
โ”œโ”€โ”€ Is Bank A's home jurisdiction high-risk?
โ”œโ”€โ”€ What are Bank A's customers like?
โ””โ”€โ”€ Is the compliance cost worth the revenue?
โ”‚
โ–ผ
If risk too high โ†’ De-risk: decline the relationship

This de-risking trend creates financial exclusion for smaller/developing-country banks โ€” a global policy challenge.


Regulatory Reporting โ€” True Sanctions Hit

When a confirmed sanctions hit is found:

Immediate Actions (Within Hours)

  1. Block the payment permanently
  2. Freeze the customer's account (if the customer is sanctioned)
  3. Escalate to Compliance Manager and Legal
  4. Do NOT tip off the customer โ€” this is a criminal offence

Regulatory Reporting

JurisdictionAuthorityReportDeadline
AustraliaAUSTRAC + DFATSMR / Freezing noticeImmediately / ASAP
USOFACOFAC ReportWithin 10 business days
UKOFSI (HM Treasury)Freezing / asset reportWithin 14 days
EUNational FIUPer member state rulesVaries

Record Keeping

  • All screening events must be logged (payment ID, parties screened, list version, score, decision)
  • Minimum retention: 7 years in Australia
  • Records must be producible on demand for regulatory examination

Sanctions vs AML vs Fraud

DimensionSanctionsAML/CTFFraud
PurposeBlock geopolitically prohibited entitiesDetect financial crime patternsPrevent monetary loss
Legal obligationMandatory โ€” no risk-based discretionMandatory โ€” risk-based approachRisk management
Lists usedGovernment watchlists (OFAC, UN, DFAT)Internal TM rules, FATF guidanceInternal blacklists, fraud networks
Can tip off customer?โŒ Criminal offenceโŒ Criminal offenceโœ… Yes (contact to verify)
Report toAUSTRAC, OFAC, OFSI, DFATAUSTRAC (SMR)Internal only
ReviewerCompliance officerAML analystFraud analyst
Threshold approachZero toleranceRisk-basedRisk-based
False positivesHigh volume โ€” need analyst triageModerateHigh โ€” automated clearing common

Java Spring โ€” Full Screening Implementation

@Service
@Slf4j
public class SanctionsScreeningService {

private final WatchlistRepository watchlistRepository;
private final NameNormalisationService normaliser;
private final MatchingEngine matchingEngine;
private final PaymentHoldService holdService;
private final ComplianceAlertService alertService;
private final ScreeningAuditRepository auditRepository;
private final CountryRiskService countryRiskService;

@Value("${screening.fuzzy.threshold:0.85}")
private double fuzzyThreshold;

@Value("${screening.exact.account-numbers:true}")
private boolean screenAccountNumbers;

public ScreeningResult screen(PaymentInstruction instruction) {
List<ScreeningSubject> subjects = extractAllSubjects(instruction);
List<ScreeningAlert> alerts = new ArrayList<>();

for (ScreeningSubject subject : subjects) {

// 1. Country-level check (fast โ€” before name matching)
if (subject.hasCountry()) {
CountryRiskResult countryRisk =
countryRiskService.screen(subject.getCountry());
if (countryRisk.isBlocked()) {
return escalateHit(instruction, subject, countryRisk.getReason());
}
}

// 2. Account number / BIC exact match
if (screenAccountNumbers && subject.hasAccountIdentifier()) {
List<WatchlistMatch> exactMatches =
watchlistRepository.findExactByIdentifier(
subject.getAccountIdentifier());
if (!exactMatches.isEmpty()) {
return escalateHit(instruction, subject,
"Exact account/BIC match: " + subject.getAccountIdentifier());
}
}

// 3. Fuzzy name matching
String normalisedName = normaliser.normalise(subject.getName());
List<WatchlistCandidate> candidates =
watchlistRepository.findCandidates(normalisedName);

for (WatchlistCandidate candidate : candidates) {
double score = matchingEngine.score(normalisedName,
candidate.getNormalisedName());

if (score >= fuzzyThreshold) {
alerts.add(ScreeningAlert.builder()
.subject(subject)
.candidate(candidate)
.score(score)
.matchType(MatchType.FUZZY_NAME)
.build());
}
}
}

// Audit every screening event
auditRepository.save(ScreeningAuditRecord.builder()
.paymentId(instruction.getId())
.subjectsScreened(subjects.size())
.alertCount(alerts.size())
.listVersions(watchlistRepository.getCurrentVersions())
.screenedAt(Instant.now())
.result(alerts.isEmpty() ? "CLEAR" : "ALERT")
.build());

if (alerts.isEmpty()) {
return ScreeningResult.clear(instruction.getId());
}

// Hold payment and notify compliance
holdService.hold(instruction.getId(), HoldReason.SANCTION_ALERT);
alertService.raiseAlerts(alerts);

log.warn("Sanctions alert on payment {}: {} alerts raised",
instruction.getId(), alerts.size());

return ScreeningResult.potentialMatch(instruction.getId(), alerts);
}

private ScreeningResult escalateHit(PaymentInstruction instruction,
ScreeningSubject subject, String reason) {
holdService.holdPermanently(instruction.getId(), HoldReason.CONFIRMED_SANCTION);
alertService.raiseConfirmedHit(instruction, subject, reason);
log.error("CONFIRMED SANCTIONS HIT on payment {}: {}",
instruction.getId(), reason);
return ScreeningResult.confirmedMatch(instruction.getId(), reason);
}

private List<ScreeningSubject> extractAllSubjects(PaymentInstruction instruction) {
List<ScreeningSubject> subjects = new ArrayList<>();

// Parties
subjects.add(ScreeningSubject.fromParty(instruction.getDebtor(),
SubjectRole.DEBTOR));
subjects.add(ScreeningSubject.fromParty(instruction.getCreditor(),
SubjectRole.CREDITOR));

// Agents / BICs
subjects.add(ScreeningSubject.fromBic(instruction.getDebtorAgentBic(),
SubjectRole.DEBTOR_AGENT));
subjects.add(ScreeningSubject.fromBic(instruction.getCreditorAgentBic(),
SubjectRole.CREDITOR_AGENT));

// Optional parties
if (instruction.hasUltimateDebtor()) {
subjects.add(ScreeningSubject.fromParty(instruction.getUltimateDebtor(),
SubjectRole.ULTIMATE_DEBTOR));
}
if (instruction.hasUltimateCreditor()) {
subjects.add(ScreeningSubject.fromParty(instruction.getUltimateCreditor(),
SubjectRole.ULTIMATE_CREDITOR));
}

// Intermediary agents
instruction.getIntermediaryAgents().forEach(agent ->
subjects.add(ScreeningSubject.fromBic(agent.getBic(),
SubjectRole.INTERMEDIARY_AGENT)));

return subjects.stream()
.filter(ScreeningSubject::isScreenable)
.collect(toList());
}
}

Screening in the Payment Lifecycle

Ingestion TriggerScreening Touchpoint StageEvaluated Entity DataRegulatory Objective & Action
Customer Onboarding1. KYC Onboarding ScreenIndividual full names, aliases, Ultimate Beneficial Owners (UBOs โ‰ฅ25%\ge 25\%), directors, corporate entitiesBlocks account opening if hit against OFAC / DFAT designated person lists.
Outbound Payment2. Pre-Payment ScreenDebtor, Creditor, Intermediary BICs, remittance free-text info (pain.001 / pacs.008)Real-time inline intercept; holds payment prior to clearing transmission.
Inbound Payment3. Inbound Payment ScreenOriginating debtor, ordering institution, creditor details in incoming pacs.008Blocks funds posting to recipient account if matched against sanctions list.
Scheduled Batch4. Periodic Re-screenEntire active customer base against updated designated listsDaily/weekly batch job detecting status shifts of existing account holders.
List Update Trigger5. Delta List ScreenDelta differences in newly published OFAC SDN or UN Security Council listsImmediate re-screening of customer master file against newly added entities.

  • aml_kyc.md โ€” Runs alongside sanctions; different purpose and lists
  • fraud.md โ€” Third compliance check in the same pipeline
  • outbound.md โ€” Sanctions check before payment is submitted
  • inbound.md โ€” Sanctions check on received pacs.008
  • fis.md โ€” FI-level (BIC/country) sanctions screening
  • payment_exceptions.md โ€” Sanctions holds as exceptions
  • swift.md โ€” SWIFT gpi and sanctions compliance
๐Ÿ“–
Track Page Progress0 / 635 Read
Knowledge Base Completion0%