← Základy / Sady SDK
Odesílání a příjem faktur prostřednictvím sítě Peppol
Propojte vlastní přístupový bod Peppol vaší společnosti (Recommand, Storecove nebo e-invoice.be) se systémem Nordlet, odesílejte faktury a dobropisy přes síť Peppol, sledujte jejich doručení a převádějte přijaté e-faktury na přijaté faktury.
Peppol je evropská síť pro výměnu strukturovaných e-faktur mezi podniky a veřejnými subjekty. Každá faktura putuje z přístupového bodu odesílatele do přístupového bodu příjemce. Nordlet sestavuje faktury a dobropisy ve formátu Peppol BIS Billing 3.0 a odesílá je a přijímá prostřednictvím účtu přístupového bodu vaší společnosti.
Síť Peppol stanovuje pravidla pro vzájemnou výměnu dokumentů mezi přístupovými body, ale neupravuje způsob, jakým váš software komunikuje s vaším vlastním přístupovým bodem, protože každý poskytovatel má vlastní API. Nordlet spolupracuje s těmito poskytovateli:
| Poskytovatel | Odesílání | Stav doručení | Příjem |
|---|---|---|---|
| Recommand | ano | přes webhook a na vyžádání | ano |
| Storecove | ano | pouze přes webhook | ano |
| e-invoice.be | ano | přes webhook a na vyžádání | ano |
Bez přístupového bodu Nordlet stále vytvoří soubor Peppol pro každou vystavenou fakturu a dobropis, abyste si jej mohli stáhnout a předat jiným způsobem; sám o sobě však nic neodesílá ani nepřijímá.
Co budete potřebovat
- Účet u některého z výše uvedených poskytovatelů se zaregistrovanou společností v síti Peppol. Každý poskytovatel si za své služby účtuje poplatky dle vlastního ceníku.
- V aplikaci Nordlet vyplněné IČO, DIČ nebo Peppol ID společnosti (v části Účet → Společnosti → Peppol ID). Každý zákazník, kterému odesíláte dokumenty, musí mít jeden z těchto údajů uvedený na své partnerské kartě.
Připojení přístupového bodu
Otevřete Účet → Shoda s předpisy (Compliance) → EU → Přístupový bod Peppol, v poli Poskytovatel vyberte svého poskytovatele, vyplňte pole pro daného poskytovatele podle níže uvedeného popisu a uložte. Pole Základní URL adresa API (API base URL) ponechte prázdné, pokud vám poskytovatel neposkytl jinou adresu. Po uložení se na stránce zobrazí URL adresa webhooku vaší společnosti ve tvaru https://api.nordlet.com/v1/peppol/webhooks/{provider}/{companyId}, kde {provider} je recommand, storecove nebo e-invoice-be a {companyId} je ID vaší společnosti. Každá společnost v systému Nordlet má vlastní URL adresu webhooku.
Nordlet přijme volání webhooku pouze tehdy, pokud prokáže znalost tajného klíče vašeho webhooku (webhook secret), takže volání nepocházející z účtu vašeho přístupového bodu jsou odmítnuta. Nordlet kontaktuje veřejné internetové adresy výhradně při volání vašeho přístupového bodu.
Recommand
- V aplikaci Recommand otevřete profil své společnosti a zkopírujte její ID společnosti do pole ID účtu v přístupovém bodu.
- V aplikaci Recommand vytvořte klíč API a zkopírujte klíč a jeho tajnou hodnotu do polí Klíč API a Tajný klíč API.
- Vymyslete dlouhý náhodný text, který budete znát pouze vy a společnost Recommand, a zadejte jej do pole Tajný klíč webhooku. Uložte.
- V aplikaci Recommand vytvořte webhook pro svou společnost s URL adresou webhooku zobrazenou v systému Nordlet a se stejným tajným klíčem webhooku.
Recommand podepisuje každé volání webhooku tímto tajným klíčem.
Storecove
- V aplikaci Storecove vytvořte právnickou osobu (legal entity) pro svou společnost, nastavte ji pro odesílání i příjem a zkopírujte její ID do pole ID účtu v přístupovém bodu.
- V aplikaci Storecove v části Klíče API (API Keys) vytvořte klíč API a zkopírujte jej do pole Klíč API. Pole Tajný klíč API ponechte prázdné.
- Vymyslete dlouhý náhodný text a zadejte jej do pole Tajný klíč webhooku. Uložte.
- V aplikaci Storecove nastavte push webhook s URL adresou webhooku zobrazenou v systému Nordlet, zabezpečený pomocí HTTP Basic autentizace: libovolné uživatelské jméno a tajný klíč webhooku jako heslo.
Storecove neposkytuje funkci pro zjištění stavu odeslaného dokumentu, takže v tomto případě stav doručení přichází pouze prostřednictvím jeho webhooku a stránka faktury neobsahuje tlačítko Zkontrolovat stav v Peppol. Testovací účet (sandbox) ve službě Storecove odesílá zprávy v testovací síti Peppol; produkční klíče API získáte od podpory společnosti Storecove.
e-invoice.be
- V aplikaci e-invoice.be v části Nastavení API (API Settings) zkopírujte klíč API vaší společnosti do pole Klíč API. Pole ID účtu v přístupovém bodu a Tajný klíč API ponechte prázdná. Uložte.
- Vytvořte webhook pomocí API služby e-invoice.be (
POST https://api.e-invoice.be/api/webhooks/) s URL adresou webhooku zobrazenou v systému Nordlet a s událostmidocument.received,document.sentadocument.sent.failed. - Zkopírujte hodnotu
secret, kterou API vrátí pro nový webhook, do pole Tajný klíč webhooku v aplikaci Nordlet a uložte znovu.
e-invoice.be podepisuje každé volání webhooku tímto tajným klíčem. Testovací společnost (sandbox) v e-invoice.be odesílá dokumenty určené k odeslání raději e-mailem, než aby je posílala přes síť Peppol.
Odeslání faktury
- Vystavte fakturu nebo dobropis.
- Zkontrolujte, zda má zákazník na své partnerské kartě uvedeno Peppol ID, DIČ nebo IČO.
- Na stránce faktury v sekci Doručení klikněte na tlačítko Odeslat přes Peppol a akci potvrďte. Sekce Doručení se zobrazuje u dosud nezaplacených vystavených faktur a tlačítko je viditelné pouze v případě, že je připojen přístupový bod.
Nordlet sestaví soubor Peppol a předá jej vašemu přístupovému bodu. Na stránce faktury se poté zobrazí sekce Doručení Peppol:
| Stav | Význam |
|---|---|
| pending (čekající) | Předáno přístupovému bodu; přístupový bod zákazníka to ještě potvrdil |
| delivered (doručeno) | Přístupový bod zákazníka potvrdil přijetí faktury |
| rejected (odmítnuto) | Zákazník fakturu odmítl; důvod se zobrazuje pod stavem |
| failed (selhalo) | Fakturu se nepodařilo doručit; pokud přístupový bod uvádí důvod, zobrazuje se pod stavem |
Stav se automaticky aktualizuje, jakmile přístupový bod nahlásí změnu prostřednictvím svého webhooku. Tlačítko Zkontrolovat stav v Peppol odešle okamžitý dotaz na aktuální stav do služeb Recommand nebo e-invoice.be; v případě e-invoice.be načte také odpověď zákazníka na fakturu a případné odmítnutí (kód odpovědi RE) se zobrazí jako odmítnuté. Odmítnutou nebo nesúspěšně odeslanou fakturu lze po odstranění příčiny odeslat znovu. Pokud přístupový bod fakturu rovnou odmítne, například proto, že zákazník není registrován v síti Peppol, Nordlet zobrazí důvod a faktura zůstane neodeslaná.
Tlačítko Peppol XML v horní části stránky faktury slouží ke stažení stejného souboru Peppol bez jeho odeslání.
V souladu s pravidly sítě Peppol se u intrakomunitárních dodávek uvádí datum vystavení jako datum zdanitelného plnění a země zákazníka jako země určení.
Příjem faktur
Když přístupový bod nahlásí přijatý dokument prostřednictvím svého webhooku, Nordlet si z něj stáhne soubor Peppol. Faktury a dobropisy přijaté vaší společností se zobrazí v části Nákupy → Zpracování dokumentů (Document capture) s označením, že byly přijaty přes síť Peppol od Peppol ID odesílatele. Nordlet zpracovává soubor Peppol sám, takže příjem dokumentů nespotřebovává kredity za optické rozpoznávání znaků (OCR).
- Otevřete přijatý dokument.
- Zkontrolujte dodavatele, data a položky; vyberte dodavatele ze svých partnerů nebo jej vytvořte.
- Klikněte na Uložit jako koncept. Nordlet vytvoří koncept přijaté faktury (nebo koncept přijatého dobropisu v případě přijatého dobropisu) s přiloženým původním souborem Peppol. Zpracujte jej obvyklým způsobem jako jakoukoli jinou přijatou fakturu.
Položky přijatých faktur v systému Nordlet nemohou mít zápornou hodnotu. Slevy a přirážky pro celý dokument a záporné položky jsou poměrně rozděleny mezi položky se stejnou sazbou DPH. Částku, kterou nelze přiřadit k žádné položce příslušné sazby DPH, jako je například vrácené zboží v sazbě DPH, kterou jiná položka faktury neobsahuje, zobrazuje druhá tabulka: Položky dobropisu u přijaté faktury nebo Položky faktury u přijatého dobropisu. Tyto položky se uloží jako druhý dokument pro téhož dodavatele: přijatý dobropis k nové faktuře s číslem ve tvaru "<číslo_dokumentu>-CR" nebo přijatá faktura s číslem ve tvaru "<číslo_dokumentu>-INV". Oba dokumenty dohromady tvoří celkové součty přijatého dokumentu.
Ověření registrace zákazníka v síti Peppol
Volání POST /v1/peppol/participants/lookup s parametrem partnerId nebo participantId (ve tvaru "<schéma>:<identifikátor>") odešle do sítě Peppol dotaz, zda je příjemce registrován a jaké dokumenty akceptuje. Tuto funkci lze používat i bez přístupového bodu.
Stejné operace prostřednictvím API
| Úkol | Volání |
|---|---|
| Připojení přístupového bodu | POST /v1/declarations/configs/update s parametry system: "peppol" a objektem config, který obsahuje provider (recommand, storecove nebo e-invoice-be), accountId, apiKey, apiSecret, webhookSecret a volitelnou položku apiBaseUrl |
| Příjem webhooku od přístupového bodu | POST /v1/peppol/webhooks/{provider}/{companyId}, voláno přístupovým bodem |
| Stažení souboru Peppol | POST /v1/sales/invoices/peppol-xml |
| Odeslání | POST /v1/sales/invoices/peppol-send (vrací kód 422, pokud není připojen přístupový bod) |
| Načtení stavu doručení | POST /v1/sales/invoices/peppol-status (vrací kód 422 u poskytovatele Storecove); faktury obsahují pole peppolMessageId, peppolStatus, peppolDetail, peppolSentAt, peppolCheckedAt |
| Vyhledání přijatých dokumentů | POST /v1/capture/documents/list; přijaté dokumenty mají atributy provider: "peppol" a senderId |
| Převedení na přijatou fakturu | POST /v1/capture/documents/confirm s parametrem oppositeLines pro druhý dokument |
Události webhooku: sale_invoice.peppol_sent, sale_invoice.peppol_delivered, sale_invoice.peppol_rejected, sale_invoice.peppol_failed a document_capture.peppol_received. Podrobnosti o chybových stavech, idempotenci a webhooku najdete v dokumentu Konvence API.