saudiza / zatca-fatoora
πΈπ¦ Fatoora - ZATCA Phase 2 E-Invoice Integration for Laravel | Complete Saudi Arabia Tax Authority Compliance
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/saudiza/zatca-fatoora
Requires
- php: ^8.0|^8.1|^8.2|^8.3
- ext-openssl: *
- ext-xmlreader: *
- guzzlehttp/guzzle: ^7.0
- illuminate/console: ^9.0|^10.0|^11.0
- illuminate/database: ^9.0|^10.0|^11.0
- illuminate/support: ^9.0|^10.0|^11.0
Requires (Dev)
- orchestra/testbench: ^8.0|^9.0
- phpunit/phpunit: ^10.0
README
Complete ZATCA Phase 2 e-invoicing integration for Laravel - Saudi Arabia Tax Authority compliance made simple.
Features
π Complete Phase 2 Support
- β Automated onboarding & certificate generation
- β Standard invoices (B2B) & Simplified invoices (B2C)
- β Credit notes & Debit notes
- β Digital signatures & QR codes
- β UBL 2.1 XML compliant
πΌ Laravel First
- Laravel 9.x, 10.x & 11.x support
- Beautiful Facade API (
Fatoora::invoice()) - Artisan commands for setup
- Multiple environments (sandbox, production)
π Security
- ECDSA secp256k1 signatures
- Certificate-based authentication
- Hash validation
- Cryptographic stamps
Installation
composer require saudiza/zatca-fatoora
Quick Setup
# 1. Install package php artisan zatca:install # 2. Configure .env ZATCA_ENVIRONMENT=sandbox ZATCA_VAT_NUMBER="300000000000003" # ... add other credentials # 3. Run onboarding php artisan zatca:onboarding --otp=YOUR_OTP
Usage
Generate Invoice
use Saudiza\Fatoora\Facades\Fatoora; // Create invoice $invoice = Fatoora::invoice(); $invoice->setInvoiceNumber('INV-001') ->setInvoiceUuid(\Illuminate\Support\Str::uuid()) ->setInvoiceIssueDate(now()->format('Y-m-d')) ->setInvoiceIssueTime(now()->format('H:i:s')) ->setInvoiceType('0100000', '388') // Standard invoice ->setInvoiceCurrencyCode('SAR') ->setInvoiceTaxCurrencyCode('SAR'); // Configure supplier $supplier = new \Saudiza\Fatoora\Invoice\Supplier(); $supplier->setVatName('Your Company') ->setVatNumber('300000000000003') ->setCityName('Riyadh') ->setPostalCode('12345') ->setBuildingNumber('1234') ->setStreet('King Fahd Road') ->setDistrict('Al Olaya'); $invoice->setInvoiceSupplier($supplier); // Add items, totals, etc... (see documentation) // Submit to ZATCA $result = $invoice->sendDocument(true); if ($result['success']) { echo "β Invoice submitted! QR: " . $result['qr_value']; }
Using Facade Alias
// You can use either: Fatoora::invoice() // New name Zatca::invoice() // Backward compatibility
Configuration
All settings are in config/zatca.php:
return [ 'environment' => env('ZATCA_ENVIRONMENT', 'sandbox'), 'organization' => [ 'vat_number' => env('ZATCA_VAT_NUMBER'), // ... more settings ], ];
Artisan Commands
# Install package php artisan zatca:install # Run onboarding php artisan zatca:onboarding --otp=YOUR_OTP # Check configuration php artisan tinker >>> Fatoora::config()->get('environment')
Invoice Types
| Type | Code | Description |
|---|---|---|
| Standard | 0100000 |
Tax Invoice (B2B) |
| Simplified | 0200000 |
Tax Invoice (B2C) |
| Credit Note | 381 |
Credit Note |
| Debit Note | 383 |
Debit Note |
Environments
| Environment | Description |
|---|---|
sandbox |
Testing environment |
simulation |
Simulation environment |
production |
Live ZATCA system |
Documentation
- π Installation Guide
- π‘ Usage Examples
- π¦ Package Summary
- π Quick Start
Requirements
- PHP 8.0+
- Laravel 9.x, 10.x, or 11.x
- OpenSSL extension
- XMLReader extension
Testing
php artisan test
Contributing
See CONTRIBUTING.md
License
MIT License - see LICENSE
Support
- π§ Email: inayatullahkks@gmail.com
- π Issues: GitHub Issues
- π Documentation: See docs folder
- πΌ LinkedIn: Inayat Ullah
Credits
Built with β€οΈ for the Saudi developer community by Inayat Ullah.
Made in Saudi Arabia πΈπ¦