Skip to main content

OFAC, sanctions, PEP & KYB screening for Python — screen names, companies & crypto wallets against OFAC SDN, EU, UK, UN + 100+ watchlists; OIG-LEIE exclusion + fuzzy SDN matching; GLEIF ownership & name→LEI; SEC EDGAR filings; FDA NDC directory; plus 23 KYB / reference validators (LEI/GLEIF, US EIN, ABA, ABN, CNPJ, LATAM tax-IDs, SWIFT/BIC, GSTIN/PAN, GTIN/GLN, ISIN/CUSIP/SEDOL, DUNS, CAGE, EORI, IMEI, phone/E.164, UK VAT). Free demo, no key.

Project description

ofac-sanctions-screening

OFAC / sanctions / PEP / KYB screening for Python. Screen any person, company, or crypto wallet against OFAC SDN, EU, UK (OFSI), UN + 100+ global watchlists (powered by OpenSanctions) and get a PASS / WARN / BLOCK verdict — in one call, with cited sources.

  • Free demo, no signup — start screening in 10 seconds, no API key.
  • 🪙 Crypto-wallet OFAC screening — screen BTC/ETH addresses against the OFAC SDN crypto list (most APIs only do names & companies).
  • 🏢 KYB-360 — sanctions + PEP + entity risk + registry in one call.
  • ⚖️ One PASS / WARN / BLOCK verdict — no raw-list parsing.
  • 🔌 Zero dependencies, Python 3.8+. Pay-per-call (card or USDC via x402) — no seat license, no enterprise contract.

Install

pip install ofac-sanctions-screening

Quickstart (free, no key)

from ofac_sanctions_screening import Client

c = Client()  # free demo mode, rate-limited

# Sanctions / PEP screen a person or company
print(c.screen("Vladimir Putin"))
# {'result': {'flagged': True, 'match_count': 2, 'risk_topics': ['sanction', 'role.pep', ...], 'matches': [...]}}

# OFAC-screen a crypto wallet against the SDN crypto list
print(c.screen_wallet("1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa"))

# KYB screen a company
print(c.kyb("Acme Inc"))

Full access (paid)

Get an API key instantly with a card at https://api.gocreativeai.com/credits/buy (or pay-per-call in USDC via x402 — no key at all):

c = Client(api_key="gck_...")

c.screen("Some Person")        # full sanctions & PEP coverage
c.screen_wallet("0xabc...")    # full OFAC wallet screen
c.kyb("Some Company Ltd")      # full KYB-360 dossier
c.verdict("Some Person")       # one PASS / WARN / BLOCK decision
c.risk("Some Company")         # entity risk score 0-100 + onboarding flag

Compliance & registry lookups (paid)

Live watchlist + registry lookups that complement the sanctions screen — healthcare exclusion, fuzzy SDN matching, corporate ownership, name→LEI resolution, SEC filings and the FDA drug directory:

c = Client(api_key="gck_...")

c.screen_oig_exclusion("John Smith")
# {'is_excluded': True, 'match_count': 3, 'risk': 'HIGH — HHS-OIG LEIE ...', 'matches': [...]}
#   the mandatory pre-billing check for Medicare/Medicaid providers

c.screen_fuzzy_name("Vladimir Putin")
# {'is_potential_match': True, 'top_score': 83, 'matches': [{'name': 'PUTIN, Vladimir ...', ...}]}
#   catches alias / transliteration / reordered-name SDN hits a strict match misses

c.lookup_gleif_entity("Apple Inc")           # company NAME -> LEI(s) (ranked matches)
c.lookup_gleif_ownership("5493006MHB84DD0ZWV18")  # LEI -> corporate-ownership tree (UBO)
c.lookup_sec_filings("AAPL")                 # SEC EDGAR recent-filings feed (free demo too)
c.lookup_fda_ndc("Trulicity")               # FDA National Drug Code directory lookup

KYB identity / tax-ID validation (paid)

Reject malformed business identifiers before an expensive registry call — deterministic check-digit + reference-data validators for onboarding and vendor due diligence:

c = Client(api_key="gck_...")

c.verify_lei("529900T8BM49AURSDO55")
# {'verdict': 'VALID_ACTIVE', 'checksum_valid': True,
#  'entity': {'legal_name': 'Ubisecure Oy', 'legal_jurisdiction': 'FI', 'entity_status': 'ACTIVE', ...},
#  'registration': {'lei_status': 'ISSUED', ...}}   # ← live GLEIF Level-1 record

c.verify_ein("12-3456789")           # {'verdict': 'VALID_FORMAT', 'issuing_campus': 'Andover', ...}
c.verify_abn("51824753556")          # {'verdict': 'VALID', 'abn_formatted': '51 824 753 556', ...}
c.verify_latam_taxid("MX", "GODE561231GR8")
# {'verdict': 'VALID', 'country': 'MX', 'tax_id_scheme': 'RFC (Registro Federal de Contribuyentes)', ...}
# also handles AR CUIT, PE RUC, CO NIT, CL RUT

c.verify_bic("DEUTDEFF")
# {'verdict': 'VALID', 'structure': {'institution_code': 'DEUT', 'country_code': 'DE', ...},
#  'entity': {'legal_name': 'DEUTSCHE BANK AKTIENGESELLSCHAFT', 'lei': '7LTWFZYICNSX8D621K86', ...}}  # ← GLEIF BIC-to-LEI

c.verify_gstin("27AAPFU0939F1ZV")   # India GSTIN — mod-36 checksum + state + embedded PAN
c.verify_pan("AAPFU0939F")          # India PAN — structure + holder type
c.verify_gtin("4006381333931")      # GTIN/UPC/EAN — GS1 mod-10 check digit + region
c.verify_uk_vat("GB434031494")      # UK VAT — HMRC modulus-97 (9755)

# Or use the dispatcher for any validator:
c.verify("lei", "5493001KJTIIGC8Y1R12")
c.verify("latam-taxid", "GODE561231GR8", country="MX")

Reference-data / identifier validators (paid)

Deterministic check-digit + structural validators for finance, trade, securities and telecom identifiers — same keyless-algorithm pattern, one line each:

c = Client(api_key="gck_...")

# Finance / banking
c.verify_aba("021000021")          # US bank routing / ABA / MICR (Fed mod-10) + district
c.verify_cnpj("11222333000181")    # Brazil CNPJ checksum + Receita Federal company lookup
c.verify_cnpj_alpha("12ABC34501DE35")  # Brazil CNPJ incl. new 2026 alphanumeric format

# Securities
c.verify_isin("US0378331005")      # ISIN (ISO 6166) + security resolve
c.verify_cusip("037833100")        # CUSIP (North-American securities, mod-10)
c.verify_sedol("2046251")          # SEDOL (UK/Ireland, LSE weighted mod-10)

# Trade / supply chain / government
c.verify_duns("150483782")         # D&B D-U-N-S number format
c.verify_cage("1U2A3")             # US CAGE / NATO NCAGE (defense-supplier onboarding)
c.verify_eori("GB123456789000")    # EU/UK EORI (customs / trade compliance)
c.verify_gln("0614141000012")      # GS1 GLN (mod-10) + region

# Telecom / media
c.verify_phone("+14155552671")     # phone number (ITU-T E.164) + country decode
c.verify_imei("490154203237518")   # IMEI (GSMA Luhn) + TAC (manufacturer/model) decode
c.verify_issn("2049-3630")         # ISSN (ISO 3297, mod-11)
c.verify_media_type("application/json")  # IANA media type / MIME (RFC 6838)

Methods

Method Free demo Paid endpoint Returns
screen(name) /v1/verdict/screen sanctions & PEP matches across OFAC/EU/UK/UN + 100+ lists
screen_wallet(address) /v1/verdict/wallet OFAC SDN crypto-wallet match
kyb(name) /v1/verdict/kyb KYB-360 dossier
verdict(name) /v1/verdict/check PASS / WARN / BLOCK
risk(name) /v1/risk/entity-score risk score 0-100
screen_oig_exclusion(name) /v1/screen/oig-exclusion HHS-OIG LEIE healthcare-exclusion screen
screen_fuzzy_name(name) /v1/screen/fuzzy-name fuzzy OFAC SDN match (alias/transliteration)
lookup_gleif_ownership(lei) /v1/lookup/gleif-ownership GLEIF corporate-ownership tree (UBO)
lookup_gleif_entity(name) /v1/lookup/gleif-entity company name → LEI resolver
lookup_sec_filings(ticker_or_cik) /v1/lookup/sec-filings SEC EDGAR recent-filings feed
lookup_fda_ndc(ndc_or_name) /v1/lookup/fda-ndc FDA NDC drug-directory lookup
verify_lei(lei) /v1/verify/lei ISO 17442 checksum + GLEIF legal-entity record
verify_ein(ein) /v1/verify/ein US EIN format + IRS issuing campus
verify_abn(abn) /v1/verify/abn Australian ABN (ATO modulus-89)
verify_latam_taxid(country, tax_id) /v1/verify/latam-taxid MX RFC / AR CUIT / PE RUC / CO NIT / CL RUT
verify_bic(bic) /v1/verify/bic SWIFT/BIC (ISO 9362) + GLEIF legal entity
verify_gstin(gstin) /v1/verify/gstin India GSTIN (mod-36) + state / embedded PAN
verify_pan(pan) /v1/verify/pan India PAN structure + holder type
verify_gtin(gtin) /v1/verify/gtin GTIN/UPC/EAN (GS1 mod-10) + region
verify_uk_vat(vat) /v1/verify/uk-vat UK VAT (HMRC modulus-97)
verify_aba(routing_number) /v1/verify/aba US bank routing / ABA / MICR (Fed mod-10) + district
verify_cnpj(cnpj) /v1/verify/cnpj Brazil CNPJ checksum + Receita Federal lookup
verify_cnpj_alpha(cnpj) /v1/verify/cnpj-alpha Brazil CNPJ incl. 2026 alphanumeric format
verify_isin(isin) /v1/verify/isin ISIN (ISO 6166) + security resolve
verify_cusip(cusip) /v1/verify/cusip CUSIP (North-American securities)
verify_sedol(sedol) /v1/verify/sedol SEDOL (UK/Ireland securities)
verify_duns(duns) /v1/verify/duns D&B D-U-N-S number format
verify_cage(code) /v1/verify/cage US CAGE / NATO NCAGE code
verify_eori(eori) /v1/verify/eori EU/UK EORI (customs / trade)
verify_gln(gln) /v1/verify/gln GS1 GLN (mod-10) + region
verify_phone(phone) /v1/verify/phone phone number (ITU-T E.164)
verify_imei(imei) /v1/verify/imei IMEI (GSMA Luhn) + TAC decode
verify_issn(issn) /v1/verify/issn ISSN (ISO 3297, mod-11)
verify_media_type(media_type) /v1/verify/media-type IANA media type / MIME (RFC 6838)
verify(kind, value, country=…) dispatcher any of the 23 validators by kind

All methods return parsed JSON (dict). Errors raise ComplianceError with a clear message (402 → how to get a key, 429 → demo quota reached).

Get a free key (2 minutes)

The screen, screen_wallet, kyb, screening_report, wallet_report and batch_screen methods work with no key (rate-limited demo). To unlock full coverage and all 23 validators, grab a gck_ key:

  1. Go to https://api.gocreativeai.com/start — the guided key wizard.
  2. Buy credits with a card (instant) at https://api.gocreativeai.com/credits/buy, or pay per call in USDC via x402 with no key at all.
  3. Client(api_key="gck_...") — done.

Why this vs the incumbents

Same OpenSanctions data the serious vendors use, but keyless and pay-per-call — a fraction of the cost of Dataspike, ComplyAdvantage, or enterprise contracts, and it adds crypto-wallet OFAC screening most don't. See the comparisons: vs Dataspike · vs sanctions.io · vs ComplyAdvantage.

Disclaimer

Screening results draw on public watchlist + sanctions data and are provided for compliance-screening support. Verify matches before acting; absence of a match is not a guarantee of clearance. Not legal advice.

License

MIT © GoCreative · Product page · Docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ofac_sanctions_screening-0.6.0.tar.gz (18.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ofac_sanctions_screening-0.6.0-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

File details

Details for the file ofac_sanctions_screening-0.6.0.tar.gz.

File metadata

File hashes

Hashes for ofac_sanctions_screening-0.6.0.tar.gz
Algorithm Hash digest
SHA256 ef3f8299cac696deb31d1533a311d8a810a70ad7a07b9d41639fe88ed949d197
MD5 a6138160272005facd03279013d00577
BLAKE2b-256 2ef3eb442cfc1795b4589b1adc187ff6537ec60266d7f5f0a539988b67348d5f

See more details on using hashes here.

File details

Details for the file ofac_sanctions_screening-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for ofac_sanctions_screening-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f04121b2b7e3aba6bd1ad9f19ab70fa240ea2124db21485a7502b7ae87c14a0a
MD5 955710f2e1f50d3281f8a27ed6d41650
BLAKE2b-256 072cdbc373e45fbc0b0ad9fab6868aea4ee839a17a5ab5ed5ed36437162bf396

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page