PHPackages                             azaharizaman/nexus-aml-compliance - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. azaharizaman/nexus-aml-compliance

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

azaharizaman/nexus-aml-compliance
=================================

Anti-Money Laundering (AML) risk assessment and transaction monitoring with SAR generation - atomic, framework-agnostic package

v0.1.0-alpha1(2mo ago)02MITPHPPHP ^8.3

Since May 5Pushed 2mo agoCompare

[ Source](https://github.com/azaharizaman/nexus-aml-compliance)[ Packagist](https://packagist.org/packages/azaharizaman/nexus-aml-compliance)[ RSS](/packages/azaharizaman-nexus-aml-compliance/feed)WikiDiscussions main Synced 3w ago

READMEChangelogDependencies (3)Versions (2)Used By (0)

Nexus\\AmlCompliance
====================

[](#nexusamlcompliance)

**Version:** 1.0.0
**Status:** 🔵 In Development
**Category:** Compliance &amp; Governance

Overview
--------

[](#overview)

`Nexus\AmlCompliance` is a framework-agnostic, atomic PHP package for Anti-Money Laundering (AML) risk assessment and transaction monitoring. It provides sophisticated risk scoring algorithms (0-100 scale) for parties and transactions, with automated Suspicious Activity Report (SAR) generation.

Purpose
-------

[](#purpose)

Assess AML risk and detect suspicious financial activity:

- **AML Risk Scoring** (0-100 scale) for customers, vendors, transactions
- **Transaction Monitoring** for unusual patterns
- **SAR Generation** (Suspicious Activity Reports)
- **Jurisdiction Risk** assessment
- **Business Type Risk** classification

Key Features
------------

[](#key-features)

- ✅ **Risk Score Calculation** - 0-100 AML risk score with factor breakdown
- ✅ **Transaction Monitoring** - Detect unusual patterns (velocity, amounts, geography)
- ✅ **SAR Generation** - Automated suspicious activity reporting
- ✅ **Jurisdiction Risk** - Country-specific risk levels
- ✅ **Business Type Risk** - Industry-based risk classification
- ✅ **Risk Thresholds** - Configurable HIGH/MEDIUM/LOW thresholds
- ✅ **Framework-Agnostic** - Pure PHP 8.3+, works with any framework

Installation
------------

[](#installation)

```
composer require azaharizaman/nexus-aml-compliance
```

Quick Start
-----------

[](#quick-start)

### AML Risk Assessment

[](#aml-risk-assessment)

```
use Nexus\AmlCompliance\Services\AmlRiskAssessor;
use Nexus\AmlCompliance\Contracts\AmlRiskAssessorInterface;

// Inject via constructor
public function __construct(
    private readonly AmlRiskAssessorInterface $amlAssessor
) {}

// Assess party risk
$riskScore = $this->amlAssessor->assessParty(
    partyId: 'party-12345'
);

// Get overall score (0-100)
$score = $riskScore->getScore(); // e.g., 75

// Get risk level (HIGH/MEDIUM/LOW)
$level = $riskScore->getRiskLevel(); // RiskLevel::HIGH

// Get risk factors breakdown
$factors = $riskScore->getFactors();
// [
//     'jurisdiction_risk' => 30,
//     'business_type_risk' => 20,
//     'sanctions_match' => 25,
//     'transaction_patterns' => 0
// ]
```

### Transaction Monitoring

[](#transaction-monitoring)

```
use Nexus\AmlCompliance\Services\TransactionMonitor;
use Nexus\AmlCompliance\Contracts\TransactionMonitorInterface;

public function __construct(
    private readonly TransactionMonitorInterface $transactionMonitor
) {}

// Monitor transaction
$result = $this->transactionMonitor->monitorTransaction(
    transactionId: 'tx-67890',
    amount: Money::of(50000, 'USD'),
    fromPartyId: 'party-12345',
    toPartyId: 'party-67890',
    transactionDate: new \DateTimeImmutable()
);

if ($result->isSuspicious()) {
    $suspicionReasons = $result->getReasons();
    // ['velocity_anomaly', 'amount_threshold_exceeded', 'high_risk_jurisdiction']
}
```

### SAR Generation

[](#sar-generation)

```
use Nexus\AmlCompliance\Services\SarGenerator;
use Nexus\AmlCompliance\Contracts\SarGeneratorInterface;

public function __construct(
    private readonly SarGeneratorInterface $sarGenerator
) {}

// Generate SAR
$sar = $this->sarGenerator->generateSar(
    partyId: 'party-12345',
    reason: 'Unusual transaction patterns detected',
    suspiciousActivities: [
        'Multiple transactions just below $10,000 threshold',
        'Transactions with high-risk jurisdictions',
    ],
    amount: Money::of(45000, 'USD')
);

// SAR includes: SAR ID, party details, activity description, compliance officer assignment
```

Architecture
------------

[](#architecture)

### Atomic Package Compliance

[](#atomic-package-compliance)

This package adheres to **ARCHITECTURE.md atomicity principles**:

- **Domain-Specific**: ONE domain - AML risk assessment &amp; transaction monitoring
- **Stateless**: No in-memory state, all data externalized via repositories
- **Framework-Agnostic**: Pure PHP 8.3+, zero framework coupling
- **Logic-Focused**: Business rules only, no migrations/controllers
- **Contract-Driven**: All dependencies injected as interfaces
- **Independently Deployable**: Published to Packagist independently

### Package Structure

[](#package-structure)

```
packages/AmlCompliance/
├── composer.json
├── README.md
├── REQUIREMENTS.md
├── LICENSE
├── .gitignore
└── src/
    ├── Contracts/           # Interfaces
    │   ├── AmlRiskAssessorInterface.php
    │   ├── TransactionMonitorInterface.php
    │   ├── SarGeneratorInterface.php
    │   └── AmlRepositoryInterface.php
    ├── Services/            # Business logic
    │   ├── AmlRiskAssessor.php
    │   ├── TransactionMonitor.php
    │   └── SarGenerator.php
    ├── ValueObjects/        # Immutable domain objects
    │   ├── AmlRiskScore.php
    │   ├── RiskFactors.php
    │   ├── TransactionMonitoringResult.php
    │   └── SuspiciousActivityReport.php
    ├── Enums/               # Status enums
    │   ├── RiskLevel.php
    │   ├── JurisdictionRisk.php
    │   └── BusinessTypeRisk.php
    └── Exceptions/          # Domain exceptions
        ├── AmlException.php
        └── RiskAssessmentFailedException.php

```

Key Interfaces
--------------

[](#key-interfaces)

### AmlRiskAssessorInterface

[](#amlriskassessorinterface)

```
interface AmlRiskAssessorInterface
{
    /**
     * Assess AML risk for a party
     *
     * @return AmlRiskScore Risk score (0-100) with factor breakdown
     */
    public function assessParty(string $partyId): AmlRiskScore;

    /**
     * Reassess risk for all parties above threshold
     */
    public function reassessHighRiskParties(int $threshold = 70): array;
}
```

### TransactionMonitorInterface

[](#transactionmonitorinterface)

```
interface TransactionMonitorInterface
{
    /**
     * Monitor transaction for suspicious patterns
     */
    public function monitorTransaction(
        string $transactionId,
        Money $amount,
        string $fromPartyId,
        string $toPartyId,
        \DateTimeImmutable $transactionDate
    ): TransactionMonitoringResult;
}
```

### SarGeneratorInterface

[](#sargeneratorinterface)

```
interface SarGeneratorInterface
{
    /**
     * Generate Suspicious Activity Report
     */
    public function generateSar(
        string $partyId,
        string $reason,
        array $suspiciousActivities,
        Money $amount
    ): SuspiciousActivityReport;
}
```

Risk Scoring Formula
--------------------

[](#risk-scoring-formula)

### Overall AML Risk Score (0-100)

[](#overall-aml-risk-score-0-100)

```
AML Risk Score =
    (Jurisdiction Risk × 0.30) +
    (Business Type Risk × 0.20) +
    (Sanctions Match × 0.25) +
    (Transaction Patterns × 0.25)

```

### Risk Factors

[](#risk-factors)

FactorWeightDescription**Jurisdiction Risk**30%Country risk level (high-risk jurisdictions)**Business Type Risk**20%Industry risk (MSB, cryptocurrency, gambling)**Sanctions Match**25%Sanctions/PEP screening results**Transaction Patterns**25%Unusual transaction patterns (velocity, structuring)### Risk Level Thresholds

[](#risk-level-thresholds)

Score RangeRisk LevelAction Required0-39LOWStandard monitoring40-69MEDIUMEnhanced due diligence70-100HIGHSAR filing, account freezeDependencies
------------

[](#dependencies)

- **azaharizaman/nexus-party** - Party identity management
- **azaharizaman/nexus-sanctions** - Sanctions screening results for risk scoring
- **psr/log** - PSR-3 logging interface

Testing
-------

[](#testing)

Run unit tests:

```
composer test
```

Integration Example (Laravel)
-----------------------------

[](#integration-example-laravel)

```
// app/Providers/AmlServiceProvider.php
use Nexus\AmlCompliance\Contracts\AmlRiskAssessorInterface;
use App\Repositories\Aml\EloquentAmlRepository;

$this->app->singleton(AmlRiskAssessorInterface::class, function ($app) {
    return new AmlRiskAssessor(
        repository: new EloquentAmlRepository(),
        sanctionsScreener: $app->make(SanctionsScreenerInterface::class),
        logger: $app->make(LoggerInterface::class)
    );
});
```

Use Cases
---------

[](#use-cases)

### Financial Services

[](#financial-services)

- Customer risk assessment during onboarding
- Transaction monitoring for unusual patterns
- SAR filing automation
- Enhanced due diligence triggers

### Cryptocurrency Exchanges

[](#cryptocurrency-exchanges)

- High-risk jurisdiction detection
- Structuring detection (transactions just below reporting thresholds)
- Velocity anomaly detection

### Money Service Businesses (MSBs)

[](#money-service-businesses-msbs)

- Continuous risk monitoring
- Automated SAR generation
- Compliance officer alerts

Related Packages
----------------

[](#related-packages)

- **azaharizaman/nexus-sanctions** - Regulatory screening (used for risk scoring)
- **azaharizaman/nexus-kyc-verification** - Identity verification
- **azaharizaman/nexus-party-compliance** - Comprehensive party compliance orchestration

License
-------

[](#license)

MIT License. See LICENSE file for details.

Support
-------

[](#support)

- **Documentation**: [REQUIREMENTS.md](REQUIREMENTS.md)
- **Issues**: GitHub Issues
- **Email**:

---

**Last Updated**: December 16, 2025
**Maintained By**: Nexus Compliance Team

###  Health Score

33

—

LowBetter than 72% of packages

Maintenance84

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity35

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

81d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/117408?v=4)[Azahari Zaman](/maintainers/azaharizaman)[@azaharizaman](https://github.com/azaharizaman)

---

Top Contributors

[![azaharizaman](https://avatars.githubusercontent.com/u/117408?v=4)](https://github.com/azaharizaman "azaharizaman (6 commits)")

---

Tags

amlcompliancekycrisk-assessmentanti-money-launderingtransaction-monitoringSARfinancial-crimeFATF

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/azaharizaman-nexus-aml-compliance/health.svg)

```
[![Health](https://phpackages.com/badges/azaharizaman-nexus-aml-compliance/health.svg)](https://phpackages.com/packages/azaharizaman-nexus-aml-compliance)
```

###  Alternatives

[symfony/lock

Creates and manages locks, a mechanism to provide exclusive access to a shared resource

515139.2M711](/packages/symfony-lock)[matomo/matomo

Matomo is the leading Free/Libre open analytics platform

21.7k38.9k](/packages/matomo-matomo)[ecotone/ecotone

Enterprise architecture layer for Laravel and Symfony — CQRS, Event Sourcing, Durable Workflows (Sagas, Orchestrators), Projections, and Outbox messaging via PHP attributes.

564576.7k54](/packages/ecotone-ecotone)[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k46](/packages/civicrm-civicrm-core)[illuminate/broadcasting

The Illuminate Broadcasting package.

7127.2M221](/packages/illuminate-broadcasting)[dagger/dagger

Dagger PHP SDK

261.1k](/packages/dagger-dagger)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
