Ana içeriğe geç

ZUGFeRD SharePoint Listesinden E-Fatura: PDF4me ile Power Automate'te JSON'u EN 16931 XML ve PDF/A-3'e Dönüştürme

· 26 dakikalık okuma
SEO and Content Writer

PDF4me Create ZUGFeRD Invoice fatura verilerini hibrit bir PDF/A-3 e-faturaya dönüştüren bir Power Automate eylemidir. Bir SharePoint listesine yönlendirilen bu eylem, Compose eyleminin her satırdan oluşturduğu JSON verilerini alır, EN 16931 XML'ini kendisi yazar, okunabilir faturayı temel PDF'nize çizer, sonucu dosyalar ve alıcıya e-posta ile gönderir.

ZUGFeRD arattığınızda üç yerden birine ulaşırsınız: formatın ne olduğuna dair bir açıklama, zaten sahip olduğunuz bir dosyanın doğru olup olmadığını söyleyen bir doğrulayıcı veya faturalama yazılımı geliştiren geliştiriciler için PHP, Java veya C#'ta yazılmış bir kütüphane. Üçü de faturanın zaten bir yerde mevcut olduğunu varsayar. Hiçbirinin cevaplamadığı soru, bir finans ekibinin aslında sorduğu sorudur: fatura verileri bir listede, bir elektronik tabloda veya satılanları kaydeden herhangi bir sistemde bulunur ve diğer uçtan uyumlu bir e-fatura olarak çıkması gerekir. Bu akış, yedi adımda ve kod yazmadan, eksik olan orta noktayı tamamlar.

Akışa genel bakış
1. When an item is created
ZUGFeRD Requests adlı listede SharePoint tetikleyicisi. Her satır bir faturayı temsil ediyor.
2. Compose
Satıcı, alıcı, kalem, toplamlar ve ödeme bilgilerini içeren satırdan tek bir fatura JSON nesnesi oluşturur.
3. Get file content using path
Faturanın düzenlendiği sayfa olan BaseInvoice.pdf dosyasını okur.
4. Create ZUGFeRD Invoice
PDF4me PDF. Giriş formatı 2.0-JSON, XmlWithPdf, uygunluk EN16931, fatura oluşturuldu.
5. Create file
Hibrit PDF dosyasını ZUGFeRD Invoices kütüphanesine kaydeder.
6. Update item
Damga Status Generated ve OutputLink aynı satırda yer alıyor.
7. Send an email (V2)
Faturayı ilgili satırdaki alıcı adresine gönderir.
kısa versiyon

SharePoint listesine satıcı, alıcı, tek bir kalem ve tarihleri içeren bir satır eklenir. Dört saniye sonra, belge kitaplığında PDF/A-3 boyutunda bir fatura bulunur: alıcının yazılımının işlemesi için içine EN 16931 XML'i yerleştirilmiş, okunabilir bir sayfa. Bu XML'i asla siz yazmazsınız. Faturayı kısa bir JSON nesnesi olarak tanımlarsınız ve PDF4me şemayı oluşturur. Satır durumunu ve bağlantısını alır ve alıcı dosyayı e-posta ile alır.

Neden Odaklı Soru-Cevap​

Fatura verilerini neden SharePoint listesinde tutuyoruz? Çünkü çoğu küçük finans ekibi için veriler zaten bu formatta: fatura başına bir satır ve her satır bir kişi tarafından dolduruluyor. Sütunlar, standartta istenen alanlarla bire bir eşleşiyor; bu da eşleşmenin listeyi açan herkes tarafından görülebileceği ve yeni bir faturanın izlenen bir klasörde yeni bir dosya yerine yeni bir satır olarak kaydedileceği anlamına geliyor.

Faturayı XML yerine JSON olarak tanımlamanın nedeni nedir? Çünkü Cross Industry Invoice sözdizimi ayrıntılı ve katıdır: iç içe geçmiş ad alanları, kimsenin hatırlamadığı öğe adları, tam olarak doğru yerde olması gereken kodlar. JSON nesnesi aynı şeyi çok daha az satırda, temsil ettikleri iş terimleri gibi okunan anahtarlarla ifade eder. PDF4me bunu şemaya dönüştürür, bu nedenle yanlış yapılması kolay olan kısım, sizin bakımını yapmanız gerekmeyen kısımdır.

Faturayı neden temel bir PDF dosyasına yazdırıyoruz? Çünkü bir ZUGFeRD dosyasının iki yarısı vardır ve ikisinin de uyumlu olması gerekir. XML, alıcının yazılımı içindir, yazdırılan sayfa ise onu açan kişi içindir. Render Invoice on PDF faturayı XML'i oluşturan aynı verilerden temel sayfaya çizer, böylece iki dosya asla birbirinden uzaklaşmaz; oysa düzen ayrı olarak tutulduğunda bu durum yaşanır.

Neden sıradan bir PDF değil de PDF/A-3? Çünkü PDF/A-3, ek dosya taşımasına izin verilen arşivleme formatıdır ve içine yerleştirilmiş XML bu ek dosyadır. Ayrıca, faturanın yıllar sonra bile okunabilir olmasını sağlayan kısımdır: yazı tipleri ve renk profilleri dosya içinde taşınır; bu da çoğu şirketin on yıl boyunca saklaması gereken bir belge için önemlidir.


Neler Alacaksınız?​

Girdi: Fatura numarası, tarihler, para birimi, satıcı bloğu, alıcı bloğu ve bir kalem içeren bir satır. Çıktı: ZUGFeRD Invoices kütüphanesinde ZUGFeRD PDF/A-3 faturası, durumu ve bağlantısıyla güncellenmiş satır ve faturanın ekli olduğu alıcıya gönderilen bir e-posta.

ZUGFeRD İstekleri'ndeki SharePoint liste öğesi RE-2026-0007, Fatura Numarası RE-2026-0007, Fatura Tarihi 12.10.2026, Son Ödeme Tarihi 11.11.2026, Para Birimi EUR, Satıcı Adı Muster GmbH, Satıcı Adresi Hauptstrasse 1, Satıcı Posta Kodu 10115, Satıcı Şehri Berlin, Satıcı Ülkesi DE, Satıcı KDV Kimliği DE123456789, Alıcı Adı Test Kunde AG, Alıcı Adresi Bahnhofstrasse 5, Alıcı Posta Kodu 80331, Alıcı Şehri Münih, Alıcı Ülkesi DE, Ürün Açıklaması Danışmanlık, Miktar 10,00, Birim Fiyatı 100,50, KDV Oranı 19, bir E-posta sütunu ve Durum Oluşturuldu bilgilerini göstermektedir.

Fatura başına bir satır. Bu bölmedeki her sütun, akışın oluşturduğu JSON'da bir anahtar haline gelir.

SharePoint ZUGFeRD Faturaları kitaplığı, ZUGFeRD_RE-2026-0001.pdf'den ZUGFeRD_RE-2026-0004.pdf'ye ve en yeni ZUGFeRD_RE-2026-0007.pdf'ye kadar olan dosyaları listeliyor; bunların tümü Pdf4me Flow hesabı tarafından değiştirildi.

Her fatura numarası için bir dosya, akış hesabı tarafından yazılır.

Outlook'ta ekli ZUGFeRD_RE-2026-0007.pdf dosyası bulunan e-posta ve önizleme bölmesinde açık olan Almanca fatura şu şekilde görünmektedir: satıcı Berlin'deki Muster GmbH (KDV numarası DE123456789), müşteri Münih'teki Test Kunde AG, fatura RE-2026-0007, tarih 12.10.2026, belge türü 380, %19 KDV'li tek satırlık Danışmanlık, net 1.005,00 euro ve toplam 1.195,95 euro.

Alıcının gördüğü şekliyle, aynı dosyanın okunabilir yarısı.


İhtiyacınız Olanlar​

  • Power Automate. Power Automate'i açın. Standart bağlantı noktaları üzerinde otomatikleştirilmiş bir bulut akışı. SharePoint, Office 365 Outlook ve PDF4me için premium plana gerek yok.
  • PDF4me API anahtarı. API anahtarınızı alın. Bu akış, PDF4me PDF bağlantısı olmak üzere tek bir PDF4me bağlantısı kullanır.
  • İstekler için bir SharePoint listesi. Yakalanan liste ZUGFeRD Requests olarak adlandırılır ve InvoiceNumber, InvoiceDate, DueDate, Currency, Seller bloğu (ad, sokak, posta kodu, şehir, ülke, KDV ID), Buyer bloğu, ItemDescription, Quantity, UnitPrice, VATRate, bir Email sütunu, bir Status seçim sütunu ve akışın yazdığı bir OutputLink sütunu içerir.
  • Temel fatura PDF dosyası. Yakalanan akış BaseInvoice.pdf dosyasını ZUGFeRD Templates adlı bir kütüphanede saklar. Fatura bu sayfaya çizilir, bu nedenle antetli kağıdınız buraya ait olmalıdır.
  • Tamamlanmış faturalar için bir kütüphane. Yakalanan akış, ZUGFeRD Invoices yazılır.
  • KDV ID da dahil olmak üzere kendi satıcı bilgileriniz. Bunlar liste sütunlarına girilir, böylece aynı işlem birden fazla tüzel kişilik için fatura düzenleyebilir.
Çalışır durumda bir JSON nesnesinden başlayın
Compose oluşturmadan önce yapıyı görmek isterseniz, bu, profilin kabul ettiği her anahtarı içeren tam ZUGFeRD 2.0 EN16931 yapısıdır. Bunu Compose yapıştırın ve değerleri kendi token'larınızla değiştirin.
sample-invoice-zugferd-2.0-en16931.json dosyasını indirin

Akışa Genel Bakış​

  1. When an item is created (SharePoint) ZUGFeRD Requests adlı listeyi izler.
  2. Compose ilgili satırdan fatura JSON'unu oluşturur.
  3. Dosya içeriğini /ZUGFeRD Templates/BaseInvoice.pdf Get file content using path.
  4. Create ZUGFeRD Invoice (PDF4me PDF), JSON'u EN 16931 XML'e dönüştürür ve hibrit PDF döndürür.
  5. Create file (SharePoint) işlemi, dosyayı ZUGFeRD_<invoice number>.pdf olarak kaydeder.
  6. Update item (SharePoint), Status Generated olarak ayarlar ve OutputLink doldurur.
  7. Send an email (V2) (Office 365 Outlook), faturayı alıcıya gönderir.

Akışın genel görünümü​

Power Automate çalıştırma geçmişi, sırasıyla başarılı olan yedi işlemi göstermektedir: 0,2 saniyede öğe oluşturulduğunda, 0 saniyede dosya oluşturulduğunda, 0,2 saniyede yol kullanarak dosya içeriğini alıldığında, 1 saniyede ZUGFeRD faturası oluşturulduğunda, 2 saniyede dosya oluşturulduğunda, 0,4 saniyede öğe güncellendiğinde ve 0,4 saniyede e-posta gönderildiğinde (V2).

Baştan sona dört saniyeden biraz fazla sürüyor ve e-faturanın kendisi yaklaşık bir saniye sürüyor. En yavaş adım SharePoint'in dosyayı yazmasıdır.


Adım 1: Bir talep geldiğinde e-faturayı nasıl tetiklersiniz?​

Şu ana kadar olan süreç: henüz hiçbir şey olmadı, bu tetikleyici.

Bir satır eklemek, fatura talebinin yapılma şeklidir, dolayısıyla bu bir sinyaldir.

  1. Automated cloud flow oluşturun ve SharePoint > When an item is created seçeneğini belirleyin.
  2. Yapılandır:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests

When an item is created: yapılandırma​

SharePoint'te bir öğe oluşturulduğunda tetiklenecek olan tetikleyici, Site Adresi olarak ynoox1.sharepoint.com/sites/PDF4meSupport adresindeki PDF4me Support ve Liste Adı olarak ZUGFeRD Requests'i kullanır ve gelişmiş parametreler ayarlanmamıştır.

Yeni satırdaki her sütun, sonraki altı işlemin kullanabileceği bir belirteç haline gelir.


Adım 2: Liste sütunlarından fatura JSON'unu nasıl oluşturursunuz?​

Şu ana kadarki süreç: SharePoint tetikleyicisi.

Tek bir Compose işlemi, faturanın tamamını tanımlar. Bu aşamada sütun adlarınız, standartların beklediği adlarla eşleşir ve tek ekranda okunabilecek kadar kısadır.

  1. Data Operation > Compose.
  2. Aşağıdaki nesneyi Girişler alanına yapıştırın ve her değeri eşleşen belirteçle değiştirin.
{
"InvoiceId": "@{triggerBody()?['InvoiceNumber']}",
"TypeCode": "380",
"InvoiceType": "RECHNUNG",
"IssueDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"DeliveryDate": "@{triggerBody()?['InvoiceDate']}T00:00:00",
"IsTest": false,
"Seller": {
"Name": "@{triggerBody()?['SellerName']}",
"VatId": "@{triggerBody()?['SellerVATID']}",
"Address": {
"Street": "@{triggerBody()?['SellerStreet']}",
"PostalCode": "@{triggerBody()?['SellerPostalCode']}",
"City": "@{triggerBody()?['SellerCity']}",
"Country": "@{triggerBody()?['SellerCountry']}"
}
},
"Buyer": {
"Name": "@{triggerBody()?['BuyerName']}",
"Address": {
"Street": "@{triggerBody()?['BuyerStreet']}",
"PostalCode": "@{triggerBody()?['BuyerPostalCode']}",
"City": "@{triggerBody()?['BuyerCity']}",
"Country": "@{triggerBody()?['BuyerCountry']}"
}
},
"LineItems": [
{
"ProductName": "@{triggerBody()?['ItemDescription']}",
"Quantity": @{triggerBody()?['Quantity']},
"UnitCode": "C62",
"UnitPrice": @{triggerBody()?['UnitPrice']},
"LineTotal": @{float(...)}
}
],
"Totals": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"LineTotal": @{float(...)},
"TaxBasisTotal": @{float(...)},
"TaxPercent": @{triggerBody()?['VATRate']},
"TaxTotal": @{float(...)},
"GrandTotal": @{float(...)},
"ChargeTotal": 0,
"AllowanceTotal": 0
},
"Payment": {
"Currency": "@{triggerBody()?['Currency']?['Value']}",
"PaymentReference": "@{triggerBody()?['InvoiceNumber']}",
"DueDate": "@{triggerBody()?['DueDate']}T00:00:00"
}
}

Compose: yapılandırma​

Fatura JSON'unu (InvoiceId, TypeCode 380, InvoiceType RECHNUNG, IssueDate ve DeliveryDate içeren), Seller nesnesini (VatId ve adres içeren), Buyer nesnesini (adres içeren), LineItems dizisini (ProductName, Quantity, UnitCode C62 ve UnitPrice içeren), Totals nesnesini (para birimi, vergi yüzdesi ve para değerleri için ondalık sayı ifadeleri içeren) ve Payment nesnesini (ödeme referansı ve vade tarihi içeren) içeren Power Automate Compose eylemi.

Metin değerleri tırnak içinde belirteçlerdir. Para ve miktarlar ise çıplak sayılardır, bu yüzden float türünde işlem görürler.

Faturanın her bir bölümünün nereden geldiği​

JSON anahtarıTaşıdığı şeyKaynak
InvoiceId, TypeCode, InvoiceTypeFatura numarası, ticari fatura için belge türü kodu 380 ve sayfaya basılan etiketInvoiceNumber, ardından sabit değerler
IssueDate, DeliveryDateFaturanın düzenlendiği ve hizmetin teslim edildiği zamanInvoiceDate, sonuna T00:00:00 eklenmiş
SellerAdı, KDV ID ve tam adres bloğuSellerName, SellerVATID, SellerStreet, SellerPostalCode, SellerCity, SellerCountry
BuyerMüşterinin adı ve adresiBuyerName, BuyerStreet, BuyerPostalCode, BuyerCity, BuyerCountry
LineItemsAçıklama, birim kodu C62 olan miktar, birim fiyatı ve satır toplamıItemDescription, Miktar, UnitPrice
TotalsPara birimi, net toplam, vergi matrahı, KDV oranı ve tutarı, genel toplamPara birimi, VATRate ve hesaplanan tutarlar
PaymentPara birimi, alıcının ödeme yaparken belirttiği referans kodu ve vade tarihiPara Birimi, InvoiceNumber, DueDate

İpucu: Para birimi anahtarları aritmetik gerektiren tek kısımdır ve tırnak içinde yazılmış dizeler yerine yalın sayılar olarak sonuçlanmalıdır; float ifadeler bunun içindir. LineTotal miktar çarpı birim fiyatıdır, TaxBasisTotal satır toplamlarının toplamıdır, TaxTotal vergi tabanı çarpı oranın 100'e bölünmesidir ve GrandTotal ikisinin toplamıdır. Yakalanan satır için bu 1005, 1005, 190,95 ve 1195,95'tir. Tırnak içinde yazılmış "1005" reddedilirken, düz 1005 kabul edilir.


3. Adım: Temel PDF dosyası nereden geliyor?​

Şu ana kadarki akış: tetikleyici artı Compose.

ZUGFeRD dosyalarının okunabilir bir sayfası vardır ve bu sayfa buradan başlar.

  1. SharePoint > Get file content using path ekleyin.
  2. Yapılandır:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • File Path: /ZUGFeRD Templates/BaseInvoice.pdf
    • Infer content type (gelişmiş): Yes

Get file content using path: yapılandırma​

SharePoint'te, Site Adresi, PDF4me Desteği, Dosya Yolu /ZUGFeRD Templates/BaseInvoice.pdf ve İçerik türünü çıkarım olarak ayarlanmış şekilde, yol kullanarak dosya içeriğini alma eylemi.

Antetli kağıdınızı bu dosyada saklayın. Her çalıştırmada yeniden okunur, bu nedenle üzerinde değişiklik yapılması bir sonraki faturayı da etkiler.


Adım 4: JSON verilerini ZUGFeRD PDF/A-3 formatına nasıl dönüştürürsünüz?​

Şu ana kadarki akış: tetikleyici, Compose ve Get file content using path.

Bu işlem, elektronik faturayı oluşturur. JSON dosyasını okur, EN 16931 XML formatını kendisi yazar ve her iki parçayı da içeren tek bir dosya olarak geri gönderir.

  1. PDF4me PDF bağlantısından Create ZUGFeRD Invoice ekleyin.
  2. Yapılandır:
    • ZUGFeRD version and Input Format: 2.0-JSON
    • Output Mode: XmlWithPdf
    • Invoice JSON Data: base64(outputs('Compose')) ifadesi
    • Conformance Level: EN16931
    • Render Invoice on PDF: Yes
    • File Content: Get file content using path içeriğe uygulanan bir base64() ifadesi
    • File Name: BaseInvoice.pdf

Create ZUGFeRD Invoice: yapılandırma​

PDF4me ZUGFeRD Fatura Oluşturma eylemi, ZUGFeRD sürümü ve Giriş Biçimi 2.0-JSON olarak ayarlanmış, Çıkış Modu XmlWithPdf, Fatura JSON Veri alanı çıktıların base64 ifadesini içeriyor, Uyumluluk Seviyesi EN16931, Faturayı PDF'ye Oluştur Evet, Dosya İçeriği temel PDF üzerinde base64 ifadesi içeriyor ve Dosya Adı BaseInvoice.pdf, PDF4me PDF'ye bağlı.

Giriş formatı, hangi veri alanının görüneceğini belirler. 2.0-JSON seçerseniz, işlem Invoice XML Data Invoice JSON Data isteyecektir.

Her ayarın neye karar verdiği​

AlanBuradaki değerKontrol ettiği şeyler
ZUGFeRD version and Input Format2.0-JSONÇıktının hangi ZUGFeRD nesline ait olduğu ve verilerin JSON formatında geldiği seçimi yapılır. Bu seçim, Invoice JSON Data alanının görünmesini sağlar
Output ModeXmlWithPdfXML dosyasını tek başına değil, içine XML'in gömülü olduğu PDF dosyasından oluşan hibrit bir dosya olarak döndürün
Invoice JSON Database64(outputs('Compose'))Fatura nesnesi, giriş sırasında base64 kodlamasıyla şifrelenmiştir
Conformance LevelEN16931Faturanın karşılamayı iddia ettiği profil ve dolayısıyla JSON'un sağlaması gereken anahtarlar
Render Invoice on PDFYesOkunabilir faturayı, sayfayı olduğu gibi bırakmak yerine temel PDF dosyasının üzerine çizin
File Content, File NameTemel PDFFaturanın düzenlendiği sayfa ve işlemin raporlandığı isim

İpucu: Bu işlem, açılır menünün format kısmına bağlı olarak Invoice XML Data, Invoice JSON Data veya Invoice CSV Data gösterir. Yalnızca seçiminize uyanı doldurun. Aynı çalıştırmada iki veri alanını doldurmak, bu işlemde doğrulama hatalarının en yaygın nedenidir.


Adım 5: Fatura nereye kaydedilecek?​

Şu ana kadarki süreç: Her şey Create ZUGFeRD Invoice aşamasından geçiyor.

Dosya adı, dosyanın adını belirler ve bu sayede kütüphanede arama yapılabilirliği sağlanır.

  1. SharePoint ekle > Create file.
  2. Yapılandır:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • Folder Path: /ZUGFeRD Invoices
    • File Name: ZUGFeRD_ ardından InvoiceNumber belirteci ve .pdf
    • File Content: Create ZUGFeRD Invoice işleminden Body belirteci

Create file: yapılandırma​

SharePoint'te, Site Adresi olarak PDF4me Support, Klasör Yolu olarak /ZUGFeRD Invoices, Dosya Adı olarak ZUGFeRD_ ardından Fatura Numarası belirteci ve .pdf, Dosya İçeriği olarak ise PDF4me eyleminden alınan Gövde belirteci kullanılarak dosya oluşturma eylemi gerçekleştirilir.

RE-2026-0007 için bu ZUGFeRD_RE-2026-0007.pdf olarak yazılır.


Adım 6: Sonucu istek üzerine nasıl kaydedersiniz?​

Şu ana kadarki süreç: Her şey Create file aşamasından geçiyor.

Faturayı isteyen satırda, faturanın akıbeti de belirtilmelidir.

  1. SharePoint ekle > Update item.
  2. Yapılandır:
    • Site Address: PDF4me Support - https://ynoox1.sharepoint.com/sites/PDF4meSupport
    • List Name: ZUGFeRD Requests
    • Id: Tetikleyiciden gelen ID belirteci
    • Title: Tetikleyiciden gelen Title belirteci
    • Status Value (gelişmiş): Generated
    • OutputLink (gelişmiş): Kütüphane URL'si, ardından ZUGFeRD_, InvoiceNumber belirteci ve .pdf

Update item: yapılandırma​

SharePoint Güncelleme öğesi eylemi, Site Adresi PDF4me Support, Liste Adı ZUGFeRD Requests, Tetikleyiciden alınan Kimlik ve Başlık, Durum Değeri Oluşturuldu olarak ayarlanmış ve Çıktı Bağlantısı, ZUGFeRD Faturalar kütüphanesi URL'si ve fatura numarasından oluşturulmuştur.

Bağlantı, kütüphane URL'sinden ve aynı ad kalıbı kullanılarak Create file; kütüphane adındaki boşluk zaten %20 olarak kodlanmıştır.


Adım 7: Faturayı alıcıya nasıl gönderirsiniz?​

Şu ana kadarki süreç: Her şey Update item üzerinden ilerliyor.

Kütüphanede kalan bir elektronik fatura henüz düzenlenmemiştir, bu nedenle son işlem onu teslim eder.

  1. Office 365 Outlook > Send an email (V2) ekleyin.
  2. Yapılandır:
    • Kime: Tetikleyiciden gelen Email belirteci
    • Konu: Your ZUGFeRD e-invoice ve ardından InvoiceNumber belirteci
    • Body: Alıcının ve faturanın adını belirten ve dosyanın EN 16931 XML gömülü bir PDF/A-3 dosyası olduğunu söyleyen bir satır
  3. Advanced parameters açın ve eki ekleyin:
    • Attachments Adı - 1: ZUGFeRD_ artı InvoiceNumber belirteci artı .pdf
    • Attachments İçeriği - 1: Create ZUGFeRD Invoice işleminden File Content İçeriği belirteci
    • Importance: Normal

Send an email (V2): yapılandırma​

Office 365 Outlook'ta, "Kime" alanı "E-posta" sütunundan alınan, konu başlığı fatura numarasıyla biten, gövde kısmında alıcının adını ve içine EN 16931 XML yerleştirilmiş bir PDF/A-3 dosyasını açıklayan, ek olarak ZUGFeRD_ adını ve fatura numarasını içeren ve içeriği PDF4me Dosya İçeriği belirteci olan bir .pdf dosyasını ve Önem Düzeyi "Normal" olarak ayarlanmış bir e-posta gönderme (V2) eylemi kullanılır.

Ek dosya, kendisini oluşturan işlemden baytlarını alır, bu nedenle SharePoint hiçbir zaman geri okunmaz.


Akışı Çalıştırın ve Doğrulayın​

  1. Akışı Save.
  2. ZUGFeRD Requests alıcıyı, tek bir kalem öğesini, her iki tarihi ve kontrol edebileceğiniz bir adresi içeren bir satır ekleyin.
  3. Koşu geçmişini açın. Yedi işlemin tamamı yeşil renkte olmalı ve tüm koşu birkaç saniye sürmelidir.
  4. ZUGFeRD Invoices kütüphanesini açın ve dosyanın fatura numarası altında mevcut olup olmadığını kontrol edin.
  5. Önceki satıra geri dönün: Status Generated olarak görünmeli ve OutputLink faturayı açmalıdır.
  6. E-postadaki eki açın ve her iki bölümü de kontrol edin: sayfada doğru miktarlar gösterilmeli ve dosya içinde XML verileri bulunmalıdır.

Yakalanan işlem toplamda yaklaşık dört saniye sürdü ve e-fatura da bu süre içinde oluşturuldu. Sonuç olarak, ZUGFeRD_RE-2026-0007.pdf yaklaşık 331 KB boyutunda olup Almanca bir fatura olarak görüntülenir: satıcı Berlin bulunan Muster GmbH (KDV ID DE123456789), müşteri Muenchen bulunan Test Kunde AG, belge türü 380, %19 KDV'li tek satırlık Consulting, net 1.005,00 EUR, KDV 190,95 EUR ve toplam 1.195,95 EUR.

Peki, tam olarak ne inşa ettiniz? Kendi kayıtlarınızdan başlayan bir e-fatura hattı. Veriler finans departmanının sakladığı yerde kalıyor, standart XML ile karşılanıyor (siz asla yazmak zorunda kalmadınız), alıcı yazılımının otomatik olarak okuyabileceği ve personelinin ekranda okuyabileceği bir dosya alıyor ve talep satırı gönderildiğini kaydediyor.


Yeniden derlemeye gerek kalmadan ekleyebileceğiniz yaygın varyasyonlar​

Birden fazla satırdan oluşan fatura
LineItems zaten bir dizi olduğundan, akıştaki en kolay değişiklik budur. Satırları fatura numarasına göre bağlantılı ikinci bir listede tutun, bunları Get items ile alın ve Compose önce Select ile diziyi oluşturun.
Çıkış yapmadan önce çıktıyı kontrol edin
İlk birkaç faturayı ZUGFeRD doğrulayıcısından geçirin ve raporladığı sonuçları belirlediğiniz Conformance Level karşılaştırın. Bu, iş akışı henüz yeni iken eşleme hatasını yakalamanın en hızlı yoludur.
XML dosyasını da ayrı bir yerde saklayın
Bazı alıcılar yapılandırılmış dosyayı ayrı olarak istiyor. İşlemi ikinci kez Output Mode XmlOnly olarak ayarlayarak çağırın ve sonucu PDF'nin yanındaki kütüphaneye kaydedin.
Çeşitli tüzel kişiler için sorun
Seller nesnesi zaten sütunlardan geliyor, bu nedenle tek bir liste iki şirket için düzenlenebilir. Temel PDF dosyasını aynı sütun tarafından seçilen bir antetli kağıda yönlendirin ve yazdırılan sayfa oluşturulacaktır.

Bu, ZUGFeRD faturası oluşturmanın diğer yöntemleriyle nasıl karşılaştırılır?​

Her satır alternatifi açıklıyor. Son satır ise bu akışı gösteriyor.

KarşılaştırmakKim yönetiyor?Verilerin kaynağıBakımını yaptığınız şeyler
ZUGFeRD dışa aktarma özelliğine sahip faturalama yazılımı ile bu akış karşılaştırmasıÜrünün içindeki herkesÜrünün kendi kayıtlarıAbonelik ve ürünün desteklediği her şey
E-fatura platformu ile bu akış karşılaştırmasıFinans, bir portal aracılığıylaYüklemeler veya entegrasyonBelge bazlı bir sözleşme ve ona ilişkin bağlantı
Geliştirici kütüphanesi ve bu akış karşılaştırmasıBir uygulama geliştiricisi, uygulama içindeVeritabanınız, kod aracılığıylaKod, şema güncellemeleri ve sürümler
Bu akışListe satırı ekleyebilen herkesEkibin tuttuğu bir SharePoint listesiBir JSON nesnesi ve temel bir PDF dosyası

Sıkça sorulan sorular​

ZUGFeRD faturası nedir?​

ZUGFeRD faturası, iki şekilde çalışan tek bir dosyadır. Açılıp okunabilen normal bir PDF dosyasıdır ve içinde aynı faturayı yapılandırılmış veri olarak içeren bir XML eki bulunur. Alıcının muhasebe sistemi XML dosyasını okur ve faturayı kimsenin elle yazmasına gerek kalmadan kaydederken, ödeme departmanındaki kişi yine de bir sayfa görür.

Bu format, elektronik faturalama için Alman forumu olan FeRD geliyor ve Fransız muadili de aynı fikri farklı bir isim altında sunan Factur-X.

ZUGFeRD formatı nedir?​

Teknik olarak, bu Cross Industry Invoice sözdiziminde gömülü bir XML dosyası ve verilerin ne kadar eksiksiz olduğunu belirten bir profil içeren bir PDF/A-3 konteyneridir. Burada kullanılan profil, e-faturalama için Avrupa semantik standardına karşılık gelen EN16931: EN 16931 bir faturanın çekirdeği olarak tanımladığı alanlar kümesi.

Otomasyonun pratik sonucu, çıktının sayfa üzerinde değil, XML üzerinde değerlendirilmesidir. Profilin istediği verileri sağlarsanız dosya onaylanır; sayfayı daha güzel hale getirirseniz hiçbir şey değişmez.

ZUGFeRD faturası nasıl oluşturulur?​

Üç şeye ihtiyacınız var: yapılandırılmış biçimde fatura verileri, insan tarafından yazılacak bir sayfa ve XML'i PDF/A-3 eki olarak PDF'ye yazan bir araç.

Bu akışta veriler JSON'a dönüştürülmüş bir SharePoint satırıdır, sayfa BaseInvoice.pdf ve Create ZUGFeRD Invoice üçüncü kısmı XmlWithPdf Output Mode ile gerçekleştirir. Verileriniz zaten Cross Industry Invoice XML'i veya CSV satırı olarak mevcutsa, giriş biçimini değiştirin ve bunun yerine onu besleyin. Akışın geri kalanı değişmez.

ZUGFeRD ve XRechnung arasındaki fark nedir?​

İkisi de aynı Avrupa standardını karşılıyor ve aralarındaki fark ambalajda. ZUGFeRD hibrit bir format: içinde XML bulunan okunabilir bir PDF; bu da faturaların elle açılmasını bekleyen müşterilere gönderilmesi için uygun. XRechnung ise yalnızca XML formatında ve Alman kamu sektörü alıcılarının talep ettiği format.

Kurumsal firmalara gönderim yapıyorsanız, hibrit dosya genellikle daha güvenli bir seçenektir çünkü dosyayı açan herkes tarafından okunabilir. Kamu kurumlarına fatura kesiyorsanız, göndermeden önce ilgili kurumun hangi formatı gerektirdiğini kontrol edin.


Sorun giderme​

Bu işlem fatura verilerini reddeder

Çalıştırma geçmişinde Compose çıktısını açın ve her şeyden önce JSON olarak okuyun. Boş bir sütun, anahtarı boş bırakır ve tırnak işaretlerini koruyan bir para değeri, sayı beklenirken metin olarak gelir. Her ikisi de düzgün görünen ancak yine de dönüştürmede başarısız olan bir nesne üretir.

Doğrulayıcı uygunluk düzeyini reddediyor

Conformance Level profilin hangi alanları gerektirdiğini belirler. JSON dosyasında profilin beklediği anahtarlar eksik olsa bile EN16931 iddiasında bulunmak, dosya normal şekilde açılsa bile doğrulamayı başarısız kılar. Ya eksik anahtarları sağlayın ya da daha düşük bir profil seviyesine geçin.

PDF dosyası boş görünüyor veya hala boş şablonu gösteriyor

Render Invoice on PDF Hayır olarak ayarlandığı için XML, herhangi bir çizim yapılmadan gömüldü. Dosya hala geçerli bir e-fatura, ancak insan müdahalesi gerektiren kısım, temel PDF'nin içerdiği bilgilerden oluşuyor.

Alıcı, faturada XML bulunmadığını söylüyor

E-posta adımındaki ek içeriğini ve Create file adımındaki File Content kontrol edin. Her ikisi de Create ZUGFeRD Invoice adımından gelmelidir. Bunun yerine temel PDF dosyasını eklemek, doğru görünen ancak yazılımlarının okuyabileceği hiçbir şey içermeyen bir sayfa gönderir.


Sonraki Adımlar​

Alıcılarınızın nihayetinde hangi formata ihtiyaç duyarsa duysun, her e-fatura zorunluluğu aslında aynı yedi adımlı süreci (bir satır gelir, fatura veri olarak tanımlanır, bir dosya oluşturulur, arşivlenir, kaydedilir ve gönderilir) gerektirir.