← Documentatie / Ghiduri
Trimiterea și primirea facturilor prin Peppol
Conectați propriul punct de acces Peppol al companiei (Recommand, Storecove sau e-invoice.be) la Nordlet, trimiteți facturi și note de credit prin Peppol, urmăriți livrarea acestora și transformați e-facturile primite în facturi de achiziție.
Peppol este rețeaua europeană pentru schimbul de e-facturi structurate între companii și instituții publice. Fiecare factură călătorește de la punctul de acces al expeditorului la punctul de acces al destinatarului. Nordlet generează facturi și note de credit Peppol BIS Billing 3.0, pe care le trimite și le primește prin contul punctului de acces al companiei dumneavoastră.
Peppol stabilește regulile privind modul în care punctele de acces fac schimb de documente între ele, dar nu și modul în care software-ul dumneavoastră comunică cu propriul punct de acces: fiecare furnizor are propriul API. Nordlet colaborează cu următorii furnizori:
| Furnizor | Trimite | Stare livrare | Primește |
|---|---|---|---|
| Recommand | da | prin webhook și la cerere | da |
| Storecove | da | doar prin webhook | da |
| e-invoice.be | da | prin webhook și la cerere | da |
Fără un punct de acces, Nordlet va crea în continuare fișierul Peppol pentru fiecare factură emisă și notă de credit, astfel încât să îl puteți descărca și transmite printr-o altă metodă; în acest caz, aplicația nu trimite și nu primește nimic.
De ce aveți nevoie
- Un cont la unul dintre furnizorii de mai sus, cu compania dumneavoastră înregistrată în Peppol prin intermediul acestuia. Fiecare furnizor percepe taxe pentru serviciul său; consultați lista de prețuri a acestuia.
- În Nordlet, codul de TVA al companiei, numărul de înregistrare sau ID-ul Peppol (Cont → Companii → ID Peppol). Fiecare client către care trimiteți documente trebuie să aibă, de asemenea, una dintre aceste date în fișa sa de partener.
Conectarea punctului de acces
Accesați Cont → Conformitate → UE → Punct de acces Peppol, alegeți furnizorului dumneavoastră la Furnizor, completați câmpurile pentru acel furnizor conform descrierii de mai jos și salvați. Lăsați câmpul URL de bază API gol, cu excepția cazului în care furnizorului dumneavoastră v-a furnizat o altă adresă. După salvare, pagina va afișa URL-ul webhook al companiei dumneavoastră: https://api.nordlet.com/v1/peppol/webhooks/{provider}/{companyId}, unde {provider} este recommand, storecove sau e-invoice-be, iar {companyId} este ID-ul companiei dumneavoastră. Fiecare companie din Nordlet are propriul URL de webhook.
Nordlet acceptă un apel webhook doar dacă acesta dovedește că cunoaște secretul dumneavoastră de webhook, prin urmare un apel care nu provine din contul punctului de acces va fi refuzat. Nordlet contactează adresele de internet publice numai atunci când apelează punctul dumneavoastră de acces.
Recommand
- În Recommand, deschideți compania dumneavoastră și copiați ID-ul companiei în câmpul ID cont la punctul de acces.
- În Recommand, creați o cheie API (API key) și copiați cheia și secretul acesteia în câmpurile Cheie API și Secret API.
- Generați un text aleatoriu lung pe care doar dumneavoastră și Recommand îl veți cunoaște și introduceți-l în Secret webhook. Salvați.
- În Recommand, creați un webhook pentru compania dumneavoastră utilizând URL-ul de webhook afișat de Nordlet și același secret de webhook.
Recommand semnează fiecare apel webhook cu acel secret.
Storecove
- În Storecove, creați o entitate juridică (legal entity) pentru compania dumneavoastră, configurată pentru trimitere și primire, și copiați ID-ul acesteia în câmpul ID cont la punctul de acces.
- În Storecove, în secțiunea Chei API (API Keys), creați o cheie API și copiați-o în Cheie API. Lăsați câmpul Secret API gol.
- Generați un text aleatoriu lung și introduceți-l în Secret webhook. Salvați.
- În Storecove, configurați un webhook de tip push (push webhook) cu URL-ul de webhook afișat de Nordlet, protejat prin autentificare de bază HTTP (HTTP Basic authentication): orice nume de utilizator și secretul de webhook drept parolă.
Storecove nu dispune de o interogare pentru starea unui document trimis, astfel încât, în cazul Storecove, starea livrării provine exclusiv din webhook-ul său, iar pagina facturii nu va conține butonul Verifică starea Peppol. Un cont sandbox Storecove trimite pe rețeaua de test Peppol; cheile API de producție sunt furnizate de asistența Storecove.
e-invoice.be
- În aplicația e-invoice.be, în secțiunea Setări API (API Settings), copiați cheia API a companiei dumneavoastră în câmpul Cheie API. Lăsați goale câmpurile ID cont la punctul de acces și Secret API. Salvați.
- Creați un webhook utilizând API-ul e-invoice.be (
POST https://api.e-invoice.be/api/webhooks/) folosind URL-ul de webhook afișat de Nordlet și evenimenteledocument.received,document.sentșidocument.sent.failed. - Copiați parametrul
secretreturnat de API pentru noul webhook în câmpul Secret webhook din Nordlet și salvați din nou.
e-invoice.be semnează fiecare apel webhook cu acel secret. O companie sandbox de pe e-invoice.be trimite prin e-mail documentele pe care altfel le-ar trimite prin rețeaua Peppol.
Trimiterea unei facturi
- Emiteți factura sau nota de credit.
- Verificați ca clientul să aibă un ID Peppol, un cod de TVA sau un număr de înregistrare în fișa sa de partener.
- Pe pagina facturii, în secțiunea Livrare, faceți clic pe Trimite prin Peppol și confirmați. Secțiunea Livrare este afișată pentru facturile emise care nu sunt încă achitate, iar butonul apare doar atunci când punctul de acces este conectat.
Nordlet generează fișierul Peppol și îl predă punctului dumneavoastră de acces. Pagina facturii va afișa apoi o secțiune Livrare Peppol:
| Stare | Semnificație |
|---|---|
| pending | Predat către punctul de acces; punctul de acces al clientului nu l-a confirmat încă |
| delivered | Punctul de acces al clientului a confirmat primirea facturii |
| rejected | Clientul a refuzat factura; motivul este afișat sub stare |
| failed | Factura nu a putut fi livrată; motivul este afișat sub stare atunci când punctul de acces furnizează unul |
Starea se actualizează automat atunci când punctul de acces raportează o modificare prin intermediul webhook-ului său. Opțiunea Verifică starea Peppol solicită imediat starea curentă de la Recommand sau e-invoice.be; în cazul e-invoice.be, aceasta citește și răspunsul clientului la factură, iar un refuz (cod de răspuns RE) este afișat ca respins. O factură respinsă sau eșuată poate fi trimisă din nou după corectarea cauzei. Atunci când punctul de acces refuză direct o factură, de exemplu deoarece clientul nu este înregistrat în rețeaua Peppol, Nordlet afișează motivul, iar factura rămâne netrimisă.
Butonul XML Peppol din partea de sus a paginii facturii descarcă același fișier Peppol fără a-l trimite.
O livrare intracomunitară preia data emisiunii drept dată de livrare și țara clientului drept țară de livrare, conform cerințelor regulilor Peppol.
Primirea facturilor
Atunci când punctul de acces raportează un document primit prin intermediul webhook-ului său, Nordlet descarcă fișierul Peppol de la punctul de acces. Facturile și notele de credit primite de compania dumneavoastră apar în Achiziții → Captură documente, fiind marcate ca primite prin Peppol de la ID-ul Peppol al expeditorului. Nordlet citește direct fișierul Peppol, astfel încât primirea nu consumă credite de recunoaștere a documentelor.
- Deschideți documentul primit.
- Verificați furnizorul, datele și liniile; selectați furnizorul din lista de parteneri sau creați-l.
- Faceți clic pe Salvează ciornă. Nordlet creează o ciornă de factură de achiziție sau o ciornă de notă de credit de achiziție pentru o notă de credit primită, având atașat fișierul Peppol original. Înregistrați-o ca pe orice altă factură de achiziție.
Liniile facturilor de achiziție din Nordlet nu pot avea valori negative. Reducerile și costurile suplimentare aferente întregului document, precum și liniile negative, sunt distribuite proporțional pe liniile care au aceeași cotă de TVA. O sumă pe care nicio linie cu cota sa de TVA nu o poate prelua, cum ar fi un produs returnat la o cotă de TVA pentru care factura nu are nicio altă linie, este afișată într-un al doilea tabel: Linii notă de credit pentru o factură primită sau Linii factură pentru o notă de credit primită. Aceste linii sunt salvate ca un al doilea document pentru același furnizor: o notă de credit de achiziție aferentă noii facturi, numerotată „<număr document>-CR”, sau o factură de achiziție numerotată „<număr document>-INV”. Cele două documente însumate reflectă totalurile documentului primit.
Verificarea dacă un client este înregistrat în Peppol
Metoda POST /v1/peppol/participants/lookup apelată cu un partnerId sau un participantId („<schemă>:
Efectuarea acelorași operațiuni prin intermediul API-ului
| Sarcină | Apel |
|---|---|
| Conectarea punctului de acces | POST /v1/declarations/configs/update cu parametrii system: "peppol" și un obiect config care conține provider (recommand, storecove sau e-invoice-be), accountId, apiKey, apiSecret, webhookSecret și opțional apiBaseUrl |
| Primirea webhook-ului punctului de acces | POST /v1/peppol/webhooks/{provider}/{companyId}, apelat de punctul de acces |
| Descărcarea fișierului Peppol | POST /v1/sales/invoices/peppol-xml |
| Trimiterea | POST /v1/sales/invoices/peppol-send (returnează codul 422 dacă nu există un punct de acces) |
| Citirea stării livrării | POST /v1/sales/invoices/peppol-status (returnează codul 422 pentru Storecove); facturile conțin proprietățile peppolMessageId, peppolStatus, peppolDetail, peppolSentAt, peppolCheckedAt |
| Găsirea documentelor primite | POST /v1/capture/documents/list; documentele primite au valorile provider: "peppol" și senderId |
| Transformarea unui document într-o factură de achiziție | POST /v1/capture/documents/confirm, utilizând parametrul oppositeLines pentru cel de-al doilea document |
Evenimente webhook: sale_invoice.peppol_sent, sale_invoice.peppol_delivered, sale_invoice.peppol_rejected, sale_invoice.peppol_failed și document_capture.peppol_received. Consultați secțiunea Convenții API pentru detalii despre erori, idempotență și webhookuri.