Faturalar ve e-faturalama
Spec: EN 16931-1:2026, BT-24 EN 16931-1:2026 BT-24 Spec: Factur-X 1.08 Factur-X 1.08 Spec: ISO 32000-2:2020, §14.13 ISO 32000-2:2020 §14.13 Evidence: Mixed evidence
Genel bakış
“Genel bakış” başlıklı bölümModern bir fatura, tek bir dosyada iki belge demektir: kişinin okuduğu bir sayfa ve vergi sisteminin ayrıştırdığı, makinece okunabilir bir XML yükü. Bu sayfa, hibrit fatura senaryosunu yükümlülükten çıktıya kadar izler: ZUGFeRD ve Factur-X’in neyi gerektirdiğini, NextPDF’in yapılandırılmış yükü nasıl ekleyip denetlediğini ve uyumluluk sorumluluğunun motordan size geçtiği noktayı.
Bu neden önemli
“Bu neden önemli” başlıklı bölümBirçok yetki alanı artık işletmeler arası veya işletmeden kamuya faturalandırma için yapılandırılmış faturaları zorunlu kılmaktadır. Tuzak şudur: bir hibrit fatura ekranda kusursuz görünüp yine de reddedilebilir. Ret, piksellere değil gömülü XML’e dayanır. Yapılandırılmış yükte belirtim tanımlayıcısı eksikse, yanlış profili bildiriyorsa ya da yanlış ilişkiyle eklenmişse, alıcı platform faturayı reddeder. Sizin tarafınızdan bakıldığında hata genellikle sessizdir ve günler sonra, arkasında bekleyen bir ödemeyle birlikte ortaya çıkar.
Bunu dosyayı üreten katmanda bir kez doğru yapmak, her seferinde geçen bir faturayla tek tek keşfetmekten çok daha ucuzdur.
Kısa özet
“Kısa özet” başlıklı bölüm- Uyumlu bir hibrit fatura, ilişkili dosya olarak gömülmüş, uyumlu bir XML yüküne sahip bir PDF/A taşıyıcısıdır. Taşıyıcının üst verileri profili bildirmelidir.
- Kabul kararını çoğu zaman belirleyen tek alan BT-24, belirtim tanımlayıcısıdır. EN 16931 iş kuralı BR-1 her faturanın bunu taşımasını gerektirir. Değer, tam profili adlandıran bir URN’dir — örneğin EN 16931 (COMFORT) profilinin
urn:cen.eu:en16931:2017değeri. - NextPDF’in işi, çağıranın sağladığı XML’in gömülmesi ve yapısal doğrulamasıdır. Fatura içeriğini yazmaz ve bir vergi dairesi doğrulayıcısı değildir.
- Yasal ve mali doğruluktan düzenleyen sorumlu olmaya devam eder. Temiz bir doğrulama sonucu, bu kararın girdilerinden biridir; bir sertifika değildir.
NextPDF buna nasıl yaklaşır
“NextPDF buna nasıl yaklaşır” başlıklı bölümNextPDF, yapılandırılmış faturayı tekil bir özellik olarak değil, katmanlar arası bir sözleşme olarak ele alır. Çekirdek motor, arabirimleri tanımlar — bir gömücü, bir profil tanımlayıcı, bir doğrulayıcı — uygulamaları ise Premium katmanı sağlar. Bu ayrım bilinçlidir. Genel yüzey çekirdekte dondurulmuştur; böylece çağrı noktaları ve testler, arkasındaki katmandan bağımsız olarak profile ve sonuca aynı şekilde erişir.
Akışın dört aşaması vardır ve sıra önemlidir, çünkü her aşama bir öncekine bağlıdır.
- Author the invoice XML You (or your ERP) produce a UN/CEFACT CII or Peppol UBL payload. NextPDF never synthesizes invoice content.
- Produce the PDF/A carrier A PDF/A-3 or PDF/A-4f document is the human-readable face and the conformant container the standard requires.
- Embed the payload The embedder attaches the XML as an associated file with the correct AFRelationship, and injects the Factur-X XMP profile declaration.
- Validate, then ship A structural pass checks the root, the required sections, and BT-24 against the declared profile before the file leaves your system.
Gömücü sözleşmesi bayt girer, bayt çıkar biçimindedir: bir PDF/A taşıyıcısı ve bir XML yükü girer, hibrit PDF baytları çıkar. Hiçbir şey eklenmeden önce XML, bir DOCTYPE içeren içeriği reddeden, girdi boyutunu sınırlayan ve XML 1.0’da yasaklı denetim karakterlerini kabul etmeyen sağlamlaştırılmış bir koruma katmanından geçirilerek ayrıştırılır. Bu, XML Harici Varlık ve Billion-Laughs saldırılarını yapısal olarak ortadan kaldırır, çünkü fatura XML’i çoğu zaman güven sınırınızın dışından gelir.
Profil tanımlayıcısı, alt düzeydeki bir sistemin sorduğu dört soruyu yanıtlar: kanonik profil URN’i, ileri sürülecek BT-24 değeri, günlükler için kararlı bir ad ve eşitlik testlerinin sonuçları gruplayabilmesi için katmandan bağımsız bir ayırıcı. Tanımlayıcı, eksiklikler konusunda dürüsttür. ZUGFeRD MINIMUM profili hiçbir
BT-24 belirtim tanımlayıcısı taşımaz ve tanımlayıcı, bunun için bir değer uydurmak yerine null döndürür.
MINIMUM ve BASIC WL’nin
EN 16931-uyumlu olmamasının nedeni de budur. Motor, kardinalite gerçeğini gizlemek yerine
onu kodlar.
Kanıtlar ne diyor
“Kanıtlar ne diyor” başlıklı bölümYukarıdaki davranış üç kaynağa dayanır ve her biri farklı türde kanıt sunar.
Yükümlülüğü standart belirler.
Spec: EN 16931-1:2026, BR-1 EN 16931-1:2026 BR-1 belirtim
tanımlayıcısını her faturada zorunlu kılar. Factur-X
teknik eki, EN 16931
profilinin urn:cen.eu:en16931:2017 değeri dahil, profil başına URN değerlerini sabitler. Taşıyıcının kendisi
bir PDF meselesidir: Spec: ISO 32000-2:2020, §9 ISO 32000-2:2020 §9 , en öngörülebilir,
en güvenilir işlemenin tüm yazı tipleri
gömüldüğünde gerçekleştiğini belirtir — bu doğrudan ilgilidir; çünkü
on yıl sonra okunabilir olması gereken bir fatura, okuyucunun yazı tipi ortamına bağlı olamaz.
Sözleşmeyi kod tutar. Evidence: Code-backed Çekirdekteki EmbedderInterface, ProfileInterface ve ValidatorInterface gerçek, katmandan bağımsız arabirimlerdir. ProfileType::isEn16931Conformant(), MINIMUM / BASIC WL dışlamasını tür sisteminde kodlar. ValidationResult, değişmez bir DTO’dur ve isValid değeri “hiçbir hata bulgusu yok” ve “hiçbir önemli kural ihlali yok” koşullarının birleşimidir.
Söz konusu davranış ise Premium katmanı için yetenek düzeyinde belgelenmiştir: Evidence: Standard-backed gömücü, çağıranın sağladığı ZUGFeRD 2.4 / Factur-X 1.08 CII veya Peppol UBL XML’ini, doğru ilişkili dosya ilişkisiyle bir PDF/A-4f veya PDF/A-3b taşıyıcısına ekler. Doğrulayıcı, EN 16931 anlamsal modelini ve BT-24 tanımlayıcısını denetler. Schematron aşaması, XSLT’ye derlenmiş CEN kural kümelerini çalıştırır. Bunların hiçbiri fatura içeriğini üretmez veya düzeltmez.
Pratik örnek
“Pratik örnek” başlıklı bölümAşağıdaki yapı, ekleme noktasını göstermek içindir; kopyala-yapıştır yapılacak bir entegrasyon değildir. Taşıyıcı oluşturma ve gömücü Premium katmanından gelir, XML ise sizindir.
<?php
declare(strict_types=1);
use NextPDF\Contracts\EInvoice\ProfileType;use NextPDF\Contracts\EInvoice\ValidatorContext;use NextPDF\Contracts\EInvoice\ValidatorInterface;use NextPDF\Contracts\EInvoice\EmbedderInterface;use NextPDF\Contracts\EInvoice\EmbedderOptions;use Psr\Log\LoggerInterface;
/** * Validate first, embed second, never ship an invalid payload. * * @param non-empty-string $carrierPdf PDF/A-3 or PDF/A-4f carrier bytes * @param non-empty-string $ciiXml Caller-authored UN/CEFACT CII XML * * @return non-empty-string Hybrid invoice bytes, ready to deliver */function buildHybridInvoice( ValidatorInterface $validator, EmbedderInterface $embedder, LoggerInterface $logger, string $carrierPdf, string $ciiXml,): string { // STRICT mode: a missing BT-24 is a hard error, not a warning. $context = new ValidatorContext( profile: ProfileType::EN16931, strictMode: true, );
$result = $validator->validate($ciiXml, $context);
if (!$result->isValid) { foreach ($result->getErrors() as $finding) { $logger->error('invoice.structural_finding', [ 'message' => $finding->message, ]); }
// A failed structural check is your signal to stop, not to ship. throw new \RuntimeException('Invoice XML failed structural validation.'); }
$options = new EmbedderOptions(profile: ProfileType::EN16931);
return $embedder->embed($carrierPdf, $ciiXml, $options);}Asıl mesele sıralamadır. Doğrulama, reddedilen bir faturaya ve geciken bir ödemeye kıyasla ucuzdur; bu nedenle yük hiç eklenmeden önce çalışır.
Yaygın yanlış anlama
“Yaygın yanlış anlama” başlıklı bölümEn pahalı yanlış anlama şudur: “NextPDF faturalarımı uyumlu hâle getirir.” Getirmez. Bu sayfa bunu açıkça söyler. Motor, sizin yazdığınız XML’i gömer ve yapısal olarak denetler. Geçen bir yapısal sonuç, yükün EN 16931’in beklediği biçime sahip olduğu ve istediğiniz profili bildirdiği anlamına gelir. Bu, faturanın yasal olarak yeterli, vergi dairesince onaylanmış ya da herhangi bir takas platformunca kabul edileceğinin garanti edildiği anlamına gelmez. Ulusal uzantılar ve takas aktarımları, motor düzeyinde kapsam dışındadır. EN 16931-1 standardının kendisinin çerçevelediği gibi, çekirdek model uyumluluğu desteklemek için gereken bilgiyi taşır. İlgili mevzuata uymaktan düzenleyen sorumludur.
İkinci ve daha sessiz tuzak şudur: bir standardı desteklemek, ona uyum sağlamak değildir. Uyumluluk, nihai dosyanın ve bir doğrulayıcının özelliğidir; onu üreten kitaplığın özelliği değildir.
Sınırlar ve kapsam
“Sınırlar ve kapsam” başlıklı bölüm- NextPDF fatura içeriğini yazmaz veya düzeltmez. Çağıran geçerli XML sağlar ve fatura düzenleyeni olmaya devam eder. Boş bir bulgu listesi, uyumsuz bir yükü uyumlu hâle getirmez.
- Yapılandırılmış gömme ve Schematron doğrulaması Premium katmanı yetenekleridir. Çekirdek sözleşmeleri tanımlar; uygulamalar ticari paketi gerektirir. Aşağıdaki kapsam sınırına bakın.
- Doğrulayıcı yalnızca EN 16931 anlamsal modelini ve ZUGFeRD / Factur-X / UBL kapsayıcısını denetler. Bir vergi dairesi doğrulayıcısı değildir. SDI, Chorus Pro ve XRechnung aktarımı, aktarım düzeyinde kapsam dışındadır.
- MINIMUM ve BASIC WL profilleri EN 16931-uyumlu değildir ve hiçbir BT-24 belirtim tanımlayıcısı taşımaz — bu, bir motor sınırlaması değil, standardın kardinalitesini yansıtan tasarımsal bir karardır.
- Schematron motoru
ext-xslgerektirir. Kural kümeleri derleme zamanında derlenir. Çalışma zamanı, ağ ve dosya sistemi kaynak yüklemesi devre dışı bırakılmış olarak yalnızca önceden derlenmiş XSLT’yi yürütür. - Bu sayfa, davranışı yetenek düzeyinde anlatır. Belirli bir makam ya da platform tarafından kabul edildiğini ileri sürmez.
| Edition | Availability |
|---|---|
| Core | Çekirdek, katmanlar arası sözleşmeleri ( |
| Pro | Bir PDF/A taşıyıcısına Factur-X 1.08 CII gömme ve EN 16931 profil tanımlayıcıları kullanılabilir. |
| Enterprise | Peppol BIS 3.0 UBL gömme, XRechnung B2G CIUS, COMPAT/STRICT XML doğrulaması ve süreç içi Schematron kural motoru ekler. |
İlgili belgeler
“İlgili belgeler” başlıklı bölüm- Arşivleme ve PDF/A — fatura taşıyıcısının neden bir PDF/A dosyası olduğunu ve bunun uzun vadeli okunabilirlik için neyi garanti ettiğini açıklar.
- Entegrasyon karar kılavuzu — bir faturalama iş hattına hangi ekosistem paketinin uyduğunu gösterir (kuyruğa alınmış üretim, çerçeve köprüsü veya Connect).
- NextPDF’i üretimde çalıştırma — faturalar hacimli akmaya başladığında doğrulama bulgularının ve hatalarının nasıl gözlemleneceğini açıklar.
Sözlük
“Sözlük” başlıklı bölüm- Hibrit fatura — hem insan tarafından okunabilir bir sayfa hem de makinece okunabilir, gömülü bir XML fatura yükü içeren tek bir PDF dosyası.
- ZUGFeRD / Factur-X — aynı hibrit fatura yaklaşımının Almanca ve Fransızca adları: bir PDF/A taşıyıcısına gömülmüş bir UN/CEFACT Cross Industry Invoice (CII) XML yükü.
- EN 16931 — bir elektronik faturanın çekirdek öğelerinin anlamsal veri modelini tanımlayan Avrupa standardı.
- BT-24 (Belirtim tanımlayıcısı) — değeri, faturanın uyduğu tam profili adlandıran bir URN olan EN 16931 iş terimi. BR-1 iş kuralı tarafından gerekli kılınır.
- Profil — uyumluluk düzeyi olarak da adlandırılır (MINIMUM, BASIC WL, BASIC, EN 16931, EXTENDED, XRECHNUNG). Bir faturanın hangi iş terimlerini taşıması gerektiğini belirler.
- İlişkili dosya — görünür belgeyle nasıl ilişkili olduğunu açıklayan, bildirilmiş bir ilişkiyle (AFRelationship) bir PDF’nin içine eklenmiş dosya; fatura XML’ini taşıyan mekanizma.
- Schematron — EN 16931 iş kurallarını ifade etmek için kullanılan bir kural dili. NextPDF, XSLT’ye derlenmiş CEN kural kümelerini çalıştırır.