Fortnox API — kraftfullt men inte alltid intuitivt
Vi har byggt Fortnox-integrationer i flera e-handelsprojekt och stöter på samma mönster av problem gång på gång. API:et är fullt kapabelt, men det har egenheter som inte syns förrän du sitter mitt i produktionen och en order vägrar synka.
Den här guiden samlar de fällor vi sett oftast — så att du slipper lära dig dem den dyra vägen.
Rate limits sätter taket tidigare än du tror
Fortnox begränsar antalet anrop per sekund och per timme. I en e-handel med trafiktoppar — rea, kampanj, julhandel — är det lätt att slå i taket om varje order utlöser flera direktanrop. Resultatet blir köer som svämmar över och kunder vars orderbekräftelse dröjer.
Lösningen är att bygga ett kö- och retry-lager från start. Lägg order i en kö, processa i kontrollerad takt och hantera 429-svar med exponentiell backoff. Skicka aldrig anrop synkront i checkout-flödet — det kopplar din kunds köpupplevelse till Fortnox tillgänglighet.
Artikelnummer och momssatser är de tysta felkällorna
Den vanligaste datakrocken är artikelnummer som inte matchar mellan butiken och Fortnox. Skapas artiklar automatiskt vid första ordern, eller måste de finnas i förväg? Bestäm en strategi och håll den konsekvent, annars får du dubbletter eller orphan-rader.
Momssatser är nästa fälla. Fortnox vill ha rätt momskod per rad, och e-handelsplattformar uttrycker moms olika. Mappa explicit mellan butikens momslogik och Fortnox momskoder — gissa aldrig, och testa med blandade kundvagnar (olika satser, frakt, rabatter) innan lansering.
Token-hantering och OAuth
Fortnox använder OAuth med access-tokens som går ut och refresh-tokens som måste roteras. Ett vanligt produktionshaveri är att refresh-token-flödet inte är robust — en token löper ut, ingen förnyar den, och hela synken tystnar utan tydligt larm.
Bygg förnyelse som en bakgrundsprocess med marginal, inte i sista sekund. Och larma aktivt när autentisering fallerar — en tyst trasig integration upptäcks annars först när bokföringen inte stämmer i månadsskiftet.
Logga allt och gör synken idempotent
När en order inte dyker upp i Fortnox vill du kunna svara på frågan 'vad hände med order 4711?' på sekunder, inte timmar. Logga varje anrop, svar och statusövergång med order-id som nyckel. Det är skillnaden mellan en snabb felsökning och en hel dags grävande.
Gör dessutom synken idempotent: om samma order skickas två gånger ska den inte bokföras dubbelt. Använd en extern referens eller idempotensnyckel så att retries är säkra. Det är den enskilt viktigaste designprincipen för en integration du kan lita på.
Taggar