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.io/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.2.0.tar.gz (72.0 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.2.0-py3-none-any.whl (73.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for sardis_compliance-0.2.0.tar.gz
Algorithm Hash digest
SHA256 82f894dceef8cec2d5a45e97c735988c0ebba33d7bdb570078b9630c50c477bc
MD5 f713cbda4e9141e21f4333e920d79f23
BLAKE2b-256 18823fc2ce378deba4d6635b4d0011ef1c58e62c2af6f88a9dd21384ca637c7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for sardis_compliance-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c415c7e0490be73505d33e0614d5d08605fed0865a5a783e844a60e41965bd4f
MD5 0cc809dd7cbe17bcd0041a7366c50067
BLAKE2b-256 6877ec0a6f1e59a9cd74f4a1cde70571d9b09a13a6f038e8d1252a240bc8f530

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