Dokumentation

Die 4invoices-Dokumentation hat zwei Ebenen: das Panel, das Sie ohne Code nutzen, und die öffentliche API, über die Ihr eigenes System Rechnungen ausstellt und das Dokument über den nationalen E-Rechnungsweg führt (in Rumänien: e-Factura der ANAF). Diese Seite ist der Einstieg in die zweite Ebene.

Zur vollständigen API-Referenz →

Was Sie automatisieren können

Die öffentliche API umfasst Rechnungen und Proformas, Stornos, Kunden mit Prüfung im Firmenregister (in Rumänien: ANAF-Register), Nummernkreise und den kompletten nationalen E-Rechnungsweg (in Rumänien: e-Factura): CIUS-RO-Vorprüfung, SPV-Einreichung, Statusverfolgung, signierte Antwort und den Posteingang der Lieferantenrechnungen.

https://api.4invoices.net/v1 · 25 endpoints · OpenAPI-Spezifikation (ohne Schlüssel)

invoices:read · invoices:write · clients:read · clients:write · efactura:read · efactura:submit

Authentifizierung

Vor dem ersten AufrufRechnungsstellung → Einstellungen → API-Zugang
bash
curl -sS -X POST https://api.4invoices.net/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "cli_XXXXXXXXXXXX",
    "client_secret": "sec_XXXXXXXXXXXXXXXXXXXX"
  }'

# → {"access_token":"eyJ...","token_type":"Bearer","expires_in":3600,
#    "scope":"invoices:read invoices:write efactura:submit"}
Nur Server-zu-Server. Rufen Sie die API nie aus Browser-JavaScript auf: das client_secret gelangt zum Besucher, und CORS blockiert ohnehin jeden Origin.

Die erste Rechnung in 6 Schritten

  1. Erzeugen Sie im Panel unter Rechnungsstellung → Einstellungen → API-Zugang eine Zugangsdaten-Kombination und kopieren Sie das client_secret — es wird nur einmal angezeigt.
  2. Vervollständigen Sie das Firmenprofil und aktivieren Sie mindestens eine Serie vom Typ fiscale, sonst antwortet die Ausstellung mit issuer_profile_incomplete oder no_series_configured.
  3. Tauschen Sie die Zugangsdaten gegen ein Token: POST /v1/auth/token mit grant_type client_credentials. Das Token gilt eine Stunde — zwischenspeichern, nicht pro Request neu holen.
  4. Stellen Sie die Rechnung aus: POST /v1/invoices mit Idempotency-Key-Header und vat_rate als Prozentwert (21, nicht 0.21).
  5. Für den rumänischen Markt führen Sie die CIUS-RO-Vorprüfung mit POST /v1/invoices/{id}/efactura/validate aus und senden die Rechnung dann mit POST /v1/invoices/{id}/efactura/submit an die ANAF.
  6. Verfolgen Sie den Status mit GET /v1/efactura/submissions/{id}, bis er accepted oder rejected erreicht.
bash
# 1 — Token (1 Stunde, zwischenspeichern)
ACCESS_TOKEN=$(curl -sS -X POST https://api.4invoices.net/v1/auth/token \
  -H 'Content-Type: application/json' \
  -d '{"grant_type":"client_credentials","client_id":"cli_XXX","client_secret":"sec_XXX"}' \
  | python3 -c 'import sys,json; print(json.load(sys.stdin)["access_token"])')

# 2 — Rechnung ausstellen (Idempotency-Key ist PFLICHT)
curl -sS -X POST https://api.4invoices.net/v1/invoices \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: order-10457-invoice' \
  -d '{"buyer":{"name":"Exemplu Comert SRL","tax_id":"RO12345678","county":"Cluj","city":"Cluj-Napoca","country":"RO"},
       "lines":[{"description":"Abonament SaaS","quantity":1,"unit_price":400,"vat_rate":21}]}'

# 3 — preflight CIUS-RO, then send to ANAF
curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/validate \
  -H "Authorization: Bearer $ACCESS_TOKEN"

curl -sS -X POST https://api.4invoices.net/v1/invoices/inv_01J7ABC/efactura/submit \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Idempotency-Key: efactura-inv_01J7ABC-1'

Leitfäden nach Thema

Jedes Thema hat eine eigene Seite mit den passenden Endpunkten, Beispielen und Fehlern.

Zur vollständigen API-Referenz →