PHP code example of normbill / xrechnung
1. Go to this page and download the library: Download normbill/xrechnung 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/ */
normbill / xrechnung example snippets
use Normbill\Xrechnung\NormbillClient;
$normbill = new NormbillClient(getenv('NORMBILL_API_KEY'));
$result = $normbill->generate([
'format' => 'xrechnung-3.0',
'invoice' => [
'number' => 'INV-2026-0001',
'issue_date' => '2026-06-15',
'due_date' => '2026-07-15',
'buyer_reference' => '04011000-1234512345-06', // Leitweg-ID
'seller' => [
'name' => 'Muster Lieferant GmbH',
'vat_id' => 'DE123456789',
'address' => ['country' => 'DE', 'city' => 'Berlin', 'postal_code' => '10115'],
'contact' => ['name' => 'Erika Muster', 'phone' => '+49 30 1234567', 'email' => '[email protected] '],
],
'buyer' => [
'name' => 'Beispiel Kunde AG',
'address' => ['country' => 'DE', 'city' => 'Hamburg', 'postal_code' => '20095'],
'contact' => ['email' => '[email protected] '],
],
'payment' => ['iban' => 'DE89370400440532013000'],
'lines' => [
['name' => 'Beratungsleistung', 'qty' => 10, 'unit_price' => 100, 'vat' => 19],
],
],
]);
$xml = $result['xml']; // KoSIT-validated XRechnung 3.0 (UBL 2.1)
$report = $result['validation']; // full validation report
use Normbill\Xrechnung\Exception\ValidationFailedException;
try {
$normbill->generate($request);
} catch (ValidationFailedException $e) {
foreach ($e->getIssues() as $issue) {
// $issue['rule'] => 'BR-DE-15'
// $issue['path'] => 'invoice.buyer_reference' ← a field in YOUR request
// $issue['message'] => 'The buyer reference (Leitweg-ID) is missing.'
// $issue['fix'] => 'Set invoice.buyer_reference, e.g. "04011000-1234512345-06".'
error_log(sprintf('%s @ %s: %s', $issue['rule'], $issue['path'], $issue['message']));
}
}
$normbill->generate($request, 'order-' . $orderId);
$quota = $normbill->getLastQuota();
// ['limit' => 50, 'remaining' => 9, 'warning' => '82% of monthly documents used']