Konventionen
Datums- und Betragsformate, Kennungen public_token und numerische id, Sprache der Meldungen und von der NovaFisko-API erkannte Header.
Diese Seite fasst die Regeln zusammen, die für alle Routen gelten. Wer sie einhält, vermeidet die meisten 422-Fehler.
Requests
- Senden Sie bei jedem Aufruf
Accept: application/json. Der Hostapi.novafisko.comantwortet immer in JSON, doch dieser Header gewährleistet dasselbe Verhalten hinter einem Proxy. - Bodys sind JSON (
Content-Type: application/json), in UTF-8 kodiert. - Der Datei-Upload (
document-imports) verwendetmultipart/form-data. - Feldnamen sind englisch und in
snake_case. URL-Segmente sind inkebab-case(third-parties,vat-declarations).
Datum und Uhrzeit
| Art | Format | Beispiel |
|---|---|---|
Buchungsdatum (entry_date, due_date, starts_on, from, to) |
JJJJ-MM-TT |
2026-03-31 |
Zeitstempel (created_at, posted_at, server_time) |
ISO 8601 mit Zeitzone, in UTC | 2026-10-05T08:30:11+00:00 |
| Abrechnungsmonat | JJJJ-MM |
2026-10 |
Ein Buchungsdatum hat keine Zeitzone: Der 31. März bleibt der 31. März, gleichgültig, von wo aus Sie aufrufen. Zeitstempel werden in UTC gespeichert und zurückgegeben. Rechnen Sie sie bei der Anzeige in die Zeitzone Ihres Benutzers um.
In den Antworten kann das Buchungsdatum eines Modells in der Langform 2026-03-31T00:00:00.000000Z erscheinen. Berücksichtigen Sie nur die ersten zehn Zeichen. In der Eingabe senden Sie immer JJJJ-MM-TT.
Beträge
Beträge werden in Euro angegeben, als Dezimalzeichenfolgen mit Punkt und zwei Nachkommastellen: "1250.00", "0.21", "-48.40".
{
"debit": "1250.00",
"credit": "0.00",
"balance": "1250.00"
}
Diese Wahl vermeidet die Rundungsfehler von Gleitkommazahlen. Verwenden Sie in Ihrem Code einen Dezimaltyp (BigDecimal, decimal, Decimal, bcmath) oder rechnen Sie in ganzen Cent.
In der Eingabe akzeptiert die API "1250.00" ebenso wie 1250 oder 1250.5. Sie rechnet alles in Cent um, bevor sie rechnet. Wir empfehlen, Zeichenfolgen zu senden.
Einige Verwaltungsantworten (Lizenz, Preistabelle, Simulator) liefern JSON-Zahlen, zum Beispiel "total": 149.0. Das sind kaufmännische Beträge, keine Buchhaltungsbeträge. Alle Buchhaltungsauswertungen (Saldenliste, Hauptbuch, Buchungen, MwSt.) verwenden Zeichenfolgen.
Eine Buchung muss auf den Cent genau ausgeglichen sein: Die Summe der Sollbeträge entspricht der Summe der Habenbeträge, andernfalls wird der Request mit 422 abgelehnt.
Kennungen
NovaFisko verwendet zwei Familien von Kennungen.
| Ressource | Kennung in der URL | Form | Beispiel |
|---|---|---|---|
Kanzlei (firm) |
public_token |
12 alphanumerische Zeichen | Fd7hQ2mN8sXa |
Mandat (company) |
public_token |
12 alphanumerische Zeichen | k3Jd9fPq2LmX |
| Alles, was in einem Mandat liegt (Buchung, Geschäftspartner, Konto, Journal, Beleg, Geschäftsjahr...) | numerische id |
Ganzzahl | 1842 |
Das public_token ist opak, stabil und nicht erratbar. Speichern Sie dieses, um eine Kanzlei oder ein Mandat zu bezeichnen. Die numerischen id haben nur innerhalb ihres Mandats eine Bedeutung: Eine Route companies/{company}/entries/{id} antwortet mit 404, wenn die Buchung zu einem anderen Mandat gehört.
/v1/companies/k3Jd9fPq2LmX/entries/1842
└─ public_token └─ id
Einige Felder akzeptieren anstelle der id eine lesbare Form. In einer Buchung kann eine Zeile ihr Konto zum Beispiel über account_id (Ganzzahl) oder über account (Kontonummer, "604000") bezeichnen. Ebenso akzeptiert eine Rechnungszeile vat_code_id oder vat_code.
Importierte Daten
Datensätze aus einer anderen Quelle tragen drei Felder: source (zum Beispiel novadesko), external_id (die Kennung in der Quelle) und synced_at. Nutzen Sie external_id, um einen Datensatz wiederzufinden, den Sie selbst übermittelt haben.
Version eines Datensatzes
Die vom Verlauf erfassten Ressourcen stellen eine Ganzzahl version bereit, die sich bei jeder Änderung erhöht. Senden Sie sie in X-Base-Version zurück, um die optimistische Sperre zu aktivieren, die unter Idempotenz beschrieben ist.
Sprache der Meldungen
Bezeichnungen und Fehlermeldungen gibt es auf Französisch, Niederländisch, Englisch und Deutsch. Die Sprache wird wie folgt gewählt:
- der Query-Parameter
locale(Routen für Verlauf, Papierkorb und Synchronisierung) oderlang(Exporte, Lizenz), sofern er angegeben ist; - andernfalls die Sprache im Profil des Benutzers, dem das Token gehört;
- andernfalls der Header
Accept-Language; - andernfalls die Standardsprache der Plattform.
GET /v1/firms/Fd7hQ2mN8sXa/licence?lang=nl HTTP/1.1
Accept-Language: nl-BE,nl;q=0.9,fr;q=0.6
Machen Sie Ihre Logik niemals vom Text in message abhängig, der je nach Sprache variiert. Stützen Sie sich auf den HTTP-Status und das Feld code.
Request-Header
| Header | Aufgabe |
|---|---|
Authorization |
Bearer <Token> |
Accept |
application/json |
Accept-Language |
Gewünschte Sprache der Meldungen |
X-Client-Mutation-Id |
Idempotenzschlüssel eines Schreibzugriffs, max. 64 Zeichen. Siehe Idempotenz |
X-Base-Version |
Bekannte Version des geänderten Datensatzes (optimistische Sperre) |
X-Operation-Id |
UUID, die alle Änderungen ein und derselben Aktion zusammenfasst. Wird vom Server erzeugt, wenn sie fehlt |
X-Device-Id |
Stabile Kennung der Installation oder des Konnektors, max. 64 Zeichen |
X-Device-Name |
Lesbarer Name des Geräts, prozentkodiert, max. 120 Zeichen |
X-Device-Platform |
Plattform (web, macos, linux, integration...) |
X-Occurred-At |
ISO-8601-Datum der Aktion auf Client-Seite, begrenzt auf plus oder minus 24 Stunden um die Serverzeit |
X-Origin |
offline_sync, wenn der Request eine offline ausgeführte Aktion erneut abspielt |
Die Header X-Device-* sind optional, aber nützlich: Sie erscheinen im Reiter Verlauf, sodass ein Buchhalter sehen kann, dass eine Änderung von Ihrem Konnektor stammt.
curl -X POST https://api.novafisko.com/v1/companies/k3Jd9fPq2LmX/third-parties \
-H "Authorization: Bearer $NOVAFISKO_TOKEN" \
-H "Content-Type: application/json" \
-H "X-Device-Id: erp-atelier-prod" \
-H "X-Device-Name: ERP%20Atelier" \
-H "X-Client-Mutation-Id: 6f1c2f0e-7a53-4f0b-9c58-0b8a4a7c2d11" \
-d '{"type": "supplier", "name": "Brasserie des Collines SA", "vat_number": "BE0999900134"}'
Response-Header
| Header | Bedeutung |
|---|---|
X-Operation-Id |
Kennung des Vorgangs, wenn etwas im Verlauf festgehalten wurde. Sie dient dem Rückgängigmachen: POST history/operations/{operation}/revert |
X-Trashed: 1 |
Das DELETE hat den Datensatz in den Papierkorb verschoben, statt ihn zu vernichten. Er bleibt wiederherstellbar |
X-Idempotent-Replay: 1 |
Die Antwort ist das gespeicherte Ergebnis eines bereits ausgeführten Requests |
X-Export-Fingerprint |
SHA-256-Prüfsumme des exportierten Datenbestands |
Content-Disposition |
Dateiname bei Exporten |
Retry-After |
Wartezeit in Sekunden vor einem erneuten Versuch nach einem 429 |
Löschungen
Eine Löschung vernichtet fast nie etwas sofort:
- ein Geschäftspartner, ein Konto, ein Journal, eine Regel oder eine Anlage wandert in den Papierkorb (
X-Trashed: 1) und kann während der Aufbewahrungsdauer des Mandats, standardmäßig 90 Tage, wiederhergestellt werden; - eine gebuchte Buchung lässt sich nicht löschen: Sie wird mit
POST entries/{id}/reversestorniert, wodurch die fortlaufende Nummerierung erhalten bleibt.