PHPackages                             azaharizaman/nexus-treasury - 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-treasury

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

azaharizaman/nexus-treasury
===========================

Atomic package for treasury management - liquidity pools, cash concentration, working capital optimization, and treasury analytics

v0.1.0-alpha1(1mo ago)00MITPHPPHP ^8.3

Since May 5Pushed 1mo agoCompare

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

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

Treasury Package
================

[](#treasury-package)

Treasury management package for cash flow forecasting, investment management, and approval workflows.

Purpose
-------

[](#purpose)

The Treasury package provides a comprehensive domain model and service layer for managing treasury operations within the Nexus platform. It handles policy management, authorization limits, and approval workflows for financial transactions.

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

[](#key-features)

- **Treasury Policy Management**: Create and manage treasury policies with configurable thresholds
- **Authorization Limits**: Define spending limits per user or role with currency support
- **Approval Workflows**: Submit, approve, or reject transactions requiring authorization
- **Multi-Currency Support**: All monetary values support multiple currencies
- **Status Tracking**: Comprehensive status management for policies and approvals

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

[](#installation)

```
composer require azaharizaman/nexus-treasury
```

### Requirements

[](#requirements)

- PHP ^8.3
- azaharizaman/nexus-common ^1.0

Usage
-----

[](#usage)

### Creating a Treasury Policy

[](#creating-a-treasury-policy)

```
use Nexus\Treasury\Services\TreasuryManager;
use Nexus\Treasury\ValueObjects\TreasuryPolicyData;

// Create policy data
$policyData = TreasuryPolicyData::fromArray([
    'name' => 'Corporate Treasury Policy',
    'description' => 'Main treasury policy for corporate operations',
    'minimum_cash_balance' => 100000.00,
    'minimum_cash_balance_currency' => 'USD',
    'maximum_single_transaction' => 500000.00,
    'maximum_single_transaction_currency' => 'USD',
    'approval_required' => true,
    'approval_threshold' => 50000.00,
    'approval_threshold_currency' => 'USD',
]);

// Create policy via TreasuryManager
$policy = $treasuryManager->createPolicy($tenantId, $policyData);
echo $policy->getId(); // TRS-POL-XXXXX
```

### Managing Authorization Limits

[](#managing-authorization-limits)

```
use Nexus\Treasury\ValueObjects\AuthorizationLimit;

// Create an authorization limit for a user
$limit = new AuthorizationLimit(
    userId: 'user-123',
    roleId: null,
    amount: 25000.00,
    currency: 'USD',
    transactionType: 'payment'
);

$authLimit = $treasuryManager->createAuthorizationLimit($tenantId, $limit);

// Check if transaction requires approval
$requiresApproval = $treasuryManager->requiresApproval(
    $tenantId,
    30000.00,
    'USD'
);
```

### Approval Workflow

[](#approval-workflow)

```
// Submit a transaction for approval
$approval = $treasuryManager->submitForApproval(
    $tenantId,
    'payment',
    75000.00,
    'USD',
    'Vendor payment for services',
    'user-123'
);

// Get pending approvals for a user
$pendingApprovals = $treasuryManager->getPendingApprovals('approver-456');

// Approve the transaction
$approved = $treasuryManager->approveTransaction(
    $approval->getId(),
    'approver-456',
    'Approved - within budget'
);

// Or reject the transaction
$rejected = $treasuryManager->rejectTransaction(
    $approval->getId(),
    'approver-456',
    'Insufficient budget allocation'
);
```

Interfaces
----------

[](#interfaces)

### Core Interfaces

[](#core-interfaces)

InterfaceDescription[`TreasuryManagerInterface`](src/Contracts/TreasuryManagerInterface.php)Main orchestrator for treasury operations[`TreasuryPolicyInterface`](src/Contracts/TreasuryPolicyInterface.php)Treasury policy entity contract[`TreasuryApprovalInterface`](src/Contracts/TreasuryApprovalInterface.php)Treasury approval entity contract[`AuthorizationLimitInterface`](src/Contracts/AuthorizationLimitInterface.php)Authorization limit entity contract### Repository Interfaces

[](#repository-interfaces)

InterfaceDescription[`TreasuryPolicyRepositoryInterface`](src/Contracts/TreasuryPolicyRepositoryInterface.php)Combined repository for policy persistence[`TreasuryPolicyQueryRepositoryInterface`](src/Contracts/TreasuryPolicyQueryRepositoryInterface.php)Read operations for policies[`TreasuryPolicyPersistRepositoryInterface`](src/Contracts/TreasuryPolicyPersistRepositoryInterface.php)Write operations for policies[`TreasuryApprovalRepositoryInterface`](src/Contracts/TreasuryApprovalRepositoryInterface.php)Combined repository for approval persistence[`TreasuryApprovalQueryRepositoryInterface`](src/Contracts/TreasuryApprovalQueryRepositoryInterface.php)Read operations for approvals[`TreasuryApprovalPersistRepositoryInterface`](src/Contracts/TreasuryApprovalPersistRepositoryInterface.php)Write operations for approvals[`AuthorizationLimitRepositoryInterface`](src/Contracts/AuthorizationLimitRepositoryInterface.php)Combined repository for limit persistence[`AuthorizationLimitQueryRepositoryInterface`](src/Contracts/AuthorizationLimitQueryRepositoryInterface.php)Read operations for limits[`AuthorizationLimitPersistRepositoryInterface`](src/Contracts/AuthorizationLimitPersistRepositoryInterface.php)Write operations for limitsModels
------

[](#models)

ModelDescription[`TreasuryPolicy`](src/Models/TreasuryPolicy.php)Immutable treasury policy entity[`TreasuryApproval`](src/Models/TreasuryApproval.php)Immutable approval entity[`AuthorizationLimit`](src/Models/AuthorizationLimit.php)Immutable authorization limit entityValue Objects
-------------

[](#value-objects)

Value ObjectDescription[`TreasuryPolicyData`](src/ValueObjects/TreasuryPolicyData.php)Data transfer object for policy creation/update[`AuthorizationLimit`](src/ValueObjects/AuthorizationLimit.php)Data transfer object for limit creationEnums
-----

[](#enums)

EnumCasesDescription[`ApprovalStatus`](src/Enums/ApprovalStatus.php)PENDING, APPROVED, REJECTED, CANCELLED, EXPIRED, REQUIRES\_REVIEWStatus of approval requests[`TreasuryStatus`](src/Enums/TreasuryStatus.php)ACTIVE, INACTIVE, PENDING, SUSPENDED, CLOSEDStatus of treasury policies[`InvestmentType`](src/Enums/InvestmentType.php)MONEY\_MARKET, TERM\_DEPOSIT, TREASURY\_BILL, COMMERCIAL\_PAPER, FIXED\_DEPOSIT, OVERNIGHTTypes of short-term investments[`InvestmentStatus`](src/Enums/InvestmentStatus.php)PENDING, ACTIVE, MATURED, CANCELLEDStatus of investments[`ForecastScenario`](src/Enums/ForecastScenario.php)OPTIMISTIC, BASE, PESSIMISTICCash flow forecast scenariosExceptions
----------

[](#exceptions)

ExceptionDescription[`TreasuryException`](src/Exceptions/TreasuryException.php)Base exception for treasury operations[`TreasuryPolicyNotFoundException`](src/Exceptions/TreasuryPolicyNotFoundException.php)Thrown when policy is not found[`LiquidityPoolNotFoundException`](src/Exceptions/LiquidityPoolNotFoundException.php)Thrown when liquidity pool is not foundArchitecture
------------

[](#architecture)

This package follows the Atomic Architecture pattern:

- **Contracts**: Interface definitions for domain contracts
- **Models**: Immutable entity implementations
- **ValueObjects**: Data transfer objects for operations
- **Services**: Business logic and orchestration
- **Repositories**: In-memory implementations for testing
- **Enums**: Type-safe enumerations
- **Exceptions**: Domain-specific exceptions

Testing
-------

[](#testing)

```
# Run tests
./vendor/bin/phpunit

# Run with coverage
./vendor/bin/phpunit --coverage-html coverage
```

License
-------

[](#license)

MIT License

###  Health Score

34

—

LowBetter than 75% of packages

Maintenance93

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity34

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

36d 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 (8 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

PHPackages © 2026

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