Skip to main content

OFAC, sanctions, PEP & KYB screening for Python — screen names, companies & crypto wallets against OFAC SDN, EU, UK, UN + 100+ watchlists; EU VAT (VIES) validation; EU consolidated (FSF) sanctions; OIG-LEIE exclusion + fuzzy SDN matching; GLEIF ownership & name→LEI; SEC EDGAR filings + XBRL company financials; FDA NDC directory + drug-recall enforcement; plus 24 KYB / reference validators (LEI, EIN, ABN, CNPJ, LATAM tax-IDs, BIC, ISIN, UK & EU 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.7.1.tar.gz (19.9 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.7.1-py3-none-any.whl (16.8 kB view details)

Uploaded Python 3

File details

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

File metadata

File hashes

Hashes for ofac_sanctions_screening-0.7.1.tar.gz
Algorithm Hash digest
SHA256 07cd251836fe411c6fa0edb6299093829bad6981de3628f338b0d59a6f81bff2
MD5 7fad4628ae05ae647a0e6f23e60112bd
BLAKE2b-256 b135fdeec7ed1c306a3b7fcd714c31ace1479be0e3e5e01201b6fd7ffc4b5cb5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for ofac_sanctions_screening-0.7.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c0c4901774c23bcb107e363bda3f408f34457a439dae20edad3edf733304f003
MD5 335b4c98d7cd0b44892769a2c9cab93a
BLAKE2b-256 c1187fd8e03e9493bb2ff5ab54f4a108f2687c594b8047558d276adc831fd427

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