SyyPro Rechnungen
EN 16931 · XRechnung 3.0 · Hybrid-PDF

Documentación API v1

API JSON para ERP, gestión de inventarios o automatizaciones personalizadas. Autenticación mediante X-API-Key · conforme a EN 16931 · salida de PDF híbrido opcional.

Autenticación

Cada solicitud (excepto /health) requiere el encabezado X-API-Key: <su-clave>. Encuentre sus claves API en su Panel de control.

X-API-Key: xr_abc123...
Content-Type: application/json
⚡ Límite de velocidad: 60 solicitudes/min por clave TLS recomendado (nginx / Caddy)

Endpoints

GET /api/v1/health Ping – no requiere autenticación

Comprobación de disponibilidad simple. Devuelve el estado de la base de datos. Ideal para monitorización.

Respuesta:

{ "status": "ok", "db": true }
GET /api/v1/profiles Perfiles de factura disponibles

Devuelve todos los perfiles compatibles con metadatos (campos obligatorios, tipo de exportación).

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

Enviar factura como JSON → generar XML válido (y generar opcionalmente un PDF híbrido).

Cuerpo de la solicitud:

{
  "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
}

Respuesta correcta (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 Solo validación, sin salida

Mismo cuerpo que /invoices, pero devuelve solo el resultado de validación — sin XML, sin PDF.

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

Envía una factura PDF como multipart/form-data. El escáner extrae todos los campos reconocibles y devuelve directamente XML válido.

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

Campos de respuesta:

  • confidence – Calidad de reconocimiento 0–100
  • warnings – Campos que no estaban claros
  • checklist – Verificación de completitud con códigos BT
  • xml_base64 – XML XRechnung completo
  • zugferd_base64 – PDF híbrido (si el perfil es ZUGFERD)

⚠ Códigos de error

HTTPCodeSignificado
400invalid_bodyJSON malformado o campos obligatorios faltantes
401unauthorizedClave API faltante o inválida
413too_largeSubida > 16 MB
415wrong_typeSolo se permite PDF para la extracción
422invalid_invoiceLa factura no supera la validación EN-16931
429rate_limitedMás de 60 solicitudes/minuto
503api_disabledAPI no activada o ninguna clave configurada
Referencia API completa Todos los endpoints, parámetros, formatos de respuesta
Probar la API Prueba paso a paso
Cómo funciona el probador:
Seleccione una función (paso 2), introduzca su clave API (paso 1) y haga clic en Enviar solicitud. El resultado aparece directamente debajo.
→ Iniciar sesión para usar su clave
1 Introducir clave API

Encuentre su clave en el panel bajo "Claves API". Siempre comienza con xr_.

2 Elegir función – ¿qué desea hacer?
Comprueba si la API es accesible. No se necesita clave API. Ideal para probar la conexión.
3 Enviar solicitud