3neti / money-issuer
Electronic Money Issuer
v1.2.1
2026-08-07 11:33 UTC
Requires
- 3neti/emi-core: ^1.0 || ^2.0
- brick/money: ^0.10.1
- lorisleiva/laravel-actions: ^2.9
- spatie/laravel-data: ^4.15
Requires (Dev)
- orchestra/testbench: ^10.3 || ^11.0
- pestphp/pest: ^3.8 || ^4.0
README
Lightweight package providing Philippine bank and EMI directory.
Purpose
Provides bank/EMI data without payment operation dependencies.
Use this when you need to:
- List available banks and EMIs
- Check settlement rail support
- Build bank directory applications
- Query EMI restrictions
Usage
use LBHurtado\MoneyIssuer\Support\BankRegistry; $registry = new BankRegistry(); // Get all banks $banks = $registry->all(); // array of 146 banks // Find specific bank $gcash = $registry->find('GXCHPHM2XXX'); // ['full_name' => 'G-Xchange / GCash', ...] // Get EMIs only $emis = $registry->getEMIs(); // Collection // Check rail support (respects EMI restrictions) $rails = $registry->getAllowedRails('GXCHPHM2XXX'); // ['INSTAPAY'] - GCash only supports INSTAPAY // Check if bank is EMI $isEmi = $registry->isEMI('GXCHPHM2XXX'); // true $isEmi = $registry->isEMI('BOPIPHMM'); // false (BPI) // Get human-readable name $name = $registry->getBankName('GXCHPHM2XXX'); // 'GCash'
Installation
composer require 3neti/money-issuer php artisan vendor:publish --tag=banks-registry
Configuration
Bank Restrictions
EMI restrictions are defined in config/bank-restrictions.php:
return [ 'emi_restrictions' => [ 'GXCHPHM2XXX' => [ 'allowed_rails' => ['INSTAPAY'], 'name' => 'GCash', 'reason' => 'EMI - Real-time transfers only' ], // ... more EMIs ], ];
Publish config:
php artisan vendor:publish --tag=config --provider="LBHurtado\MoneyIssuer\MoneyIssuerServiceProvider"
Architecture
Separation of Concerns:
money-issuer= Bank/EMI directory (data + registry)payment-gateway= Payment operations (depends on money-issuer)
Benefits:
- Lightweight: Use in apps that need bank data without payment logic
- Reusable: Build bank directories, EMI comparison tools, routing services
- Dependency direction: Lower-level package holds foundational data
Updating Bank Data
See docs/BANKS_JSON_UPDATE.md for update procedures.
Package Dependencies
This package depends on:
3neti/emi-corefor the shared bank-registry contract- Laravel support components
It supports emi-core 1.x and 2.x. The bank directory does not call payment providers or move funds.
Packages that depend on this include:
3neti/emi-netbank
Testing
composer install
composer test
The supported compatibility matrix is PHP 8.3 and 8.4 on Laravel 12 and 13.
License
Proprietary. Deployment requires authorized access to the private package repository.