Odeslání e-faktury přes endpoint SalesInvoice: upload v libovolném podporovaném formátu, routing a sledování stavu.
Odeslání e-faktury přes API PSB je nejpoužívanější endpoint. Odešlete XML dokument v libovolném podporovaném formátu (UBL 2.1, NLCIUS, BIS Billing V3, PINT, CII, XRechnung, Factur-X/ZUGFeRD a další) a PSB se postará o automatickou detekci formátu, validaci, routing a doručení přes příslušnou síť.
POST /api/v1/{partyId}/salesInvoice/send
{partyId} v URL je Peppol identifikátor odesílající organizace (dodavatele). Požadavek obsahuje XML dokument jako body (content-type application/xml). PSB automaticky rozpozná formát dokumentu (UBL 2.1, NLCIUS, BIS Billing V3, PINT, CII, XRechnung, Factur-X/ZUGFeRD, FatturaPA a další) a validuje dokument vůči příslušným pravidlům.
Důležité: PSB určuje příjemce na základě
EndpointIDve Vašem XML dokumentu. Pokud tento element chybí nebo obsahuje nesprávný identifikátor, odeslání selže se stavemInvoiceSentError. Ujistěte se, že Váš zdrojový systém správně vyplňuje EndpointID. Více o identifikátorech a routingu najdete v článku o Peppol identifikátorech.
PSB podporuje idempotency přes header požadavku X-EConnect-DocumentId. Zahrnutím vlastního UUID u každého upload požadavku se zabrání duplicitnímu zpracování:
X-EConnect-DocumentId: 550e8400-e29b-41d4-a716-446655440000
Pokud odešlete stejný documentId znovu, API vrátí 409 Conflict a odesílatel ví, že dokument již byl zpracován.
Důležité: Vždy používejte UUID/GUID jako documentId. Nikdy nepoužívejte číslo faktury, protože to způsobuje problémy při opětovném odeslání opravené verze téže faktury.
Před odesláním faktury můžete přes queryRecipientParty zkontrolovat, zda a jak je příjemce dostupný:
POST /api/v1/{partyId}/salesInvoice/queryRecipientParty
V těle požadavku předáváte seznam identifikátorů, například ["0106:12345678"], nebo objekt s partyIds a metaAttributes. Volitelné dotazové parametry jsou ?preferredDocumentTypeId a ?includeOptions.
Odpověď obsahuje informace o:
Pro pokročilé vyhledávání včetně URL Access Pointu a certifikátu AP je k dispozici samostatná cesta:
GET /api/v1/peppol/deliveryOption?partyIds={id}&documentFamily=Invoice&isCredit=false
Při neúspěšném doručení PSB automaticky uplatňuje mechanismus opakování:
InvoiceSentRetryInvoiceSentError přes Váš webhookČasté chyby při odesílání:
InvoiceSentError jako konečný stav.Invalid payload — '{hodnota}' není platný xs:decimal na poli částkycbc:TaxInclusiveAmount, cbc:PriceAmount, cbc:LineExtensionAmount) ve vědeckém zápisu, jako -1.336061E6 místo -1336061.00. Pole částek UBL jsou typu xs:decimal a typ XML Schema neumožňuje exponentový zápis; platný je pouze pevný desetinný zápis s maximálně 2 desetinnými místy. Vyskytuje se typicky u velkých nebo záporných částek, které jsou interně serializovány jako double.E, žádné oddělovače tisíců). Nahlaste problém dodavateli odesílajícího softwaru; eConnect to neumí opravit, protože hodnota se nachází v dodaném XML.The string '' is not a valid Decimal value v poli PriceAmountcbc:PriceAmount) obsahuje prázdný řetězec ("") místo desetinného čísla na jednom nebo více řádcích faktury. xs:decimal neumožňuje prázdný řetězec jako lexikální hodnotu. Jiná příčina než vědecký zápis, stejná třída chybového vzoru.queryRecipientPartyPoznámka: SI-UBL 1.2 (Simpler Invoicing 1.2) není povolen na síti Peppol od 1. ledna 2024. Faktury v tomto formátu vedou k
InvoiceSentError. Používejte NLCIUS (SI-UBL 2.0) nebo Peppol BIS Billing V3. ZkontrolujteCustomizationIDve Vašem XML dokumentu, pokud narazíte na tuto chybu.
Úspěšný upload vrátí 200 OK s identifikátorem dokumentu v PSB. Tento identifikátor použijte ke sledování stavu dokumentu přes API nebo přes webhooky.
Na rozdíl od purchaseInvoice endpoint salesInvoice nemá DELETE. Jde o záměrnou volbu, protože odeslaná nebo odmítnutá prodejní faktura je událost významná pro audit: dokument zůstává dohledatelný v auditní stopě i poté, co odeslání selhalo.
Zákazníci se někdy ptá, zda lze odmítnutou prodejní fakturu zastavit nebo smazat, například poté, co fakturu interně již dobropisovali. Odpověď zní:
Invalid payload): PSB umístí dokument do konečného stavu InvoiceSentError. Žádné opakování se neprovádí (opakují se pouze chyby 5xx). Dokument není dodatečně doručen příjemci. Na PSB není potřeba žádná akce; dokument je v konečném stavu a uchovává se 90 dní pro účely auditu.Tento rozdíl v životním cyklu mezi salesInvoice (bez DELETE) a purchaseInvoice (s DELETE) vyplývá z role: odchozí faktura je obchodní úkon zaznamenaný odesílatelem, který musí být právně dohledatelný; příchozí faktura může být po úspěšném stažení odstraněna z vlastního systému příjemce.
Standardně PSB automaticky vybírá nejlepší kanál. S parametrem dotazu ?channel={hookId} můžete vynutit konkrétní kanál doručení (např. konkrétní síť nebo e-mailový fallback).
Přílohy (PDF, obrázky) se mohou vložit jako base64 do UBL dokumentu jako AdditionalDocumentReference. PSB zpracovává vložené přílohy správně a doručuje je společně s fakturou.
Poznámka: Endpoint odesílání přijímá maximálně 24 MB na požadavek (včetně HTTP overheadu). U příloh kódovaných v base64 payload naroste o přibližně 33%, takže 18 MB PDF vede k požadavku o velikosti přibližně 24 MB. Payloady přesahující limit jsou odmítnuty webovým serverem s HTTP 500 (nikoli 413), ještě před aplikační validací. Zmenšete velké přílohy nebo je odešlete přes samostatný kanál.
Tip: Aktuální standard Peppol BIS Billing 3.0 podporuje maximálně jednu
OrderReferencena fakturu. Pokud se faktura vztahuje na více objednávek, musí se odeslat více faktur.
Tip: Někteří příjemci hlásí chyby u faktur s XML namespace prefixem (např.
<urn:Invoice>místo<Invoice>). Obě formy jsou technicky správný XML podle W3C specifikace. Pokud příjemce uvádí toto jako důvod odmítnutí, nejedná se o platné odmítnutí v rámci sítě Peppol. Příjemce musí používat XML parser, který správně zpracovává prefixované i výchozí namespacey.
PSB je připraven na požadavky ViDA (VAT in the Digital Age). Při odeslání faktury PSB automaticky generuje příslušné CTC/DRR hlášení a odesílá ho finančnímu úřadu. Pro integrátory to neznamená žádnou změnu ve workflow: používáte stejný endpoint a stejný formát jako dosud.
Stavové zprávy o CTC reportování jsou součástí standardního webhook mechanismu. PSB poskytuje důkazové soubory (evidence files) pro každé hlášení. CTC reportování je zahrnuto v ceně dokumentu.
XML dokument odešlete jako body na POST /api/v1/{partyId}/salesInvoice/send s Content-Type: application/xml. PSB podporuje více než 20 formátů (UBL 2.1, NLCIUS, BIS Billing V3, PINT, CII, XRechnung, Factur-X/ZUGFeRD a další) a automaticky detekuje formát. Odešlete dokument ve vlastním formátu a PSB ho validuje vůči příslušným XSD a business rules. Příjemce se určí podle EndpointID ve Vašem XML; pokud chybí nebo je nesprávný, obdržíte InvoiceSentError.
Při každém uploadu přidejte hlavičku X-EConnect-DocumentId s unikátním UUID. Pokud zopakujete stejné documentId, API odpoví 409 Conflict, čímž potvrdí, že dokument již byl zpracován. Nikdy nepoužívejte číslo faktury jako documentId, protože při opětovném odeslání opravené verze potřebujete nové ID.
Po úspěšném uploadu API vrátí identifikátor dokumentu v PSB, pomocí kterého můžete sledovat stav přes API nebo webhooky. Při dočasných 5xx chybách na straně příjemce PSB zveřejní pro každý pokus event InvoiceSentRetry a opakuje až 8krát během přibližně 35 hodin; při definitivním selhání obdržíte event InvoiceSentError.
Ne. PSB automaticky generuje CTC/DRR hlášení při odeslání faktury a odesílá ho příslušnému finančnímu úřadu. Používáte stejný endpoint a stejný formát jako dosud. Stavové zprávy o CTC jsou dostupné přes standardní webhook mechanismus.
Chcete nejprve otestovat, zda je Váš dokument platný? Použijte Validate API.
Vyzkoušejte v API