dgtlinf / invoice
A modern, extensible and framework-agnostic Laravel package for generating professional invoices — with pricing, tax, discount, currency, and PDF engines.
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/dgtlinf/invoice
Requires
- php: ^8.2
- barryvdh/laravel-dompdf: ^3.1
- illuminate/support: ^10.0|^11.0|^12.0
- spatie/laravel-package-tools: ^1.92
Requires (Dev)
- orchestra/testbench: ^10.6
- pestphp/pest: ^4.1
- pestphp/pest-plugin-laravel: ^4.0
This package is auto-updated.
Last update: 2025-10-13 14:44:33 UTC
README
Modern, fully typed invoicing toolkit for Laravel applications with discount, tax, currency and PDF engines that work together out of the box.
Highlights
- Value-object based models and enums for rock-solid invoice data.
- Dedicated pricing, tax, discount and numbering engines with sensible defaults.
- Built-in DomPDF integration with publishable Blade templates.
- Currency formatter, units and helpers that keep calculations precise.
- Batteries-included facade:
Invoice::make()
,Invoice::calculate()
,Invoice::stream()
and more.
Requirements
- PHP 8.2+
- Laravel 10.x, 11.x or 12.x
barryvdh/laravel-dompdf
(installed automatically)
Install
composer require dgtlinf/invoice
Publish the configuration or default PDF view if you need to customise them:
php artisan vendor:publish --tag="invoice-config" php artisan vendor:publish --tag="invoice-views"
Quick usage
use Dgtlinf\Invoice\Facades\Invoice; use Dgtlinf\Invoice\Models\{LineItem, Party, PaymentDetails, Tax, Quantity, Money}; use Dgtlinf\Invoice\Support\{Currency, UnitType, InvoiceType}; Route::get('/invoice', function () { $currency = Currency::fromConfig(); $seller = new Party(name: 'DEMO COMPANY ACME LTD', address: 'Main Street 123456', taxId: '123456789'); $buyer = new Party(name: 'Acme, Inc.', address: '1234 Goto street', taxId: '11-2222222'); $items = [ new LineItem( description: 'Monthly retainer fee', quantity: Quantity::from(1), unitPrice: Money::from(15000, $currency), tax: new Tax('VAT', 0, Money::from(0, $currency)), unit: UnitType::MONTH ), // ...more items, discounts, etc. ]; $items = Invoice::applyItemDiscounts($items); $payment = new PaymentDetails( bankName: 'GREAT BANK OF WORLD, London, UK', accountNumber: '000-000000000-11', iban: 'UK000000000000000' ); $invoice = Invoice::make([ 'number' => 'INV0001', 'type' => InvoiceType::INVOICE, 'seller' => $seller, 'buyer' => $buyer, 'items' => $items, 'amountPaid' => Money::from(0, $currency), 'paymentDetails' => $payment, 'note' => 'The VAT calculation date is the date of supply.', 'dueAt' => now()->addDays(7), ]); return Invoice::stream(Invoice::calculate($invoice)); });
Documentation
Full documentation, usage examples, and advanced configuration guides are available at:
👉 https://dgtlinf.github.io/invoice
License
This package is open-sourced software licensed under the MIT License.
© 2025 Digital Infinity DOO. All rights reserved.