Odoslanie e-faktúry cez endpoint SalesInvoice: upload v ľubovoľnom podporovanom formáte, routing a sledovanie stavu.
Odoslanie e-faktúry cez API PSB je najpoužívanejší endpoint. Odošlete XML dokument v ľubovoľnom podporovanom formáte (UBL 2.1, NLCIUS, BIS Billing V3, PINT, CII, XRechnung, Factur-X/ZUGFeRD a ďalšie) a PSB sa postará o automatickú detekciu formátu, validáciu, routing a doručenie cez príslušnú sieť.
POST /api/v1/{partyId}/salesInvoice/send
{partyId} v URL je Peppol identifikátor odosielajúcej organizácie (dodávateľa). Požiadavka obsahuje XML dokument ako 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 ďalšie) a validuje dokument voči príslušným pravidlám.
Dôležité: PSB určuje príjemcu na základe
EndpointIDvo Vašom XML dokumente. Ak tento element chýba alebo obsahuje nesprávny identifikátor, odoslanie zlyhá so stavomInvoiceSentError. Uistite sa, že Váš zdrojový systém správne vypĺňa EndpointID. Viac o identifikátoroch a routingu nájdete v článku o Peppol identifikátoroch.
PSB podporuje idempotency cez header požiadavky X-EConnect-DocumentId. Zahrnutím vlastného UUID pri každej upload požiadavke sa zabráni duplicitnému spracovaniu:
X-EConnect-DocumentId: 550e8400-e29b-41d4-a716-446655440000
Ak odošlete rovnaký documentId znova, API vráti 409 Conflict a odosielateľ vie, že dokument už bol spracovaný.
Dôležité: Vždy používajte UUID/GUID ako documentId. Nikdy nepoužívajte číslo faktúry, pretože to spôsobuje problémy pri opätovnom odoslaní opravenej verzie tej istej faktúry.
Pred odoslaním faktúry môžete cez queryRecipientParty skontrolovať, či a ako je príjemca dostupný:
POST /api/v1/{partyId}/salesInvoice/queryRecipientParty
V tele požiadavky odovzdávate zoznam identifikátorov, napríklad ["0106:12345678"], alebo objekt s partyIds a metaAttributes. Voliteľné parametre dotazu sú ?preferredDocumentTypeId a ?includeOptions.
Odpoveď obsahuje informácie o:
Pre pokročilé vyhľadávanie vrátane URL Access Pointu a certifikátu AP je k dispozícii samostatná cesta:
GET /api/v1/peppol/deliveryOption?partyIds={id}&documentFamily=Invoice&isCredit=false
Pri neúspešnom doručení PSB automaticky uplatňuje mechanizmus opakovania:
InvoiceSentRetryInvoiceSentError cez Váš webhookČasté chyby pri odosielaní:
InvoiceSentError ako konečný stav.Invalid payload — '{hodnota}' nie je platný xs:decimal na poli sumycbc:TaxInclusiveAmount, cbc:PriceAmount, cbc:LineExtensionAmount) vo vedeckom zápise, ako -1.336061E6 namiesto -1336061.00. Polia súm UBL sú typu xs:decimal a typ XML Schema neumožňuje exponenciálny zápis; platný je iba pevný desatinný zápis s maximálne 2 desatinnými miestami. Vyskytuje sa typicky pri veľkých alebo záporných sumách, ktoré sú interným spracovaním serializované ako double.E, žiadne oddeľovače tisícok). Nahláste problém dodávateľovi odosielajúceho softvéru; eConnect to nemôže opraviť, pretože hodnota sa nachádza v dodanom XML.The string '' is not a valid Decimal value v poli PriceAmountcbc:PriceAmount) obsahuje prázdny reťazec ("") namiesto desatinného čísla na jednom alebo viacerých riadkoch faktúry. xs:decimal neumožňuje prázdny reťazec ako lexikálnu hodnotu. Iná príčina ako vedecký zápis, rovnaká trieda chybového vzoru.queryRecipientPartyPoznámka: SI-UBL 1.2 (Simpler Invoicing 1.2) nie je povolený na sieti Peppol od 1. januára 2024. Faktúry v tomto formáte výsledkujú v
InvoiceSentError. Používajte NLCIUS (SI-UBL 2.0) alebo Peppol BIS Billing V3. SkontrolujteCustomizationIDvo Vašom XML dokumente, ak narazíte na túto chybu.
Úspešný upload vráti 200 OK s identifikátorom dokumentu v PSB. Tento identifikátor použite na sledovanie stavu dokumentu cez API alebo cez webhoky.
Na rozdiel od purchaseInvoice endpoint salesInvoice nemá DELETE. Ide o zámerné rozhodnutie, pretože odoslaná alebo odmietnutá predajná faktúra je udalosť významná pre audit: dokument zostáva dohl'adateľný v auditnej stope aj po tom, ako odoslanie zlyhalo.
Zákazníci sa niekedy pýtajú, či možno odmietnutú predajnú faktúru zastaviť alebo zmazať, napríklad po tom, ako faktúru interné už dobropisovali. Odpoveď znie:
Invalid payload): PSB umiestni dokument do konečného stavu InvoiceSentError. Žiadne opakovanie sa nevykonáva (opakujú sa iba chyby 5xx). Dokument nie je dodatočne doručený príjemcovi. Na PSB nie je potrebná žiadna akcia; dokument je v konečnom stave a uchováva sa 90 dní na účely auditu.Tento rozdiel v životnom cykle medzi salesInvoice (bez DELETE) a purchaseInvoice (s DELETE) vyplýva z roly: odchodzia faktúra je obchodný úkon zaznamenaný odosielateľom, ktorý musí byť právne dohl'adateľný; prichodzia faktúra môže byť po úspešnom stiahnutí odstránená z vlastného systému príjemcu.
Štandardne PSB automaticky vyberá najlepší kanál. S parametrom dopytu ?channel={hookId} môžete vynútiť konkrétny kanál doručenia (napr. konkrétnu sieť alebo e-mailový fallback).
Prílohy (PDF, obrázky) sa môžu vložiť ako base64 do UBL dokumentu ako AdditionalDocumentReference. PSB spracúva vložené prílohy správne a doručuje ich spolu s faktúrou.
Poznámka: Endpoint odosielania akceptuje maximálne 24 MB na požiadavku (vrátane HTTP overheadu). Pri prílohách kódovaných v base64 payload narastie o približne 33%, takže 18 MB PDF výsledkuje v požiadavke o veľkosti približne 24 MB. Payloady presahujúce limit sú odmietnuté webovým serverom s HTTP 500 (nie 413), ešte pred aplikačnou validáciou. Zmenšite veľké prílohy alebo ich odošlite cez samostatný kanál.
Tip: Aktuálny štandard Peppol BIS Billing 3.0 podporuje maximálne jednu
OrderReferencena faktúru. Ak sa faktúra vzťahuje na viacero objednávok, musia sa odoslať viaceré faktúry.
Tip: Niektorí príjemcovia hlásia chyby pri faktúrach s XML namespace prefixom (napr.
<urn:Invoice>namiesto<Invoice>). Obe formy sú technicky správny XML podľa W3C špecifikácie. Ak príjemca uvádza toto ako dôvod odmietnutia, nie je to platné odmietnutie v rámci siete Peppol. Príjemca musí používať XML parser, ktorý správne spracúva prefixované aj predvolené namespacy.
PSB je pripravený na požiadavky ViDA (VAT in the Digital Age). Pri odoslaní faktúry PSB automaticky generuje príslušné CTC/DRR hlásenie a odosiela ho daňovému úradu. Pre integrátorov to neznamená žiadnu zmenu vo workflow: používate rovnaký endpoint a rovnaký formát ako doteraz.
Stavové správy o CTC reportovaní sú súčasťou štandardného webhook mechanizmu. PSB poskytuje dôkazové súbory (evidence files) pre každé hlásenie. CTC reportovanie je zahrnuté v cene dokumentu.
XML dokument odošlite ako body na POST /api/v1/{partyId}/salesInvoice/send s Content-Type: application/xml. PSB podporuje viac ako 20 formátov (UBL 2.1, NLCIUS, BIS Billing V3, PINT, CII, XRechnung, Factur-X/ZUGFeRD a ďalšie) a automaticky deteguje formát. Odošlite dokument vo vlastnom formáte a PSB ho validuje voči príslušným XSD a business rules. Príjemca sa určí podľa EndpointID vo Vašom XML; ak chýba alebo je nesprávny, dostanete InvoiceSentError.
Pri každom uploade pridajte hlavičku X-EConnect-DocumentId s unikátnym UUID. Ak zopakujete rovnaké documentId, API odpovie 409 Conflict, čím potvrdí, že dokument už bol spracovaný. Nikdy nepoužívajte číslo faktúry ako documentId, pretože pri opätovnom odoslaní opravenej verzie potrebujete nové ID.
Po úspešnom uploade API vráti identifikátor dokumentu v PSB, pomocou ktorého môžete sledovať stav cez API alebo webhoky. Pri dočasných 5xx chybách na strane príjemcu PSB zverejní pre každý pokus event InvoiceSentRetry a opakuje až 8-krát počas približne 35 hodín; pri definitívnom zlyhaní dostanete event InvoiceSentError.
Nie. PSB automaticky generuje CTC/DRR hlásenie pri odoslaní faktúry a odosiela ho príslušnému daňovému úradu. Používate rovnaký endpoint a rovnaký formát ako doteraz. Stavové správy o CTC sú dostupné cez štandardný webhook mechanizmus.
Chcete najprv otestovať, či je Váš dokument platný? Použite Validate API.
Vyskúšajte v API