Rechnungen senden und empfangen
Sobald Ihre Frankreich-Konfiguration in der xTool-Web-App den Status Active hat, können Sie Rechnungen über die API austauschen.
Alle Beispiele unten nutzen die öffentliche API (Header x-api-key). Die Frankreich-Konfiguration selbst wird nur in der Web-UI verwaltet — es gibt keinen Endpunkt /api/v2/france/....
Womit Sie arbeiten
| Konzept | Rolle |
|---|---|
| Document | Inhalt der Rechnung (oder Gutschrift) |
| Transaction | Kommunikationsfluss für dieses Dokument (send.france oder receive.france) |
| Event | Etwas, das bereits geschehen ist (gesendet, empfangen, akzeptiert, …) |
| Action | Etwas, das Sie xTool ausführen lassen (eingehende Rechnung genehmigen / ablehnen) |
| Payment | Geldbewegung; zur Zahlungsmeldung einer Rechnungsdokument zuordnen |
| Tax report | Regulatorische Meldeentität (von xTool erstellt; per API lesbar) |
Actions ≠ Events. Sie erzeugen Actions. xTool speichert Events als Historie.
Voraussetzungen
- Status der Frankreich-Konfiguration ist Active (Web-UI → Channels → France).
- Zum Senden von Rechnungen darf die Konfiguration nicht nur Empfang sein (
annuaire_only). - API-Schlüssel mit Berechtigung zum Versand über Frankreich.
Unterstützte Formate für den Frankreich-Kanal:
| Formatcode | Verwendung |
|---|---|
france_cius.invoice.1_0.xml_ubl.en16931 |
France-CIUS-Rechnung (UBL) |
france_cius.invoice.1_0.xml_cii.en16931 |
France-CIUS-Rechnung (CII) |
france_cius.credit_note.1_0.xml_ubl |
France-CIUS-Gutschrift |
peppol_bis_billing_france.invoice.3_0.xml_ubl |
Peppol BIS Billing France Rechnung (explizit) |
peppol_bis_billing_france.credit_note.3_0.xml_ubl |
Peppol BIS Billing France Gutschrift (explizit) |
xtool.invoice.1_0 |
xTool-Rechnung (JSON) |
xtool.credit_note.1_0 |
xTool-Gutschrift (JSON) |
Rechnung senden (Outbound)
1. Dokument hochladen
Option A — XML
Body: rohes France-CIUS-XML (oder anderes unterstütztes Format). Vollständiges Testbeispiel: API-Integration — Beispiel France CIUS UBL.
Option B — JSON-Modell
Für France-CIUS-Modelle setzen Sie "format": "france_cius.invoice.1_0.xml_ubl.en16931" und geben Sie die erforderlichen Frankreich-Felder an (z. B. document.profile_id).
Die Antwort enthält die Dokument-id. Behalten Sie sie für den nächsten Schritt.
2. Über Frankreich senden
Die Antwort enthält die angelegte Transaktion (id, type, status).
Typische Prüfungen auf der Sendeseite, wenn etwas fehlschlägt:
- Frankreich-Konfiguration ist Active und hat ein Provider-Konto
- Dokument ist gültig
- Format unterstützt den Frankreich-Kanal
- Rechnungsregeln (z. B. Währung EUR, Länge der Rechnungsnummer, Käufer-PIN wo erforderlich)
3. Transaktion verfolgen
Oder nur Events auflisten:
Eine an ein Event angehängte Datei herunterladen:
Ein einzelnes Event abrufen:
Häufige Event-Typen auf der Sendeseite:
| Event-Typ | Bedeutung |
|---|---|
france.invoice.prepare |
Für den Provider vorbereitet |
france.invoice.send |
An den Frankreich-Kanal übermittelt |
france.invoice.acknowledged / approved / partially_approved / disputed / refused / paid |
Lebenszyklus-Updates aus dem Netzwerk |
france.tax_report.send / acknowledged / registered |
Zugehörige Steuerbericht-Verarbeitung |
Diese Events können Sie nicht selbst anlegen — sie erscheinen im Lauf des Prozesses.
Rechnung empfangen (Inbound)
Eingehende Rechnungen werden von xTool angelegt, wenn der Frankreich-Kanal sie liefert. Ihre Integration findet und verarbeitet sie.
1. Eingehende Dokumente finden
Oder Frankreich-Empfangs-Transaktionen finden (optional nach Dokument filtern):
2. Rechnung lesen
Optionale Bestätigung:
3. Empfangs-Transaktion prüfen
Der Empfangs-Transaktionstyp ist receive.france. Das Event france.invoice.receive trägt typischerweise die eingehenden Rechnungsdateien.
Genehmigen, ablehnen, anfechten oder Zahlung erfassen
Käufer-Lifecycle-Actions (acknowledge / approve / partially_approve / dispute / refuse / payment_sent) sind nur bei receive.france verfügbar.
Wo unten CDV-Codes stehen, gelten sie für den B2B-Inland-Lifecycle (CDAR). B2C und B2B grenzüberschreitend nutzen dieselben xTool-Actions/Events, erzeugen diese CDV-Codes aber möglicherweise nicht.
Zahlung gesendet (france.invoice.payment_sent, receive.france) markiert die Zahlung im Kanal als übermittelt. Es wird kein Payment-Entity erstellt.
Zahlung empfangen (france.invoice.payment_received, send.france) erstellt eine Zahlung mit Zuordnung zum Transaktionsdokument (wie POST /api/v2/payments mit einer Allocation). Betrag und Währung kommen standardmäßig aus dem zahlbaren Dokumentbetrag; optional können amount, currency und paid_at übergeben werden.
Zur Kenntnis nehmen (CDV 204, B2B Inland)
Genehmigen (CDV 205, B2B Inland)
Teilweise genehmigen (CDV 206, B2B Inland — amount und reason Pflicht; amount_code optional, Default MAPTTC)
Anfechten (CDV 207, B2B Inland)
Ablehnen (reason ist Pflicht; reason_code ist optional)
Zahlung gesendet (nur receive.france — CDV 211, B2B Inland)
Zahlung empfangen (nur send.france — CDV 212, B2B Inland)
Optionale Überschreibungen für Zahlung empfangen:
Vorhandene Actions auflisten:
Bei Erfolg für Käufer-Lifecycle-Actions speichert xTool ein passendes Event (z. B. france.invoice.approved oder france.invoice.refused). Versuchen Sie nicht, diese Events über die API anzulegen.
Zahlung erfassen
Zahlungen sind eigene Entitäten. Ordnen Sie sie dem Rechnungsdokument zu, damit xTool den Zahlungsstatus an den Frankreich-Provider synchronisieren kann, wenn für dieses Dokument eine Transaktion send.france existiert.
Als Shortcut können Sie auch die Action france.invoice.payment_received oben verwenden; sie erstellt eine Zahlung für ein ausgehendes Rechnungsdokument.
Beispiel Teilzahlung:
Spätere Zahlung für den Rest:
Weitere Zahlungs-Endpunkte:
| Methode | Pfad |
|---|---|
GET |
/api/v2/payments |
GET |
/api/v2/payments/{payment_id} |
PATCH |
/api/v2/payments/{payment_id} |
DELETE |
/api/v2/payments/{payment_id}/delete |
Nach Erfassung des Zahlungseingangs bei einer ausgehenden Rechnung erwarten Sie Event france.invoice.payment_received auf der zugehörigen Transaktion. Mehr dazu: Zahlungen.
Steuerberichte
Steuerberichte werden von xTool aus der Frankreich-Verarbeitung erzeugt. Die API ist für Clients nur lesend:
Jeder Bericht kann Quellen auflisten (document, payment, …).
Wie die Meldung zu Szenarien passt:
| Szenario | Rechnungsaustausch | Steuermeldung |
|---|---|---|
| Inland B2B | send.france / receive.france |
Meist an die Rechnungsverarbeitung gekoppelt |
| Grenzüberschreitend B2B | send.france / receive.france |
Oft später aggregiert aus geeigneten Rechnungen und Zahlungen |
| B2C | send.france |
Periodisch aggregiert (kein eingehender B2C-E-Invoice-Flow hier) |
Mehr dazu: Steuerberichte.
Kurzreferenz
Outbound-Checkliste
- Frankreich-Konfiguration Active (Web-UI)
POST /api/v2/documents/upload/xmloder/upload/modelPOST /api/v2/documents/{id}/sendmit{ "transaction_type": "send.france" }GET /api/v2/transactions/{tx_id}?include=eventspollen- Optional:
POST /api/v2/paymentsmit Zuordnungen
Inbound-Checkliste
GET /api/v2/documents?direction=inboundund/oderGET /api/v2/transactions?transaction_type=receive.france- XML / Modell abrufen; optional
ack POST /api/v2/transactions/{tx_id}/actions— genehmigen, ablehnen oder andere Käufer-Lifecycle-Actions- Optional: Zahlungen und Tax-Report-GETs
Nützliche Includes
include=events lädt auch Event-Dateien an verschachtelten Events.
Ausführlicher Integratoren-Leitfaden (Auth, Account-Matching, Polling, Endpunkt-Übersicht): API-Integration.