1. Go to this page and download the library: Download saudizatca/laravel-zatca library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
use SaudiZATCA\Facades\Zatca;
use SaudiZATCA\Data\InvoiceData;
use SaudiZATCA\Data\InvoiceLineData;
use SaudiZATCA\Data\SellerData;
use SaudiZATCA\Data\BuyerData;
// Create seller
$seller = SellerData::fromConfig(config('zatca.seller'));
// Create buyer (for B2B/standard invoices)
$buyer = new BuyerData(
name: 'Buyer Company',
vatNumber: '300000000000004',
city: 'Jeddah'
);
// Create invoice
$invoice = new InvoiceData(
invoiceNumber: 'INV-001',
issueDate: new DateTime(),
lines: [
new InvoiceLineData('Product A', 2, 50.0, 15.0),
new InvoiceLineData('Product B', 1, 100.0, 15.0),
],
type: InvoiceData::TYPE_STANDARD // or TYPE_SIMPLIFIED
);
// Process (generate XML, sign, QR, submit)
$result = Zatca::processInvoice($invoice, $seller, $buyer);
// $result['uuid']
// $result['invoice_hash']
// $result['signed_xml']
// $result['qr_code']
// $result['submission']
use SaudiZATCA\Facades\Zatca;
use SaudiZATCA\Data\SellerData;
$seller = new SellerData('Your Company', '300000000000003');
$qrCode = Zatca::generatePhase1QR($seller, 115.0, 15.0);
// Returns Base64-encoded TLV QR data
use SaudiZATCA\Facades\Zatca;
// Generate XML only
$xml = Zatca::xml()->generate($invoice, $seller, $buyer);
// Sign existing XML
$signedResult = Zatca::invoice()->signInvoice($xml, $invoice);
// Generate QR for signed invoice
$qrCode = Zatca::invoice()->generateQRCode($seller, $invoice, $signedResult['invoice_hash'], $signedResult);
// Submit to ZATCA
$submission = Zatca::invoice()->submitToZatca($signedResult['signed_xml'], $signedResult['invoice_hash'], $invoice);
use SaudiZATCA\Models\ZatcaCertificate;
// Get active production certificate
$cert = ZatcaCertificate::active()
->environment('production')
->first();
// Check validity
if ($cert && $cert->isValid()) {
// Use certificate
}
use SaudiZATCA\Models\ZatcaInvoice;
// Get pending invoices
$pending = ZatcaInvoice::pending()->get();
// Get today's invoices
$today = ZatcaInvoice::today()->get();
// Get by status
$submitted = ZatcaInvoice::status('submitted')->get();
use SaudiZATCA\Models\ZatcaLog;
// Get recent errors
$errors = ZatcaLog::errors()->recent(24)->get();
// Get API logs
$apiLogs = ZatcaLog::category('api')->recent()->get();