A Laravel SDK for interacting with the Dokan Compliance API. an easy way to integreate with zatca-phase-2.
You can install the package via composer:
composer require dokan-e-commerce/compliance-laravel-sdk
- Publish the config file (Optional):
php artisan vendor:publish --provider="Dokan\Compliance\ComplianceServiceProvider" --tag="compliance-config"
- Add these variables to your
.env
file:
DOKAN_COMPLIANCE_API_KEY=your-api-key
- Get your API token:
- Visit Dokan Compliance Portal
- Sign in to your account / register
- Create business entity if you dont have, and onboard your business
- Navigate to the API Tokens section
- Create a new API token
- Copy the generated token and use it as your
DOKAN_COMPLIANCE_API_KEY
$client = app(\Dokan\Compliance\ComplianceClient::class);
$businessDetails = $client->getBusinessDetails();
use Dokan\Compliance\DTOs\CreateInvoiceRequest;
use Dokan\Compliance\DTOs\Client;
use Dokan\Compliance\DTOs\LineItem;
$invoiceRequest = new CreateInvoiceRequest(
business_config_id: '9dekebab-4bab-4e0a-af2c-f3shawarma',
invoice_identifier: 'INV-1234',
type: 'simplified',
type_code: 388,
currency: 'SAR',
payment_status: 'Paid',
nature: 'Sale',
invoice_date: '2025-04-24 12:00:00',
client: new Client(
email: 'ahmed@dev.dokan.sa',
type: 'individual',
name: 'Ahmed A',
phone: "+96655555555" // optional
),
lineItems: [
new LineItem(
label: 'Chicken Shawarma',
price: 6,
quantity: 2,
is_vat_inclusive: true
),
new LineItem(
label: 'Meat Shawarma',
price: 8,
quantity: 2,
is_vat_inclusive: true
)
]
// Optional parameters:
// instant_report: bool|null
// custom_attributes: array|null
);
// Direct creation
$response = $client->createInvoice($invoiceRequest->toArray());
// Queue creation (with automatic retries)
$client->createInvoice($invoiceRequest->toArray(), queue: true);
$invoiceDetails = $client->getInvoiceDetails(123);
If you plan to use queued invoice creation:
- Configure queue in
.env
:
QUEUE_CONNECTION=redis # or database, sqs, etc.
- Run queue worker:
php artisan queue:work
The queue system includes:
- 3 retry attempts
- 5-second delay between retries
- Automatic handling of API errors
- Retries only on connection issues or server errors
- PHP: ^8.0|^8.1|^8.2|^8.3
- Laravel: ^9.0|^10.0
MIT License