lokiwich / laravel-iranian-banks
Iranian Shetab banks for Laravel — names, SVG icons, card BIN prefixes, and bank detection from card numbers.
v1.1.0
2026-07-19 00:35 UTC
Requires
- php: ^8.2
- illuminate/contracts: ^10.0|^11.0|^12.0|^13.0
- illuminate/database: ^10.0|^11.0|^12.0|^13.0
- illuminate/support: ^10.0|^11.0|^12.0|^13.0
- illuminate/view: ^10.0|^11.0|^12.0|^13.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0|^10.0|^11.0
- phpunit/phpunit: ^10.0|^11.0|^12.0
README
Iranian Shetab banks for Laravel — names (FA/EN), SVG icons, card BIN prefixes, Sheba bank codes, and bank detection from card numbers or IBAN.
Features
- Directory of Shetab banks with Persian & English names
- Multiple card BIN prefixes per bank stored as JSON
- Sheba (
iban_code) per bank + mod-97 IBAN helpers - Detect bank from a card number / BIN (
6+digits) or Sheba - Persian / Arabic digit normalization
- Optional Luhn validation helper
- Colored & monochrome SVG logos (vendored from snapp-store/iranian-banks-react-icons, MIT)
- Blade component for bank logos
php artisan iranian-banks:install
Requirements
- PHP 8.2+
- Laravel 10–13
Installation
composer require lokiwich/laravel-iranian-banks php artisan iranian-banks:install
Or publish pieces manually:
php artisan vendor:publish --tag=iranian-banks-config
php artisan vendor:publish --tag=iranian-banks-migrations
php artisan migrate
php artisan db:seed --class="Lokiwich\\IranianBanks\\Database\\Seeders\\IranianBanksSeeder"
Local path development
{
"repositories": [
{ "type": "path", "url": "packages/laravel-iranian-banks", "options": { "symlink": true } }
],
"require": {
"lokiwich/laravel-iranian-banks": "*"
}
}
Usage
use Lokiwich\IranianBanks\Facades\IranianBanks; use Lokiwich\IranianBanks\Models\Bank; use Lokiwich\IranianBanks\Support\CardNumber; use Lokiwich\IranianBanks\Support\Iban; $bank = IranianBanks::detect('6037697512345678'); // Longest matching card_prefixes wins (e.g. Blu 62198619 over Saman 621986). // or $bank = Bank::findByCardNumber('۶۰۳۷۶۹'); $iban = Iban::make('012', '1234567890123456789'); // valid IR… Sheba $bank = IranianBanks::detectFromIban($iban); // Bank Mellat Iban::passesMod97($iban); // true Iban::bankCode($iban); // '012' $bank?->name_fa; // بانک صادرات ایران $bank?->name_en; // Bank Saderat Iran $bank?->card_prefixes; // ['603769', '903769'] $bank?->iban_code; // '019' $bank?->displayName(); // locale-aware $bank?->iconSvg('color'); // SVG markup CardNumber::normalize('۶۰۳۷-۶۹'); // '603769' CardNumber::bin('6037697512345678'); // '603769' CardNumber::passesLuhn('6037697512345678'); // bool
Blade logo
<x-iranian-banks::bank-logo :bank="$bank" variant="color" :width="40" :height="40" />
Publishing to Packagist
- Push
packages/laravel-iranian-banksto its own GitHub repository (e.g.lokiwich/laravel-iranian-banks). - Create a release / tag (
v1.0.0). - Submit the package on packagist.org and enable GitHub Auto-Update.
Icon attribution
SVG bank logos are adapted from @snapp-store/iranian-banks-react-icons (MIT © Snapp Store).
License
MIT © Lokiwich