We can't find the internet
Attempting to reconnect
Something went wrong!
Attempting to reconnect
API-Referenz
REST API für die Integration mit ERP-Systemen und anderen Anwendungen.
Basis-URL: https://e-document.io/api/v1
Alle Endpoints erfordern einen gültigen API-Key im Header.
Authentifizierung
Alle API-Anfragen müssen einen gültigen API-Key im HTTP-Header enthalten:
X-API-Key: edoc_IhrApiKeyHier
API-Keys können im Dashboard unter API-Keys erstellt werden. Der Key beginnt immer mit dem Präfix edoc_.
Alle Endpoints erfordern zusätzlich den Parameter org_id zur Identifikation der Organisation.
Eingang
POST
/api/v1/eingang/upload
Dokument in den Eingang hochladen. Akzeptiert PDF- und XML-Dateien.
Parameters
| Name | Typ | Beschreibung |
|---|---|---|
file | multipart | PDF- oder XML-Datei (Pflicht) |
org_id | string | Organisations-ID (Pflicht) |
sender_email | string | E-Mail des Absenders (optional) |
Beispiel
curl -X POST https://e-document.io/api/v1/eingang/upload \
-H "X-API-Key: edoc_IhrApiKey" \
-F "file=@rechnung.xml" \
-F "org_id=ihre-org-id"
Response 200
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"filename": "rechnung.xml",
"sender_name": "Lieferant GmbH",
"sender_email": null,
"source": "api",
"content_type": "application/xml",
"file_size": 12345,
"uploaded_at": "2025-01-15T10:30:00Z"
}
sender_name wird automatisch aus der Rechnung extrahiert, falls vorhanden. source ist bei API-Uploads immer "api".
Rechnungsversand
ERP-Integration
Dieser Endpunkt ist ideal für die Anbindung von ERP-Systemen (SAP, Microsoft Dynamics, etc.). Senden Sie IDoc INVOIC02 oder XRechnung-XML direkt aus Ihrem ERP-System — e-document.io übernimmt Konvertierung, Formatierung und Zustellung.
POST
/api/v1/invoices/send
Rechnung konvertieren und direkt an einen Geschäftspartner versenden. Akzeptiert IDoc INVOIC02, XRechnung (CII/UBL) und ZUGFeRD als base64-kodiertes XML. Der Versand erfolgt automatisch über Peppol oder E-Mail.
Request Body JSON
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
document_type | string | Dokumenttyp (Pflicht): idoc, xrechnung, ubl, zugferd, xml |
xml | string | Base64-kodiertes XML-Dokument (Pflicht) |
pdf | string | Base64-kodiertes PDF (optional, für ZUGFeRD) |
filename | string | Dateiname (optional, wird automatisch generiert) |
recipient |
object |
Empfänger-Identifikation (Pflicht). Eines der folgenden Felder:
|
Beispiel: IDoc aus SAP versenden
curl -X POST https://e-document.io/api/v1/invoices/send \
-H "X-API-Key: edoc_IhrApiKey" \
-H "Content-Type: application/json" \
-d '{
"org_id": "ihre-org-id",
"document_type": "idoc",
"xml": "PD94bWwgdmVyc2l...base64...==",
"filename": "INVOIC02_0001234.xml",
"recipient": {
"partner_number": "KD-001"
}
}'
Response 202
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"status": "queued",
"filename": "INVOIC02_0001234_xrechnung.xml",
"document_type": "idoc",
"recipient": {
"partner_id": "a778-...",
"partner_name": "Kunde GmbH",
"channel": "peppol",
"invoice_format": "cii"
},
"pdf_attached": false,
"message": "Dokument wurde zur Versendung eingereiht."
}
Versandkanal: Wird automatisch ermittelt. Peppol wird bevorzugt, wenn der Partner Peppol-fähig ist. Andernfalls per E-Mail.
Formatkonvertierung: IDoc wird automatisch in XRechnung CII konvertiert. Beim Versand wird das Format des Geschäftspartners berücksichtigt (CII, UBL oder ZUGFeRD).
Status prüfen: Verwenden Sie GET /api/v1/ausgang/:id mit der zurückgegebenen ID, um den Versandstatus abzufragen.
Empfänger auflösen
Der Empfänger wird in folgender Priorität aufgelöst:
| Feld | Beschreibung |
|---|---|
partner_id |
Direkte Zuordnung über die interne Geschäftspartner-ID |
partner_number |
Suche über die GP-Nummer aus Ihrem ERP-System (z.B. SAP-Kundennummer) |
peppol_id |
Suche über die Peppol-Teilnehmer-ID (z.B. DE367927617) |
email |
Suche über E-Mail-Adresse. Wird kein Partner gefunden, wird automatisch ein neuer angelegt. |
Unterstützte Dokumenttypen
document_type | Beschreibung | Konvertierung |
|---|---|---|
idoc |
SAP IDoc INVOIC02 | Automatisch in XRechnung CII. Original wird archiviert. Beim Versand wird das bevorzugte Format des Empfängers verwendet. |
xrechnung |
XRechnung CII-Format | Keine Konvertierung, wird direkt versendet. |
ubl |
XRechnung UBL-Format | Keine Konvertierung, wird direkt versendet. |
zugferd |
ZUGFeRD/Factur-X | Keine Konvertierung. Optional: PDF als separaten Parameter mitsenden. |
Geschäftspartner
Geschäftspartner (Debitoren/Kreditoren) verwalten. Die partner_number dient als eindeutiger Schlüssel für die ERP-Integration (z.B. SAP KUNNR).
Endpunkte
| Methode | Endpunkt | Beschreibung |
|---|---|---|
GET |
/api/v1/partners?org_id=… |
Partner auflisten (paginiert) |
POST |
/api/v1/partners |
Neuen Partner anlegen |
PUT |
/api/v1/partners/upsert |
Anlegen/Aktualisieren via partner_number (ERP-Sync) |
GET |
/api/v1/partners/:id |
Einzelnen Partner abrufen |
PUT |
/api/v1/partners/:id |
Partner aktualisieren |
DELETE |
/api/v1/partners/:id |
Partner löschen |
Upsert (empfohlen für ERP-Sync)
PUT /api/v1/partners/upsert — Legt einen Partner an oder aktualisiert ihn anhand der partner_number. Ideal für automatische Stammdaten-Synchronisation.
curl -X PUT https://app.e-document.io/api/v1/partners/upsert \
-H "Content-Type: application/json" \
-H "X-API-Key: edoc_IhrApiKeyHier" \
-d '{"org_id":"ihre-org-id","partner_number":"0000001234",
"name":"Musterfirma GmbH","company":"Einkauf",
"email":"rechnung@musterfirma.de",
"invoice_format":"cii","status":"active"}'
Response (201 Created / 200 Updated)
{
"data": {
"id": "a1b2c3d4-...",
"partner_number": "0000001234",
"name": "Musterfirma GmbH",
"email": "rechnung@musterfirma.de",
"peppol_capable": false,
"status": "active",
"invoice_format": "cii"
},
"action": "created"
}
Felder
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
org_id |
string | ✓ | Mandanten-ID |
name |
string | ✓ | Name des Geschäftspartners |
partner_number |
string (max 10) | ✓ (Upsert) | Eindeutiger Schlüssel, z.B. SAP KUNNR |
company |
string | Firma / Zusatz | |
email |
string | E-Mail-Adresse (Fallback-Versandkanal) | |
peppol_id |
string | Peppol-Teilnehmer-ID | |
peppol_scheme |
string | Peppol-Schema (z.B. 0204) | |
invoice_format |
string | cii | ubl | zugferd (Standard: cii) |
|
status |
string | active | inactive (Standard: active) |
Partner auflisten
GET /api/v1/partners?org_id=… — Paginierte Liste mit optionalen Filtern.
| Parameter | Beschreibung |
|---|---|
page | Seitennummer (Standard: 1) |
per_page | Einträge pro Seite (Standard: 20, max: 100) |
search | Freitext-Suche über Name, Firma, GP-Nummer |
status | active | inactive |
peppol | capable | not_found | pending | none |
Ausgang
POST
/api/v1/ausgang/upload
Dokument in den Ausgang hochladen. Akzeptiert PDF-, XML- und JSON-Dateien. SAP IDoc INVOIC02-Dateien werden automatisch erkannt und in XRechnung (CII) konvertiert.
Parameters
| Name | Typ | Beschreibung |
|---|---|---|
file | multipart | PDF-, XML- oder JSON-Datei (Pflicht) |
org_id | string | Organisations-ID (Pflicht) |
Beispiel
curl -X POST https://e-document.io/api/v1/ausgang/upload \
-H "X-API-Key: edoc_IhrApiKey" \
-F "file=@ausgangsrechnung.pdf" \
-F "org_id=ihre-org-id"
Response 200
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"filename": "ausgangsrechnung.pdf",
"content_type": "application/pdf",
"file_size": 54321,
"status": "pending",
"document_type": "pdf",
"uploaded_at": "2025-01-15T10:35:00Z"
}
GET
/api/v1/ausgang
Liste aller Ausgangs-Dokumente abrufen. Unterstützt optionalen Status-Filter.
Query Parameters
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
status | string | Status-Filter (optional): pending, sending, gesendet, fehlerhaft, archiviert |
page | integer | Seitennummer (Standard: 1) |
per_page | integer | Einträge pro Seite (Standard: 20, Max: 100) |
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/ausgang?org_id=ihre-org-id&status=pending"
Response 200
{
"documents": [
{
"id": "550e8400-...",
"filename": "ausgangsrechnung.pdf",
"content_type": "application/pdf",
"file_size": 54321,
"status": "pending",
"document_type": "pdf",
"recipient_email": "partner@example.com",
"storecove_guid": null,
"sent_at": null,
"error_details": null,
"processed_at": null,
"inserted_at": "2025-01-15T10:35:00Z",
"business_partner": {
"id": "...",
"name": "Empfänger GmbH",
"partner_number": "GP-001"
}
}
],
"total": 8,
"page": 1,
"per_page": 20
}
storecove_guid ist gesetzt, wenn die Zustellung über das Peppol-Netzwerk erfolgt ist. document_type: "pdf", "xrechnung", "zugferd" oder "idoc".
GET
/api/v1/ausgang/:id
Details eines einzelnen Ausgangs-Dokuments abrufen.
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/ausgang/550e8400-...?org_id=ihre-org-id"
GET
/api/v1/ausgang/:id/download
Ausgangs-Dokument herunterladen. Redirect zu einer signierten Download-URL.
Beispiel
curl -L -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/ausgang/550e8400-.../download?org_id=ihre-org-id" \
-o ausgangsrechnung.pdf
Hinweis: -L folgt dem Redirect zur Download-URL.
Erfolgreich
GET
/api/v1/erfolgreich
Liste aller erfolgreich verarbeiteten Dokumente abrufen.
Query Parameters
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
page | integer | Seitennummer (Standard: 1) |
per_page | integer | Einträge pro Seite (Standard: 20, Max: 100) |
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/erfolgreich?org_id=ihre-org-id"
Response 200
{
"documents": [
{
"id": "550e8400-...",
"filename": "rechnung.xml",
"content_type": "application/xml",
"file_size": 12345,
"status": "bereitgestellt",
"source": "email",
"sender_name": "Lieferant GmbH",
"sender_email": "rechnung@lieferant.de",
"processed_at": "2025-01-15T10:31:00Z",
"business_partner": {
"id": "...",
"name": "Lieferant GmbH",
"partner_number": "L-0042"
},
"has_xml": true,
"has_ubl": true
}
],
"total": 42,
"page": 1,
"per_page": 20
}
source: "upload", "api", "email" oder "peppol". partner_number ist die GP-Nummer aus Ihrem ERP-System.
GET
/api/v1/erfolgreich/:id
Details eines einzelnen Dokuments abrufen.
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/erfolgreich/550e8400-...?org_id=ihre-org-id"
GET
/api/v1/erfolgreich/:id/download
Dokument herunterladen. Redirect zu einer signierten Download-URL.
Query Parameters
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
type |
string |
original (Standard), xml (extrahiertes XML), ubl (konvertiertes UBL)
|
Beispiel
curl -L -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/erfolgreich/550e8400-.../download?org_id=ihre-org-id&type=xml" \
-o rechnung.xml
Hinweis: -L folgt dem Redirect zur Download-URL.
POST
/api/v1/erfolgreich/:id/abholen
Dokument als abgeholt markieren. Das Dokument wird ins Archiv verschoben.
Request Body JSON
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
Beispiel
curl -X POST -H "X-API-Key: edoc_IhrApiKey" \
-H "Content-Type: application/json" \
-d '{"org_id": "ihre-org-id"}' \
"https://e-document.io/api/v1/erfolgreich/550e8400-.../abholen"
Response 200
{"id": "550e8400-...", "status": "abgeholt"}
Fehlerhaft
GET
/api/v1/fehlerhaft
Liste aller fehlerhaften Dokumente abrufen.
Query Parameters
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
page | integer | Seitennummer (Standard: 1) |
per_page | integer | Einträge pro Seite (Standard: 20, Max: 100) |
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/fehlerhaft?org_id=ihre-org-id"
Response 200
{
"documents": [
{
"id": "550e8400-...",
"filename": "fehlerhafte-rechnung.xml",
"status": "fehlerhaft",
"source": "upload",
"sender_name": null,
"sender_email": null,
"error_details": "BR-01: An Invoice shall have...",
"business_partner": null
}
],
"total": 5,
"page": 1,
"per_page": 20
}
GET
/api/v1/fehlerhaft/:id
Details eines fehlerhaften Dokuments inkl. Fehlerdetails abrufen.
Beispiel
curl -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/fehlerhaft/550e8400-...?org_id=ihre-org-id"
GET
/api/v1/fehlerhaft/:id/download
Original-Dokument herunterladen.
Beispiel
curl -L -H "X-API-Key: edoc_IhrApiKey" \
"https://e-document.io/api/v1/fehlerhaft/550e8400-.../download?org_id=ihre-org-id" \
-o dokument.xml
POST
/api/v1/fehlerhaft/:id/archivieren
Fehlerhaftes Dokument archivieren.
Request Body JSON
| Name | Typ | Beschreibung |
|---|---|---|
org_id | string | Organisations-ID (Pflicht) |
Beispiel
curl -X POST -H "X-API-Key: edoc_IhrApiKey" \
-H "Content-Type: application/json" \
-d '{"org_id": "ihre-org-id"}' \
"https://e-document.io/api/v1/fehlerhaft/550e8400-.../archivieren"
Response 200
{"id": "550e8400-...", "status": "archiviert"}
Fehlerbehandlung
Die API gibt bei Fehlern einen entsprechenden HTTP-Status und eine JSON-Fehlermeldung zurück:
| Status | Beschreibung | Beispiel |
|---|---|---|
| 400 | Ungültige Anfrage | {"error": "Missing org_id parameter"} |
| 401 | Nicht authentifiziert | {"error": "Invalid API key"} |
| 404 | Nicht gefunden | {"error": "Document not found"} |
| 422 | Validierungsfehler | {"error": "Validation failed"} |
| 502 | Serverfehler | {"error": "S3 upload failed"} |