Skip to main content

Übersicht

comstruct bietet flexible Rechnungsverarbeitungsfunktionen, die verschiedene Integrationsmuster unterstützen. Dieser Leitfaden behandelt die häufigsten Integrationsszenarien und Best Practices für deren Implementierung.

Integrationsmuster

Direkter Upload

Lieferanten laden Rechnungen direkt zur KI-gestützten Verarbeitung in comstruct hoch.

E-Mail-Weiterleitung

Per E-Mail empfangene Rechnungen werden automatisch an comstruct weitergeleitet.

ERP-Export

Verarbeitete Rechnungen werden zur Buchung an ERP-Systeme exportiert.

SAP-Rückmeldung

Bidirektionale Synchronisation mit SAP für Rechnungsstatus-Aktualisierungen.

Muster 1: Direkter Lieferanten-Upload

Das häufigste Muster, bei dem Lieferanten Rechnungen direkt über die API hochladen.

Funktionsweise

Implementierung

curl -X POST "https://api.comstruct.com/v1/invoices/custom" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/pdf" \
  --data-binary @rechnung.pdf

Antwort

{
  "success": true,
  "data": {
    "id": "123",
    "external_id": "RE-2024-001",
    "invoice_number": "RE-2024-1234",
    "supplier_name": "Beispiel GmbH",
    "gross_amount": 1190.00,
    "net_amount": 1000.00,
    "tax_amount": 190.00,
    "status": "OPEN"
  }
}

Best Practices

  • Verwenden Sie PDF-Format für beste KI-Parsing-Ergebnisse
  • Verwenden Sie klare, lesbare Rechnungslayouts
  • Stellen Sie sicher, dass PDFs nicht passwortgeschützt sind
  • Maximale Dateigröße: 32MiB

Muster 2: E-Mail-basierte Verarbeitung

Per E-Mail empfangene Rechnungen können zur Verarbeitung an comstruct weitergeleitet werden.

Funktionsweise

Implementierung

curl -X POST "https://api.comstruct.com/v1/invoices/email" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/octet-stream" \
  --data-binary @email_inhalt

E-Mail-Verarbeitungsfunktionen

  • Automatische Anhang-Extraktion
  • Unterstützung für mehrere Rechnungen pro E-Mail
  • Metadaten-Extraktion aus E-Mail-Headern
  • Absenderidentifikation für Lieferantenzuordnung

Muster 3: SAP-Integration

Vollständige bidirektionale Integration mit SAP für Rechnungsverarbeitung und Status-Synchronisation.

Rechnungsexport nach SAP

Nachdem Rechnungen in comstruct verarbeitet und freigegeben wurden, können sie nach SAP exportiert werden.

SAP-Rückmeldungs-Integration

SAP kann Status-Aktualisierungen an comstruct zurücksenden:
curl -X POST "https://api.comstruct.com/v1/invoices/callback" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/json" \
  -d '{
    "external_id": "RE-2024-001",
    "success": true,
    "sap_document_number": "5100000123"
  }'

Rückmeldungs-Anfrageschema

FeldTypErforderlichBeschreibung
external_idstringJaExterne ID der Rechnung
successbooleanJaOb SAP-Verarbeitung erfolgreich war
sap_document_numberstringNeinSAP-Belegnummer (bei Erfolg)
error_messagestringNeinFehlerdetails (bei Misserfolg)

Muster 4: Workflow-Integration (JobRouter)

Für Kunden, die Workflow-Systeme wie JobRouter für Rechnungsfreigabe verwenden.

Workflow-Verarbeitung

curl -X POST "https://api.comstruct.com/v1/workflows" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/pdf" \
  --data-binary @rechnung.pdf

Workflow-Status prüfen

curl -X GET "https://api.comstruct.com/v1/workflows/status/RE-2024-001" \
  -H "x-api-key: IHR_API_SCHLUESSEL"

Status-Antwort

{
  "external_id": "RE-2024-001",
  "status": "PROCESSING",
  "url": "https://app.comstruct.com/invoices/123",
  "history": [
    {
      "timestamp": "2024-01-15T10:30:00Z",
      "status": "RECEIVED"
    },
    {
      "timestamp": "2024-01-15T10:31:00Z",
      "status": "PROCESSING"
    }
  ]
}

Muster 5: Nur-Parsen-Modus

Für Systeme, die Rechnungsdatenextraktion ohne Speicherung benötigen.

Anwendungsfall

  • Testen der Rechnungsanalyse
  • Vorab-Validierung vor vollständiger Verarbeitung
  • Integration mit bestehenden Rechnungsmanagementsystemen

Implementierung

curl -X POST "https://api.comstruct.com/v1/invoices/parse-invoice" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "Content-Type: application/pdf" \
  --data-binary @rechnung.pdf

Antwort

{
  "success": true,
  "data": {
    "invoice_number": "RE-2024-1234",
    "invoice_date": "2024-01-15",
    "supplier_name": "Beispiel GmbH",
    "supplier_tax_id": "DE123456789",
    "gross_amount": 1190.00,
    "net_amount": 1000.00,
    "tax_amount": 190.00,
    "line_items": [
      {
        "description": "Beton C30/37",
        "quantity": 25.5,
        "unit": "m³",
        "unit_price": 39.22,
        "total": 1000.00
      }
    ]
  }
}

Rechnungsstatus-Ablauf

Das Verständnis des Rechnungslebenszyklus hilft bei der Gestaltung von Integrationen:

Status-Definitionen

StatusBeschreibung
OPENRechnung erstellt, wartet auf Verarbeitung
PROCESSINGRechnung wird geprüft
APPROVEDZur Zahlung freigegeben
REJECTEDRechnung abgelehnt
EXPORTEDZur Buchung an ERP gesendet
BOOKEDErfolgreich im ERP gebucht

Rechnungen auflisten und filtern

Alle Rechnungen auflisten

curl -X GET "https://api.comstruct.com/v1/invoices?limit=25&offset=0" \
  -H "x-api-key: IHR_API_SCHLUESSEL"

Nach Status filtern

curl -X GET "https://api.comstruct.com/v1/invoices?status=OPEN" \
  -H "x-api-key: IHR_API_SCHLUESSEL"

Antwortformat

{
  "data": [
    {
      "id": "123",
      "external_id": "RE-2024-001",
      "invoice_number": "RE-2024-1234",
      "status": "OPEN",
      "gross_amount": 1190.00,
      "supplier_name": "Beispiel GmbH",
      "project_number": "PRJ-001",
      "created_at": "2024-01-15T10:00:00Z"
    }
  ],
  "total": 150,
  "limit": 25,
  "offset": 0,
  "hasNext": true,
  "hasPrevious": false,
  "totalPages": 6,
  "currentPage": 0
}

Rechnungs-PDFs herunterladen

Originale PDF für eine Rechnung abrufen:
curl -X GET "https://api.comstruct.com/v1/invoices/123/pdf" \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -o rechnung_123.pdf

Fehlerbehandlung

Häufige Fehler

FehlercodeBeschreibungLösung
400Ungültiges RechnungsformatPDF-Gültigkeit prüfen
401Fehlende Berechtigunginvoices:write Berechtigung anfordern
404Rechnung nicht gefundenRechnungs-ID überprüfen
500Parsing fehlgeschlagenSupport mit Rechnung kontaktieren

Fehlerantwort

{
  "success": false,
  "error": "Failed to parse invoice: Invalid data format"
}

Wiederholungsstrategie

Für vorübergehende Fehler (5xx) implementieren Sie exponentielles Backoff:
import time
import requests

def rechnung_hochladen_mit_wiederholung(pdf_pfad, max_versuche=3):
    for versuch in range(max_versuche):
        try:
            with open(pdf_pfad, 'rb') as f:
                response = requests.post(
                    'https://api.comstruct.com/v1/invoices/custom',
                    headers={
                        'x-api-key': 'IHR_API_SCHLUESSEL',
                        'Content-Type': 'application/pdf'
                    },
                    data=f.read()
                )
            
            if response.status_code < 500:
                return response.json()
                
        except requests.exceptions.RequestException:
            pass
        
        time.sleep(2 ** versuch)  # Exponentielles Backoff
    
    raise Exception("Maximale Versuche überschritten")

Best Practices Zusammenfassung

  • Verwenden Sie hochauflösende PDF-Scans (mindestens 300 DPI)
  • Stellen Sie sicher, dass Rechnungen nicht schief oder gedreht sind
  • Vermeiden Sie passwortgeschützte PDFs
  • Verwenden Sie nach Möglichkeit standardisierte Rechnungslayouts
  • Implementieren Sie idempotente Uploads mit externen IDs
  • Speichern Sie API-Antworten für Debugging
  • Verwenden Sie Webhooks oder Polling für Status-Aktualisierungen
  • Implementieren Sie ordnungsgemäße Fehlerbehandlung und Wiederholungslogik
  • Bündeln Sie Uploads außerhalb der Spitzenzeiten
  • Komprimieren Sie PDFs, um die Upload-Zeit zu reduzieren
  • Verwenden Sie Connection-Pooling für mehrere Anfragen
  • Überwachen Sie API-Antwortzeiten
  • Speichern Sie API-Schlüssel sicher
  • Verwenden Sie HTTPS für alle Anfragen
  • Validieren Sie Antworten vor der Verarbeitung
  • Implementieren Sie Audit-Logging

Support

Für Integrationsunterstützung: