itmosoft / laravel-tax
A reusable Laravel tax package with tax classes, rates, location-based rules, and inclusive or exclusive tax calculations. Supports Laravel 12 and 13.
Requires
- php: ^8.3
- illuminate/contracts: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
Requires (Dev)
- orchestra/testbench: ^10.0 || ^11.0
- phpunit/phpunit: ^11.0 || ^12.0
Suggests
None
Provides
None
Conflicts
None
Replaces
None
README
Reusable tax engine for Laravel 12 and 13 / PHP 8.3+.
Features
- Tax classes and multiple tax rates
- Inclusive and exclusive calculations
- Compound and non-compound rates
- Location rules for country, region, and postal code
- Scheduled rates and rules
- Configurable table prefix and model classes
Install
composer require itmosoft/laravel-tax php artisan vendor:publish --tag=itmosoft-tax-config php artisan migrate
Create a class and rate
use ItmoSoft\Tax\Models\TaxClass; use ItmoSoft\Tax\Models\TaxRate; $class = TaxClass::create(['name' => 'Standard VAT', 'code' => 'standard']); $rate = TaxRate::create(['tax_class_id' => $class->id, 'name' => 'VAT', 'rate' => 15, 'is_active' => true]);
Calculate
$result = app(\ItmoSoft\Tax\Services\TaxCalculator::class)->calculate(100, [$rate], inclusive: false); // net: 100.00, tax: 15.00, gross: 115.00
Pass inclusive: true to extract tax from a gross amount. Rates are percentages. Compound rates apply to the running taxable base.
Resolve location rates
Create TaxRule records linking a tax class and rate. country, region, and postal_code are optional; null fields are wildcards. The resolver selects the most specific matching rule, then the highest priority. If no rule matches, rates with no rules attached are treated as defaults.
$rates = app(\ItmoSoft\Tax\Services\TaxResolver::class)->resolve($class, [ 'country' => 'PK', 'region' => 'Punjab', 'postal_code' => '60000', ]);
Boundaries
The package calculates supplied rates; it does not determine legal obligations, automatically manage exemptions, convert currencies, file returns, or provide jurisdiction-specific legal advice. Have jurisdiction rules reviewed by a qualified tax professional before production use.
Test
composer install vendor/bin/phpunit
MIT License.