Fortnox-kompatibilitet
Kuvert, partiella uppdateringar, nollvärden, arkivering vid DELETE, taltyper och skillnaderna mot Fortnox.
Klirrs API är byggt för att en Fortnox v3-integration ska fungera genom att byta bas-URL från Fortnox till https://app.klirr.ai/api/v1. Resurssökvägar, fältnamn (PascalCase), kuvert och felform är Fortnox egna.
Kuvertet
Skrivningar lindas in i resursnamnet i singular. Svar på en enskild resurs har samma kuvert; listor har pluralnamnet plus MetaInformation.
// POST /api/v1/3/customers
{ "Customer": { "Name": "Lindqvist Måleri AB" } }// GET /api/v1/3/customers
{ "Customers": [ ... ], "MetaInformation": { "@TotalResources": 1, "@TotalPages": 1, "@CurrentPage": 1 } }Saknas kuvertet, eller är innehållet inte ett objekt (en sträng eller en array), svarar API:t 400. Åtgärds-endpoints som PUT /3/invoices/{n}/bookkeep tar ingen kropp.
PUT är partiell
PUT ändrar bara de fält du skickar. Utelämnade fält behålls. Det gör att Fortnox-klienter som utelämnar tomma fält (omitempty) inte råkar nolla eller återaktivera något.
För att uttryckligen tömma ett fält skickar du strängen "API_BLANK" (exakt versaler). Fält som inte får vara tomma (t.ex. kundens Name) avvisas med 400 om du försöker.
{ "Customer": { "Comments": "API_BLANK" } }Okända fält bevaras
Fält Klirr inte modellerar (till exempel kundens GLN eller DeliveryAddress1) sparas och returneras oförändrade. Du kan läsa en resurs, ändra den och skriva tillbaka den utan att tappa data.
"" och 0 i stället för null
Tomma värden returneras som "" (text) eller 0 (tal), aldrig null, precis som hos Fortnox. Testa på tom sträng, inte på null.
Tal eller sträng
| Form | Tal skickas som |
|---|---|
Enskild resurs (GET /3/invoices/1) | JSON-tal: "Total": 1250 |
Listrad (GET /3/invoices) | Sträng: "Total": "1250" |
Belopp avrundas till två decimaler. När du skriver accepteras både tal och sträng.
DELETE arkiverar
Bokföringslagen tillåter inte att bokförd information ändras i efterhand, så Klirr raderar inte register som bokförda poster pekar på.
| Resurs | DELETE gör |
|---|---|
| Kunder, artiklar, leverantörer | Inaktiverar. Svarar 204; resursen finns kvar med Active: false. |
| Fakturabetalningar | Se Fakturabetalningar. |
| Konton | Se Kontoplan. |
Hämtar du en resurs direkt efter DELETE får du alltså 200 med Active: false, inte 404. Den försvinner ur listor med filter=active.
Övriga skillnader mot Fortnox
| Fortnox | Klirr | |
|---|---|---|
| Bas-URL | https://api.fortnox.se | https://app.klirr.ai/api/v1 |
| OAuth | apps.fortnox.se/oauth-v1/... | app.klirr.ai/api/v1/oauth-v1/... |
| Token-livslängd | 1 h / 45 dagar | Samma |
| PKCE | Finns inte | Valfritt, bara S256 |
| Felkoder | Fortnox egna nummer | Eget intervall 9000xxx |
| Rate limit | Fortnox egen | 25 anrop / 5 s per klient och organisation |
| Ostödda sökparametrar | – | Avvisas med 400 i stället för att ignoreras |
DELETE på register | Raderar | Inaktiverar |
| Plan | – | Kräver Kräver AI Pro |
| Resurser | Hela Fortnox v3 | De tolv resurserna i referensen |