Use Cases & Integration Patterns
Discover how organizations integrate SanctionsWise API into their compliance workflows.
Manual to API Migrationβ
The Problem: Manual Screeningβ
Many organizations still rely on manual screening processes:
| Step | Manual Process | Time |
|---|---|---|
| 1 | Download OFAC list | 5 min |
| 2 | Open in Excel | 2 min |
| 3 | Ctrl+F search | 3 min |
| 4 | Manual logging | 5 min |
Issues with manual screening:
- β Stale data (lists update frequently)
- β Miss spelling variations
- β No audit trail
- β ~60% accuracy
- β 5+ minutes per entity
The Solution: SanctionsWise APIβ
| Metric | Manual | API |
|---|---|---|
| Time per entity | 5 min | 0.2 sec |
| Accuracy | ~60% | 99%+ |
| Automation | None | Full |
| Audit trail | Manual | Automatic |
Why Manual Screening Misses Matchesβ
| Scenario | Manual Search | OFAC Has | Manual Result | API Result |
|---|---|---|---|---|
| Spelling Variation | "Mohammed" | "Muhammad", "Mohamad" | β MISS | β Phonetic Match |
| Entity Structure | "Bank Rossiya" | "JOINT STOCK BANK 'ROSSIYA'" | β MISS | β Fuzzy 0.78 |
| Transliteration | "Vladimir Putin" | "ΠΠ»Π°Π΄ΠΈΠΌΠΈΡ ΠΡΡΠΈΠ½" (Cyrillic) | β MISS | β Alias Match |
| Name Order | "Kim Jong Un" | "Jong Un Kim" | β MISS | β Token Match |
Integration Patternsβ
Pattern 1: Real-Time Transaction Screeningβ
Best for: Wire transfers, payment processing, customer onboarding
Wire Request β SanctionsWise API β Decision
β
ββββββββββββΌβββββββββββ
β β β
CLEAR POTENTIAL MATCH
β β β
Process Queue for Block &
Transfer Review Alert
Implementation:
import requests
def screen_wire_transfer(beneficiary_name, beneficiary_country=None):
response = requests.post(
"https://api.sanctionswise.orchestraprime.ai/v1/screen/entity",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"name": beneficiary_name,
"country": beneficiary_country,
"threshold": 0.85
}
)
result = response.json()
if result["status"] == "clear":
return {"action": "process", "screening_id": result["screening_id"]}
elif result["status"] == "potential_match":
return {"action": "review", "matches": result["matches"]}
else: # match
return {"action": "block", "matches": result["matches"]}
Pattern 2: Nightly Batch Screeningβ
Best for: Portfolio screening, periodic customer review, large migrations
Scheduled Export Chunk into Parallel
Trigger β Customer β Batches of β API Calls β Morning
(2AM) List 100 Report
Implementation:
import requests
from concurrent.futures import ThreadPoolExecutor
def screen_batch(entities):
"""Screen up to 100 entities in a single batch"""
response = requests.post(
"https://api.sanctionswise.orchestraprime.ai/v1/screen/batch",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"entities": entities, "threshold": 0.85}
)
return response.json()
def nightly_portfolio_screen(customers):
# Chunk into batches of 100
batches = [customers[i:i+100] for i in range(0, len(customers), 100)]
results = {"clear": 0, "review": 0, "match": 0}
# Process batches in parallel
with ThreadPoolExecutor(max_workers=5) as executor:
futures = [executor.submit(screen_batch, batch) for batch in batches]
for future in futures:
batch_result = future.result()
for result in batch_result["results"]:
results[result["status"]] += 1
return results
Pattern 3: Event-Driven Microservicesβ
Best for: Modern architectures, real-time triggers, serverless
# AWS Lambda handler for EventBridge events
import json
import requests
def lambda_handler(event, context):
# Extract entity from event
entity = event["detail"]
# Screen against sanctions lists
response = requests.post(
"https://api.sanctionswise.orchestraprime.ai/v1/screen/entity",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"name": entity["name"],
"entity_type": entity.get("type", "individual"),
"threshold": 0.85
}
)
result = response.json()
# Route based on result
if result["status"] == "match":
# Publish to blocking queue
return {"statusCode": 200, "action": "block"}
elif result["status"] == "potential_match":
# Publish to review queue
return {"statusCode": 200, "action": "review"}
else:
# Continue normal flow
return {"statusCode": 200, "action": "continue"}
Pattern 4: Hybrid Caching Strategyβ
Best for: High-volume applications (50,000+ screens/day)
| Status | Cache TTL | Rationale |
|---|---|---|
| CLEAR | 24 hours | Low risk, reduce API calls |
| POTENTIAL_MATCH | 1 hour | May be resolved by analyst |
| MATCH | Never cache | Always escalate immediately |
Benefits:
- 80%+ cache hit rate
- Under 50ms cached responses
- 70% cost reduction
Industry Solutionsβ
Banking & Financeβ
| Touchpoint | API Usage | Trigger |
|---|---|---|
| Account Opening | POST /v1/screen/entity | KYC submission |
| Wire Transfer | POST /v1/screen/entity | Before execution |
| Loan Origination | POST /v1/screen/batch | Application review |
| Trade Finance | POST /v1/screen/batch | LC/BG issuance |
| Portfolio Review | POST /v1/screen/batch | Nightly batch |
Cryptocurrency Exchangesβ
| Event | Screening | Action |
|---|---|---|
| User Registration | Real-time screening | CLEAR β Approve / MATCH β Reject |
| Withdrawal > $10K | Re-screen user | Check for list updates since signup |
| High-risk jurisdiction | Lower threshold (0.60) | Enhanced due diligence |
E-Commerce & Export Controlβ
| Check | Entities Screened | Lists |
|---|---|---|
| Order Screening | Customer name, shipping address | OFAC SDN |
| Export Control | End-user organization | BIS Entity List |
| Seller Verification | Marketplace sellers | OFAC SDN |
Shipping & Logisticsβ
| Function | Entities | Frequency |
|---|---|---|
| Freight Forwarding | Shippers, consignees | Per shipment |
| Vessel Chartering | Vessels, owners (IMO #) | Per charter |
| Customs Brokerage | Importers, exporters | Per declaration |
Compliance Workflowsβ
Compliance Officer Daily Workflowβ
| Time | Activity | API Usage |
|---|---|---|
| 08:00 | Review overnight batch | Dashboard summary |
| 09:00 | Process potential matches | GET /v1/entities/{id} for details |
| 11:00 | Handle real-time escalations | Approve/reject with audit trail |
| 14:00 | Respond to audit requests | Retrieve by screening_id |
| 16:00 | Generate daily report | Coverage, false positive rate |
AML Analyst Investigation Workflowβ
- Alert Received - Initial screening hit notification
- Comprehensive Screening - Lower threshold (0.60), include identifiers
- Relationship Screening - Batch screen associates, employers, family
- Evidence Collection -
GET /v1/entities/{id}for source authority, programs - Decision - True Match β File SAR / False Positive β Document
Threshold Configuration Guideβ
| Risk Profile | Threshold | False Positives | Best For |
|---|---|---|---|
| Conservative | 0.60 | Higher | High-risk regions, crypto, sanctions-heavy corridors |
| Balanced | 0.85 | Medium | Standard banking, payment processing |
| Aggressive | 0.95 | Lower | High-volume, low-risk transactions |
ROI Calculatorβ
Manual vs. API Comparison (100 screens/day)β
| Metric | Manual | API | Savings |
|---|---|---|---|
| Time per screen | 5 min | 0.2 sec | 99.9% |
| Daily time | 8.3 hours | 20 sec | 8.3 hours |
| Annual time | 2,166 hours | 1.4 hours | 2,165 hours |
| Cost @ $50/hr | $108,300 | $3,588 | $104,712 |
| Accuracy | 60% | 99%+ | 39% gain |
| Audit coverage | Partial | 100% | Complete |
Pricing Tiersβ
| Tier | Price | Screens/Month | Rate Limit | Best For |
|---|---|---|---|---|
| Free | $0/mo | 500 | 1/sec | Testing & POC |
| Starter | $99/mo | 5,000 | 5/sec | Small business |
| Professional | $299/mo | 25,000 | 25/sec | Mid-market |
| Enterprise | $999+/mo | 100,000+ | 50/sec | High volume |
Migration Timelineβ
4-Week Transition Planβ
| Week | Phase | Activities |
|---|---|---|
| 1-2 | Parallel Running | Sign up for Free tier, run both manual AND API on same names, compare results, tune threshold |
| 3-4 | Primary API | API becomes primary screening method, manual only for spot-checks |
| 5+ | Optimized | Integrate with core systems, automate batch screening, upgrade tier as volume grows |
Next Stepsβ
- Sign up for free tier
- Review API documentation
- Explore SDK examples
- Contact sales for Enterprise pricing