Skip to main content

Compliance and monitoring services for Sardis - KYC, Sanctions, PEP, Risk Scoring, and Reporting

Project description

sardis-compliance

PyPI version Python 3.11+ License: MIT

Compliance and monitoring services for Sardis - KYC, Sanctions, PEP, Risk Scoring, and Reporting.

Overview

sardis-compliance provides comprehensive compliance infrastructure aligned with the U.S. GENIUS Act:

  • KYC Verification: Identity verification with Persona integration
  • Sanctions Screening: OFAC/SDN screening via Elliptic
  • PEP Screening: Politically Exposed Persons checks
  • Risk Scoring: Real-time transaction risk assessment
  • Adverse Media: News and media monitoring
  • Compliance Reporting: Automated report generation
  • Audit Trail: Immutable compliance audit logs

Installation

pip install sardis-compliance

Optional Dependencies

# PostgreSQL support
pip install sardis-compliance[postgres]

# S3 archive storage
pip install sardis-compliance[s3]

# Google Cloud Storage
pip install sardis-compliance[gcs]

# PDF report generation
pip install sardis-compliance[pdf]

# All optional dependencies
pip install sardis-compliance[all]

Quick Start

from sardis_compliance import (
    ComplianceEngine,
    create_kyc_service,
    create_sanctions_service,
    create_risk_scorer,
)

# Initialize services
kyc = create_kyc_service(provider="persona")
sanctions = create_sanctions_service(provider="elliptic")
risk_scorer = create_risk_scorer()

# Run compliance checks
engine = ComplianceEngine(
    kyc_service=kyc,
    sanctions_service=sanctions,
    risk_scorer=risk_scorer,
)

result = await engine.check_transaction(
    wallet_address="0x...",
    amount=10000_00,  # $10,000
    counterparty="0x...",
)

if result.approved:
    print("Transaction approved")
else:
    print(f"Blocked: {result.reason}")

Features

KYC Verification

from sardis_compliance import create_kyc_service, VerificationRequest

kyc = create_kyc_service(provider="persona")

# Create verification session
session = await kyc.create_session(
    request=VerificationRequest(
        user_id="user_123",
        email="user@example.com",
        verification_level="enhanced",
    )
)

# Check verification status
result = await kyc.check_status(session.inquiry_id)
print(f"Status: {result.status}")
print(f"Verified: {result.verified}")

Sanctions Screening

from sardis_compliance import create_sanctions_service

sanctions = create_sanctions_service(provider="elliptic")

# Screen a wallet address
result = await sanctions.screen_wallet(
    address="0x...",
    chain="ethereum",
)

if result.risk == "HIGH":
    print(f"High risk! Matched lists: {result.matched_lists}")

PEP Screening

from sardis_compliance import create_pep_service, PEPScreeningRequest

pep = create_pep_service(provider="complyadvantage")

result = await pep.screen(
    request=PEPScreeningRequest(
        full_name="John Smith",
        date_of_birth="1970-01-15",
        nationality="US",
    )
)

for match in result.matches:
    print(f"Match: {match.name} - {match.category}")

Risk Scoring

from sardis_compliance import create_risk_scorer

scorer = create_risk_scorer()

assessment = await scorer.assess_transaction(
    wallet_id="wal_123",
    amount=50000_00,
    counterparty="0x...",
    transaction_type="outbound",
)

print(f"Risk Level: {assessment.level}")
print(f"Risk Score: {assessment.score}")
print(f"Factors: {assessment.factors}")
print(f"Action: {assessment.recommended_action}")

Compliance Reporting

from sardis_compliance import create_report_service, ReportType

reports = create_report_service()

# Generate a compliance report
report = await reports.generate(
    report_type=ReportType.MONTHLY_SUMMARY,
    start_date=start,
    end_date=end,
    format="pdf",
)

await reports.save(report, path="/reports/monthly.pdf")

Audit Trail

from sardis_compliance import get_audit_store

audit = get_audit_store()

# Log a compliance decision
await audit.log(
    action="TRANSACTION_APPROVED",
    wallet_id="wal_123",
    decision="approved",
    risk_score=25,
    checks_performed=["kyc", "sanctions", "pep"],
)

# Query audit history
entries = await audit.query(
    wallet_id="wal_123",
    start_date=start,
    end_date=end,
)

Configuration

# KYC Provider (Persona)
SARDIS_PERSONA_API_KEY=your-api-key
SARDIS_PERSONA_TEMPLATE_ID=tmpl_xxx

# Sanctions Provider (Elliptic)
SARDIS_ELLIPTIC_API_KEY=your-api-key
SARDIS_ELLIPTIC_API_SECRET=your-secret

# PEP Provider (ComplyAdvantage)
SARDIS_COMPLYADVANTAGE_API_KEY=your-api-key

# Risk Scoring
SARDIS_RISK_HIGH_THRESHOLD=75
SARDIS_RISK_MEDIUM_THRESHOLD=50

Architecture

sardis-compliance/
├── checks.py         # Compliance engine
├── kyc.py            # KYC verification
├── sanctions.py      # Sanctions screening
├── pep.py            # PEP screening
├── risk_scoring.py   # Risk assessment
├── adverse_media.py  # Media monitoring
├── reports.py        # Report generation
├── dashboard.py      # Compliance dashboard
├── batch.py          # Batch processing
├── audit_rotation.py # Audit log management
└── retry.py          # Resilience utilities

Requirements

  • Python 3.11+
  • sardis-core >= 0.1.0
  • httpx >= 0.25.0

Documentation

Full documentation is available at docs.sardis.sh/compliance.

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

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

sardis_compliance-0.3.2.tar.gz (77.8 kB view details)

Uploaded Source

Built Distribution

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

sardis_compliance-0.3.2-py3-none-any.whl (82.8 kB view details)

Uploaded Python 3

File details

Details for the file sardis_compliance-0.3.2.tar.gz.

File metadata

  • Download URL: sardis_compliance-0.3.2.tar.gz
  • Upload date:
  • Size: 77.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.7

File hashes

Hashes for sardis_compliance-0.3.2.tar.gz
Algorithm Hash digest
SHA256 de384ca9bb59be6d31a6bd2bdf4056149160b6885fea75c43602648e28943a08
MD5 fbe2b814f0edd5479c388f8f05e96d7a
BLAKE2b-256 bf28423816a14b66dc296ffbe92fa4242eddd089ee3424e028dd303f9dc9fd97

See more details on using hashes here.

File details

Details for the file sardis_compliance-0.3.2-py3-none-any.whl.

File metadata

File hashes

Hashes for sardis_compliance-0.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 868073cec2e1fbdd02164785fe8b4c95d2306287837e0339cb8ccd523299f78f
MD5 6f688bf41ed1b1c4342460b31873f83d
BLAKE2b-256 2b4a031a5d9f06f5618f81955b242d4b983a2265c6a0d32214efd7f459ab9ccb

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