Eingehende Rechnungen per API verarbeiten: Rechnung hochladen — Felder und eine Datei für die Buchhaltung erhalten. Guthabenmodell, kein Abonnement.Eingehende Rechnungen über REST verarbeiten: Dokument hochladen, strukturierte Felder und einen buchhaltungsfertigen Export erhalten. Vorausbezahltes Guthaben, kein Abonnement.
Nimmt eine eingehende Rechnung eines anderen Unternehmens (von einem Lieferanten) entgegen und gibt strukturierte Daten sowie eine Datei für die Buchhaltung zurück. Wir stellen keine Rechnungen aus und nehmen keine Zahlungen entgegen — nur Verarbeitung.Nimmt eine eingehende Lieferantenrechnung entgegen und gibt strukturierte Felder sowie eine buchhaltungsfertige Datei zurück. Wir stellen keine Rechnungen aus und nehmen keine Zahlungen entgegen — nur Verarbeitung.
Elektronische Rechnungen lesen wir per Code — präzise und kostenlos. Sie bezahlen nur für Scans und Fotos.Elektronische Rechnungen werden per Code verarbeitet — präzise und kostenlos. Sie bezahlen nur für Scans und Fotos.
X-Api-Key.Übergeben Sie den Schlüssel im Header X-Api-Key.X-Api-Key: your_api_key_here
| MethodeMethode | Pfad | ZweckZweck |
|---|---|---|
| POST | /v1/parse | Rechnung hochladen (multipart: file, country)Rechnung hochladen (multipart: file, country) |
| GET | /v1/parse/{job_id} | Verarbeitungsergebnis und FelderAuftragsstatus und verarbeitete Felder |
| GET | /v1/usage | Verbrauch und verbleibendes GuthabenVerbrauch und verbleibendes Guthaben |
| GET | /v1/price | Preis (öffentlich, ohne Schlüssel)Preis (öffentlich, ohne Schlüssel) |
| GET | /v1/countries | Länder und Formate (öffentlich)Länder und Formate (öffentlich) |
Interaktive Dokumentation: /docs · /redoc · openapi.jsonInteraktive Referenz: /docs · /redoc · openapi.json
curl -X POST https://duebuddy.work/v1/parse \
-H "X-Api-Key: your_api_key_here" \
-F "country=de" \
-F "[email protected]"
# {"ok":true,"job_id":41,"status":"queued","charged":true}
curl https://duebuddy.work/v1/parse/41 \
-H "X-Api-Key: your_api_key_here"
import requests, time
BASE = "https://duebuddy.work/v1"
HEAD = {"X-Api-Key": "your_api_key_here"}
def parse(path, country="de"):
with open(path, "rb") as f:
r = requests.post(f"{BASE}/parse", headers=HEAD,
files={"file": f}, data={"country": country}, timeout=60)
r.raise_for_status()
job = r.json()
for _ in range(30): # ждём результат
time.sleep(2)
out = requests.get(f"{BASE}/parse/{job['job_id']}", headers=HEAD, timeout=30).json()
if out.get("status") in ("done", "failed"):
return out
raise TimeoutError("parse timeout")
res = parse("invoice.pdf", "de")
print(res["fields"]) # поля счёта
const fd = new FormData();
fd.append("country", "us");
fd.append("file", fileInput.files[0]);
const r = await fetch("https://duebuddy.work/v1/parse", {
method: "POST",
headers: { "X-Api-Key": API_KEY },
body: fd
});
const { job_id } = await r.json();
const out = await fetch(`https://duebuddy.work/v1/parse/${job_id}`,
{ headers: { "X-Api-Key": API_KEY } }).then(r => r.json());
console.log(out.fields);
Speichern Sie die Datei als parse.html und öffnen Sie sie im Browser — ziehen Sie eine Datei hinein und erhalten Sie das Ergebnis. Der Schlüssel bleibt ausschließlich in Ihrem Browser.Speichern Sie die Datei als parse.html, öffnen Sie sie im Browser und legen Sie eine Datei darin ab. Der Schlüssel bleibt ausschließlich in Ihrem Browser.
<!doctype html>
<meta charset="utf-8">
<title>DueBuddy parse</title>
<style>body{font:15px system-ui;margin:40px;max-width:640px}
#d{border:2px dashed #999;border-radius:12px;padding:40px;text-align:center}
pre{background:#f4f4f5;padding:14px;border-radius:8px;overflow:auto}</style>
<input id="k" placeholder="API key" style="width:100%;padding:8px">
<div id="d">Drop an invoice here (PDF / JPG / PNG / XML)</div>
<pre id="o">—</pre>
<script>
const d = document.getElementById("d"), o = document.getElementById("o");
d.ondragover = e => e.preventDefault();
d.ondrop = async e => {
e.preventDefault();
const f = e.dataTransfer.files[0];
const fd = new FormData();
fd.append("country", "de");
fd.append("file", f);
const head = { "X-Api-Key": document.getElementById("k").value };
const j = await fetch("https://duebuddy.work/v1/parse",
{ method: "POST", headers: head, body: fd }).then(r => r.json());
o.textContent = JSON.stringify(j, null, 2);
for (let i = 0; i < 30; i++) {
await new Promise(r => setTimeout(r, 2000));
const out = await fetch("https://duebuddy.work/v1/parse/" + j.job_id,
{ headers: head }).then(r => r.json());
o.textContent = JSON.stringify(out, null, 2);
if (out.status === "done" || out.status === "failed") break;
}
};
</script>
{
"ok": true,
"job_id": 41,
"status": "done",
"fields": {
"invoice_number": "RE-2026-04871",
"invoice_date": "2026-09-14",
"due_date": "2026-10-14",
"vendor_name": "Hartmann GmbH",
"net_amount": "1048.74",
"vat_amount": "199.26",
"gross_amount": "1248.00",
"currency": "EUR"
},
"fields_detailed": [{"key": "gross_amount", "value": "1248.00", "edited": false}]
}
Die Felder hängen von country ab. Zusätzlich sind länderspezifische Exporte verfügbar: XRechnung, ZUGFeRD, DATEV, 1С, UBL, FatturaPA und weitere.Der Feldumfang hängt von country ab. Zusätzlich sind länderspezifische Exporte verfügbar: XRechnung, ZUGFeRD, DATEV, 1C, UBL, FatturaPA und weitere.
| CodeCode | detail | GrundGrund |
|---|---|---|
| 400 | unsupported_country | Land wird nicht unterstütztLand wird nicht unterstützt |
| 400 | unsupported_file_type | Nicht PDF/JPG/PNG/XMLNicht PDF/JPG/PNG/XML |
| 400 | empty_file | Leere DateiLeere Datei |
| 413 | file_too_large | Datei überschreitet das LimitDatei überschreitet das Limit |
| 429 | rate_limited | Mehr als 120 Anfragen pro MinuteMehr als 120 Anfragen pro Minute |
Wir verarbeiten eingehende Rechnungen. Wir stellen keine Rechnungen in Ihrem Namen aus und nehmen keine Zahlungen für Sie entgegen.Wir verarbeiten eingehende Rechnungen. Wir stellen keine Rechnungen in Ihrem Namen aus und nehmen keine Zahlungen für Sie entgegen.