Bestellung parsen

Bestellungen als UBL-Order-XML lesen wir direkt, PDFs liest die KI. Die Felder bleiben dauerhaft gleich, damit deine Zuordnung in zwei Jahren noch passt.

So funktioniert der Aufruf

Für Bestellung gibt es einen eigenen Aufruf mit festem Antwortformat. Du bekommst also immer dieselben Felder zurück und musst nicht raten, was gerade ankommt. Wie du dich anmeldest, was einzelne Fehlermeldungen bedeuten und wie du vorab den Preis erfährst, steht in der API-Dokumentation.

Eingabe-Beleg UBL-Order / Bestell-PDF SERVER DE

bestellung-po-test-1.xml · Strukturierte Belege: 1 Credit je Datei.

Käufer
Testkunde AG · Max Einkauf (einkauf@testkunde.example)
Lieferanschrift
Testkunde AG, Lager Nord · Hafenstraße 9, 20457 Hamburg
Bestellung
PO-TEST-1 vom 15.03.2024
Position 1
1 Stk. Widget (Käufer-Art. K-100 · Lieferanten-Art. A-1) · 100,00 EUR
Summen
Netto 100,00 EUR + 19,00 EUR USt = Brutto 119,00 EUR

UBL-Order-XML lesen wir lokal zum Dateipreis; Bestell-PDFs und Scans liest die KI in der EU.

Antwort-JSON purchaseorder.v1 HTTP 200 · warnings: []

POST /api/v1/purchase-order · source: "ubl_order"

{
    "schema": "purchaseorder.v1",
    "source": "ubl_order",
    "billed": 1,
    "buyer": {
        "name": "Testkunde AG",
        "contact_name": "Max Einkauf"
    },
    "seller": {
        "name": "Fixture GmbH"
    },
    "ship_to": {
        "name": "Testkunde AG, Lager Nord",
        "address": "Hafenstraße 9, 20457 Hamburg, DE"
    },
    "order": {
        "number": "PO-TEST-1",
        "date": "2024-03-15"
    },
    "totals": {
        "net": 100,
        "vat": 19,
        "gross": 119
    },
    "lines": [
        {
            "seller_item_number": "A-1",
            "buyer_item_number": "K-100",
            "description": "Widget",
            "quantity": 1,
            "unit": "C62",
            "unit_price": 100,
            "net": 100
        }
    ],
    "confidence": {
        "overall": 1,
        "order": 1,
        "lines": 1
    },
    "warnings": []
}

Sofort kostenlos testen (0 Credits mit öffentlichem Test-Key):

curl -sS -X POST https://parser-api.micro-ki.de/api/v1/purchase-order -H "Authorization: Bearer pak_test_X0001" -F "file=@bestellung-po-test-1.xml"

Welche Dateien du schicken kannst

Du schickst einfach die Datei. Welches Format sie hat, erkennen wir selbst, du musst nichts dazu angeben.

Unterstützte Dateiformate
Was du schickstWas das ist
XML (UBL-Order) Bestellung als XML-Datei
PDF / JPG / PNG / WEBP / TIFF / HEIC ohne XML Scan, Foto oder Druck-PDF
DOCX / ODT / TXT Word, LibreOffice, reiner Text
Bestellung purchaseorder.v1

So rufst du es auf

# curl 7
curl -sS -X POST \
  -H "Authorization: Bearer pak_test_X0001" \
  -H "Idempotency-Key: lauf-1-0" \
  -F "file=@dokument.pdf" \
  https://parser-api.micro-ki.de/api/v1/purchase-order

Beispiel-Antwort

{
    "schema": "purchaseorder.v1",
    "source": "ubl_order",
    "document": {
        "type": "purchase_order",
        "page_count": 0,
        "currency": "EUR"
    },
    "buyer": {
        "name": "Testkunde AG",
        "address": null,
        "vat_id": null,
        "customer_number": null,
        "contact_name": "Max Einkauf",
        "contact_department": null,
        "phone": null,
        "email": "einkauf@testkunde.example"
    },
    "seller": {
        "name": "Fixture GmbH",
        "address": null,
        "vat_id": null,
        "contact_name": null,
        "contact_department": null,
        "phone": null,
        "email": null
    },
    "ship_to": {
        "name": "Testkunde AG, Lager Nord",
        "address": "Hafenstraße 9, 20457 Hamburg, DE"
    },
    "order": {
        "number": "PO-TEST-1",
        "date": "2024-03-15",
        "delivery_date": null,
        "reference": null,
        "delivery_terms": null
    },
    "totals": {
        "line_total": 100,
        "charges": 0,
        "allowances": 0,
        "net": 100,
        "vat": 19,
        "gross": 119
    },
    "payment_terms": {
        "text": "Zahlbar innerhalb von 30 Tagen netto."
    },
    "notes": [
        "Bitte Bestellnummer auf dem Lieferschein angeben."
    ],
    "lines": [
        {
            "seller_item_number": "A-1",
            "buyer_item_number": "K-100",
            "gtin": "4012345001235",
            "description": "Widget",
            "quantity": 1,
            "unit": "C62",
            "unit_price": 100,
            "vat_rate": null,
            "net": 100,
            "gross": null
        }
    ],
    "confidence": {
        "overall": 1,
        "buyer": 1,
        "order": 1,
        "lines": 1
    },
    "warnings": [],
    "request_id": "req_beispiel",
    "billed": 0,
    "available": 18,
    "pricing": {
        "rule": "structured",
        "label": "Strukturierte Belege: 1 Credit je Datei."
    }
}

Felder

Felder in purchaseorder.v1
FeldTypBedeutung
schema const purchaseorder.v1 Unser Name für dieses JSON, zum Beispiel „purchaseorder.v1“. Das ist kein amtlicher Formatname.
source string Wie wir die Datei gelesen haben: „ubl_order“, „mistral“. „mistral“ heißt, die KI hat sie gelesen (Scan, PDF ohne XML, Word, Text).
request_id string Diese eine Anfrage, für Logs und Support.
billed integer Credits für diese Anfrage. 0 beim Test-Key und wenn wir in 15 Minuten dieselbe Datei wiedererkennen.
available integer Guthaben nach dieser Anfrage.
pricing object „rule“ und „label“: genau einer der drei Sätze, was ein Credit kostet.
document object Typ, Seiten, Währung.
document.type const purchase_order Immer „purchase_order“.
document.page_count integer|number|null Seitenzahl bei PDF und TIFF, 1 bei Bild (JPG, PNG, WEBP, HEIC), sonst 0 (XML, DOCX, ODT, TXT).
document.currency string|null Währung, zum Beispiel EUR.
buyer object Besteller.
buyer.name string|null Name des Bestellers.
buyer.address string|null Adresse des Bestellers.
buyer.vat_id string|null USt-IdNr. des Bestellers.
buyer.customer_number string|null Kundennummer beim Lieferanten.
buyer.contact_name string|null Ansprechpartner beim Besteller.
buyer.contact_department string|null Abteilung des Ansprechpartners beim Besteller (z. B. Einkauf, Buchhaltung).
buyer.phone string|null Telefon des Bestellers oder des Ansprechpartners.
buyer.email string|null E-Mail des Bestellers oder des Ansprechpartners.
seller object Lieferant.
seller.name string|null Name des Lieferanten.
seller.address string|null Adresse des Lieferanten.
seller.vat_id string|null USt-IdNr. des Lieferanten.
seller.contact_name string|null Ansprechpartner beim Lieferanten.
seller.contact_department string|null Abteilung des Ansprechpartners beim Lieferanten (z. B. Einkauf, Buchhaltung).
seller.phone string|null Telefon des Lieferanten oder des Ansprechpartners.
seller.email string|null E-Mail des Lieferanten oder des Ansprechpartners.
ship_to object Lieferanschrift, nur wenn die Bestellung eine nennt.
ship_to.name string|null Name des Warenempfängers.
ship_to.address string|null Lieferadresse. Eine Zeile, Teile mit Komma getrennt, wie buyer.address.
order object Kopf der Bestellung.
order.number string|null Bestellnummer.
order.date string|null Bestelldatum.
order.delivery_date string|null Gewünschtes Lieferdatum.
order.reference string|null Referenz der Bestellung.
order.delivery_terms string|null Lieferbedingungen oder Incoterms (z. B. frei Haus, DAP Hamburg, FOB).
totals object Summen der Bestellung.
totals.line_total number|null Summe der Positionen.
totals.charges number|null Zuschläge auf Belegebene, zum Beispiel Fracht.
totals.allowances number|null Abschläge auf Belegebene, zum Beispiel Rabatt.
totals.net number|null Netto: Summe ohne Umsatzsteuer.
totals.vat number|null MwSt-Betrag.
totals.gross number|null Brutto.
payment_terms object Zahlungsbedingungen.
payment_terms.text string|null Zahlungsbedingungen als Text, wie in der Bestellung.
notes[] array Bemerkungen zur ganzen Bestellung.
lines[] array Positionen.
lines[].seller_item_number string|null Artikelnummer des Lieferanten.
lines[].buyer_item_number string|null Artikelnummer des Bestellers.
lines[].gtin string|null GTIN, früher EAN (8 bis 14 Ziffern, von GS1).
lines[].description string|null Text der Position.
lines[].quantity number|null Menge.
lines[].unit string|null Einheit als UN/ECE-Code (Rec. 20), auf allen Wegen gleich: C62 Stück, HUR Stunde, DAY Tag, MON Monat, KGM Kilogramm, LTR Liter, MTR Meter, LS Pauschale (vollständige Liste im Abschnitt „Einheiten“). Unbekannte Einheiten wie gedruckt.
lines[].unit_price number|null Einzelpreis.
lines[].vat_rate number|null MwSt-Satz der Position in Prozent.
lines[].net number|null Netto der Position.
lines[].gross number|null Brutto der Position.
confidence object 0 bis 1 je Feldgruppe. Bei UBL-Order 1 für jede Gruppe, die in der Datei steht, 0 für eine leere Gruppe (z. B. keine Positionen). Liest die KI (Quelle „mistral“), ist es ihre eigene Einschätzung.
confidence.overall number|null 0–1 für die ganze Bestellung.
confidence.buyer number|null 0–1 für den Besteller.
confidence.order number|null 0–1 für den Kopf.
confidence.lines number|null 0–1 für die Positionen.
warnings[] array Kurze Codes, keine Fließtexte. Welche es bei diesem Endpunkt gibt und was zu tun ist: Abschnitt „Hinweise (warnings)“.

Was du bekommst

Was kostet das

Zum Einstieg kaufst du nur Start für 4,90 € (80 Credits, API-Key inklusive) . Größere Pakete kaufst du später in deinem Konto nach, sie sind pro Credit günstiger. Kein Abo: Deine Credits gelten mindestens drei Jahre, bis zum Ende des dritten Jahres nach dem Kauf.

Endpreise. Gemäß § 19 UStG wird keine Umsatzsteuer berechnet. Angebot nur für Unternehmer (§ 14 BGB), nicht für Verbraucher.

Was du für ein Credit bekommst

  • E-Rechnung & Co.

    SERVER DE

    • XML
    • EDI
    • SWIFT
    • ZUGFeRD

    1 Dokument

    für 1 Credit

    Strukturierte Belege: 1 Credit je Datei.

  • Word & Text

    EU-KI

    • DOCX
    • ODT
    • TXT

    1 Dokument

    für 2 Credit

    Office und Klartext: 2 Credit je Datei.

  • PDF & Scan

    EU-KI

    • PDF
    • JPG
    • PNG
    • WEBP
    • TIFF
    • HEIC

    1 Seite

    für 2 Credit

    PDF-OCR: 2 Credit je Seite.

Die fertigen Vorlagen für n8n und Make bekommst du nach dem Kauf in deinem Konto. Öffentlich zum Download liegen sie nicht.

Weitere Dokumenttypen

So läuft es in n8n So läuft es in Make API-Dokumentation So funktioniert's Hilfe / FAQ