Nordlet

← Dokumentation / Leitfäden

Rechnungen über Peppol senden und empfangen

Verbinden Sie den Peppol-Zugangspunkt Ihres Unternehmens (Recommand, Storecove oder e-invoice.be) mit Nordlet, senden Sie Rechnungen und Gutschriften über Peppol, verfolgen Sie deren Zustellung und verarbeiten Sie empfangene E-Invoices zu Eingangsrechnungen.

Peppol ist das europäische Netzwerk für den Austausch strukturierter E-Invoices zwischen Unternehmen und Behörden. Jede Rechnung wandert vom Zugangspunkt des Absenders zum Zugangspunkt des Empfängers. Nordlet erstellt Rechnungen und Gutschriften im Format Peppol BIS Billing 3.0 und wickelt deren Versand sowie Empfang über das Zugangspunktkonto Ihres Unternehmens ab.

Peppol gibt zwar vor, wie Zugangspunkte Dokumente untereinander austauschen, legt jedoch nicht fest, wie Ihre Software mit Ihrem eigenen Zugangspunkt kommuniziert: Jeder Anbieter verfügt über eine eigene API. Nordlet unterstützt die folgenden Anbieter:

Anbieter Senden Zustellstatus Empfangen
Recommand ja per Webhook und auf Anfrage ja
Storecove ja nur per Webhook ja
e-invoice.be ja per Webhook und auf Anfrage ja

Ohne Zugangspunkt erstellt Nordlet dennoch für jede ausgestellte Rechnung und Gutschrift die Peppol-Datei, die Sie herunterladen und auf anderem Wege weiterleiten können. Es findet dabei jedoch kein automatischer Versand oder Empfang statt.

Voraussetzung

  • Ein Konto bei einem der oben genannten Anbieter, über das Ihr Unternehmen bei Peppol registriert ist. Jeder Anbieter berechnet für seinen Service Gebühren; beachten Sie hierzu die jeweilige Preisliste.
  • Die USt-IdNr., Steuernummer oder Peppol-ID des Unternehmens in Nordlet (unter Einstellungen → Unternehmen → Peppol-ID). Auch jeder Ihrer Kunden benötigt eine dieser Angaben auf seiner Partnerkarte.

Einrichten des Zugangspunkts

Öffnen Sie Einstellungen → Compliance → EU → Peppol-Zugangspunkt, wählen Sie Ihren Anbieter unter Anbieter, füllen Sie die Felder für diesen Anbieter wie nachfolgend beschrieben aus und speichern Sie die Änderungen. Lassen Sie das Feld API-Basis-URL leer, es sei denn, Ihr Anbieter hat Ihnen eine abweichende Adresse genannt. Nach dem Speichern zeigt die Seite die Webhook-URL Ihres Unternehmens an: https://api.nordlet.com/v1/peppol/webhooks/{provider}/{companyId}, wobei {provider} für recommand, storecove oder e-invoice-be und {companyId} für die ID Ihres Unternehmens steht. Jedes Unternehmen in Nordlet verfügt über eine eigene Webhook-URL.

Nordlet akzeptiert Webhook-Aufrufe nur dann, wenn das korrekte Webhook-Geheimnis nachgewiesen wird. Aufrufe, die nicht von Ihrem Zugangspunktkonto stammen, werden abgelehnt. Nordlet kontaktiert öffentliche Internetadressen ausschließlich beim Aufruf Ihres Zugangspunkts.

Recommand

  1. Öffnen Sie Ihr Unternehmen in Recommand und kopieren Sie dessen Unternehmens-ID in das Feld Konto-ID am Zugangspunkt.
  2. Erstellen Sie in Recommand einen API-Schlüssel und übertragen Sie den Schlüssel sowie das dazugehörige Geheimnis in die Felder API-Schlüssel und API-Geheimnis.
  3. Denken Sie sich einen langen, zufälligen Text aus, der nur Ihnen und Recommand bekannt ist, und tragen Sie diesen unter Webhook-Geheimnis ein. Speichern Sie die Eingaben.
  4. Erstellen Sie in Recommand einen Webhook für Ihr Unternehmen. Verwenden Sie dabei die von Nordlet angezeigte Webhook-URL sowie dasselbe Webhook-Geheimnis.

Recommand signiert jeden Webhook-Aufruf mit diesem Geheimnis.

Storecove

  1. Legen Sie in Storecove eine rechtliche Einheit (legal entity) für Ihr Unternehmen an, die zum Senden und Empfangen berechtigt ist, und kopieren Sie deren ID in das Feld Konto-ID am Zugangspunkt.
  2. Erstellen Sie in Storecove unter API-Schlüssel (API Keys) einen API-Schlüssel und kopieren Sie diesen in das Feld API-Schlüssel. Lassen Sie das Feld API-Geheimnis leer.
  3. Denken Sie sich einen langen, zufälligen Text aus und tragen Sie diesen unter Webhook-Geheimnis ein. Speichern Sie die Eingaben.
  4. Richten Sie in Storecove einen Push-Webhook mit der von Nordlet angezeigten Webhook-URL ein. Schützen Sie diesen durch HTTP-Basisauthentifizierung: Ein beliebiger Benutzername und das Webhook-Geheimnis als Passwort.

Da Storecove keinen Abruf-Endpunkt für den Status gesendeter Dokumente bereitstellt, erfolgt die Statusaktualisierung hier ausschließlich über den Webhook, weshalb auf der Rechnungsseite keine Schaltfläche Peppol-Status prüfen angezeigt wird. Ein Sandbox-Konto von Storecove versendet über das Peppol-Testnetzwerk; Produktions-API-Schlüssel erhalten Sie direkt vom Storecove-Support.

e-invoice.be

  1. Kopieren Sie in der e-invoice.be-App unter API-Einstellungen den API-Schlüssel Ihres Unternehmens in das Feld API-Schlüssel. Lassen Sie die Felder Konto-ID am Zugangspunkt und API-Geheimnis leer. Speichern Sie die Änderungen.
  2. Erstellen Sie über die e-invoice.be-API (POST https://api.e-invoice.be/api/webhooks/) einen Webhook mit der von Nordlet angezeigten Webhook-URL sowie den Ereignissen document.received, document.sent und document.sent.failed.
  3. Kopieren Sie den Wert secret, den die API für den neuen Webhook zurückgibt, in das Feld Webhook-Geheimnis in Nordlet und speichern Sie erneut.

e-invoice.be signiert jeden Webhook-Aufruf mit diesem Geheimnis. Ein Sandbox-Unternehmen bei e-invoice.be versendet Dokumente, die andernfalls über Peppol verschickt würden, stattdessen per E-Mail.

Senden einer Rechnung

  1. Stellen Sie die Rechnung oder Gutschrift aus.
  2. Prüfen Sie, ob der Kunde auf seiner Partnerkarte über eine Peppol-ID, eine USt-IdNr. oder eine Steuernummer verfügt.
  3. Klicken Sie auf der Rechnungsseite im Bereich Zustellung auf Über Peppol senden und bestätigen Sie den Vorgang. Der Bereich „Zustellung“ wird bei noch nicht bezahlten Ausgangsrechnungen eingeblendet, und die Schaltfläche erscheint nur, wenn ein Zugangspunkt verbunden ist.

Nordlet erstellt die Peppol-Datei und übergibt sie an Ihren Zugangspunkt. Auf der Rechnungsseite erscheint daraufhin der Bereich Peppol-Zustellung:

Status Bedeutung
pending An den Zugangspunkt übergeben; der Zugangspunkt des Kunden hat den Empfang noch nicht bestätigt.
delivered Der Zugangspunkt des Kunden hat den Empfang der Rechnung bestätigt.
rejected Der Kunde hat die Rechnung abgelehnt; der Grund wird unter dem Status angezeigt.
failed Die Rechnung konnte nicht zugestellt werden; sofern der Zugangspunkt einen Grund nennt, wird dieser unter dem Status angezeigt.

Der Status aktualisiert sich automatisch, sobald der Zugangspunkt eine Änderung via Webhook meldet. Über Peppol-Status prüfen fragen Sie den aktuellen Status bei Recommand oder e-invoice.be sofort manuell ab. Bei e-invoice.be wird dabei auch die Antwort des Kunden eingelesen, wobei eine Ablehnung (Antwortcode RE) als „abgelehnt“ angezeigt wird. Eine abgeholste oder fehlgeschlagene Rechnung kann nach Behebung der Ursache erneut versendet werden. Wenn der Zugangspunkt eine Rechnung direkt abweist, etwa weil der Kunde nicht bei Peppol registriert ist, zeigt Nordlet den entsprechenden Grund an, und die Rechnung verbleibt im Status „nicht gesendet“.

Über die Schaltfläche Peppol-XML oben auf der Rechnungsseite können Sie die unveränderte Peppol-Datei herunterladen, ohne sie zu versenden.

Bei innergemeinschaftlichen Lieferungen wird das Rechnungsdatum als Lieferdatum und das Land des Kunden als Zielland der Lieferung verwendet, wie es die Peppol-Vorschriften verlangen.

Empfangen von Rechnungen

Sobald der Zugangspunkt ein empfangenes Dokument über seinen Webhook meldet, lädt Nordlet die Peppol-Datei vom Zugangspunkt herunter. Von Ihrem Unternehmen empfangene Rechnungen und Gutschriften erscheinen unter Einkauf → Begerfassung, gekennzeichnet als über Peppol empfangen (anhand der Peppol-ID des Absenders). Da Nordlet die Peppol-Datei eigenständig ausliest, werden hierfür keine Credits für die Begerkennung verbraucht.

  1. Öffnen Sie das empfangene Dokument.
  2. Überprüfen Sie den Lieferanten, die Daten sowie die Positionen; wählen Sie den Lieferanten aus Ihren Partnern aus oder legen Sie ihn neu an.
  3. Klicken Sie auf Entwurf speichern. Nordlet erstellt einen Entwurf für eine Eingangsrechnung (bzw. eine Eingangs-Gutschrift im Falle einer erhaltenen Gutschrift), an den die originale Peppol-Datei anhängt ist. Verbuchen Sie das Dokument wie gewohnt.

Positionen von Eingangsrechnungen dürfen in Nordlet nicht negativ sein. Rabatte, Zuschläge für das gesamte Dokument sowie negative Positionen werden anteilig auf die Positionen mit demselben Steuersatz verteilt. Beträge, die von keiner Position desselben Steuersatzes aufgenommen werden können (wie etwa ein zurückgesandter Artikel, für den es auf der Rechnung keine weitere Position mit diesem Steuersatz gibt), werden in einer zweiten Tabelle angezeigt: Gutschriftspositionen bei einer empfangenen Rechnung oder Rechnungspositionen bei einer empfangenen Gutschrift. Diese Positionen werden als separates zweites Dokument für denselben Lieferanten gespeichert: als Eingangs-Gutschrift mit der Nummer „-CR“ oder als Eingangsrechnung mit der Nummer „-INV“. Beide Dokumente zusammen ergeben die Gesamtsummen des empfangenen Dokuments.

Prüfen, ob ein Kunde bei Peppol registriert ist

Ein Aufruf von POST /v1/peppol/participants/lookup mit einer partnerId oder einer participantId (Format: „:“) fragt das Peppol-Netzwerk ab, ob der Empfänger registriert ist und welche Dokumente er akzeptiert. Diese Funktion arbeitet auch ohne angebundenen Zugangspunkt.

Automatisierung über die API

Aufgabe Aufruf
Zugangspunkt verbinden POST /v1/declarations/configs/update mit system: "peppol" und einem config-Objekt, das provider (recommand, storecove oder e-invoice-be), accountId, apiKey, apiSecret, webhookSecret sowie optional apiBaseUrl enthält
Webhook des Zugangspunkts empfangen POST /v1/peppol/webhooks/{provider}/{companyId}, wird vom Zugangspunkt aufgerufen
Peppol-Datei herunterladen POST /v1/sales/invoices/peppol-xml
Senden POST /v1/sales/invoices/peppol-send (gibt ohne angebundenen Zugangspunkt den Fehler 422 zurück)
Zustellstatus abrufen POST /v1/sales/invoices/peppol-status (gibt bei Storecove den Fehler 422 zurück); Rechnungen enthalten die Felder peppolMessageId, peppolStatus, peppolDetail, peppolSentAt und peppolCheckedAt
Empfangene Dokumente abrufen POST /v1/capture/documents/list; empfangene Dokumente besitzen die Attribute provider: "peppol" und senderId
Dokument in eine Eingangsrechnung umwandeln POST /v1/capture/documents/confirm, unter Verwendung von oppositeLines für das zweite Dokument

Webhook-Ereignisse: sale_invoice.peppol_sent, sale_invoice.peppol_delivered, sale_invoice.peppol_rejected, sale_invoice.peppol_failed und document_capture.peppol_received. Hinweise zu Fehlern, Idempotenz und Webhooks finden Sie unter API-Konventionen.