SyyPro Rechnungen
EN 16931 · XRechnung 3.0 · Hybrid-PDF

Developer v1

JSON API for ERP, inventory systems or custom automations. Authentication via X-API-Key · EN 16931 compliant · optional hybrid PDF output.

Authentication

Every request (except /health) requires the header X-API-Key: <your-key>. Find your API keys in your Dashboard.

X-API-Key: xr_abc123...
Content-Type: application/json
⚡ Rate Limit: 60 Req/Min per Key TLS recommended (nginx / Caddy)

Endpoints

GET /api/v1/health Ping – no auth required

Simple liveness check. Returns DB status. Ideal for monitoring.

Response:

{ "status": "ok", "db": true }
GET /api/v1/profiles Available invoice profiles

Returns all supported profiles with metadata (required fields, export type).

{ "profiles": ["XRECHNUNG", "B2B_UBL", "ZUGFERD"] }
POST /api/v1/invoices JSON → XRechnung XML (+ optional hybrid PDF)

Submit invoice as JSON → generate valid XML (and optionally generate a hybrid PDF with embedded XRechnung).

Request body:

{
  "profile":          "XRECHNUNG",
  "invoice_number":   "RE-2026-0042",
  "issue_date":       "2026-04-20",
  "due_date":         "2026-05-04",
  "currency":         "EUR",
  "buyer_reference":  "04011000-1234567-89",
  "seller": {
    "name":   "Mustermann IT GmbH",
    "vat_id": "DE123456789",
    "address": { "street":"Musterstraße 12","postal_code":"70173",
                 "city":"Stuttgart","country_code":"DE" }
  },
  "buyer": {
    "name": "Landratsamt Musterhausen",
    "address": { "street":"Rathausplatz 1","postal_code":"70173",
                 "city":"Musterhausen","country_code":"DE" }
  },
  "lines": [{
    "name": "Webentwicklung", "quantity": "12",
    "unit": "HUR", "unit_price": "120.00", "tax_percent": "19"
  }],
  "bank_account": { "iban": "DE89370400440532013000" },
  "include_zugferd": false
}

Successful response (200):

{
  "invoice":      { ... },
  "validation":   { "ok": true, "errors": [] },
  "xml_base64":   "PD94bWwgdmVyc2lvbj0iMS4wIi4uLg==",
  "zugferd_base64": null
}

unit = UN/CEFACT-Code: HUR Stunde, C62 Stück, KGM kg. Bei XRechnung ist buyer_reference (Leitweg-ID) Pflicht.

POST /api/v1/validate Validation only, no output

Same body as /invoices, but returns only the validation result — no XML, no PDF.

{
  "ok":     false,
  "errors": [
    { "level": "error", "code": "BR-04",
      "message": "Seller VAT identifier is mandatory." }
  ]
}
POST /api/v1/extract Upload PDF → extract fields + generate XML

Sends a PDF invoice as multipart/form-data. The scanner extracts all recognisable fields and returns valid XML directly.

curl -X POST https://rechnung.syypro.com/api/v1/extract \
     -H "X-API-Key: $XR_KEY" \
     -F "file=@rechnung.pdf" \
     -F "profile=ZUGFERD"

Response fields:

  • confidence – Recognition quality 0–100
  • warnings – Fields that were unclear
  • checklist – Completeness check with BT codes
  • xml_base64 – complete XRechnung XML
  • zugferd_base64 – Hybrid PDF (if profile is ZUGFERD)

⚠ Error Codes

HTTPCodeMeaning
400invalid_bodyMalformed JSON or missing required fields
401unauthorizedAPI key missing or invalid
413too_largeUpload > 16 MB
415wrong_typeOnly PDF allowed for extract
422invalid_invoiceInvoice fails EN-16931 validation
429rate_limitedMore than 60 requests/minute
503api_disabledAPI not enabled or no key configured
Full API Reference All endpoints, parameters, response formats
Try the API Step-by-step testing
How the tester works:
Select a function (step 2), enter your API key (step 1) and click Send request. The result appears right below.
→ Log in to use your key
1 Enter API key

Find your key in the Dashboard under "API Keys". It always starts with xr_.

2 Choose a function – what do you want to do?
Checks if the API is reachable. No API key required. Ideal for testing the connection.
3 Send request