Fortnox API: så fungerar det, och så kopplar du det till AI

Senast uppdaterad 2026-10-15

Fortnox har ett öppet REST-API som låter andra system läsa och skriva i bokföringen: fakturor, kunder, leverantörer, verifikationer och mycket mer. Den här guiden går igenom det du behöver veta som utvecklare, från inloggning och scopes till rate limits och paginering. Sist visar vi hur du kopplar Fortnox till ChatGPT och Claude, med eller utan egen kod.

Översikt

1. Skapa en app i utvecklarportalen

Allt börjar i Fortnox utvecklarportal. Där registrerar du en app och får ett client id och en client secret. Du anger vilka redirect-URI:er som är tillåtna och vilka scopes appen får be om. Som utvecklare kan du också få ett testföretag (sandbox) att bygga mot, så att du inte rör riktig bokföring.

Tänk på att scopes i appen och scopes i inloggningsanropet måste stämma överens. Ber du om ett scope som appen inte har aktiverat avvisar Fortnox inloggningen.

2. Autentisering med OAuth 2.0

Fortnox använder OAuth 2.0 med authorization code. Användaren skickas till Fortnox, loggar in och godkänner appen. Fortnox skickar tillbaka en kod som din server byter mot en åtkomsttoken.

GET https://apps.fortnox.se/oauth-v1/auth
  ?client_id=DITT_CLIENT_ID
  &redirect_uri=https://example.se/callback
  &scope=companyinformation invoice customer
  &state=SLUMPAT_VARDE
  &response_type=code
  &access_type=offline

POST https://apps.fortnox.se/oauth-v1/token
Authorization: Basic base64(client_id:client_secret)
Content-Type: application/x-www-form-urlencoded

grant_type=authorization_code&code=KOD&redirect_uri=https://example.se/callback

Svaret innehåller en access_token som gäller i en timme och en refresh_token. Refresh token byts ut vid varje förnyelse, så du måste spara den nya och kasta den gamla. Två processer som delar samma refresh token kommer förr eller senare att slå ut varandra. Varje API-anrop skickar sedan Authorization: Bearer ACCESS_TOKEN.

Servicekonto i stället för användartoken

Med account_type=service i inloggningen kopplas integrationen till ett servicekonto i stället för till den person som loggade in. Då kan servern hämta nya token med grant_type=client_credentials och företagets TenantId som header, utan att spara någon användares refresh token. Integrationen slutar inte fungera för att en anställd slutar. Det är så Fortare fungerar.

3. Scopes

Scopes styr vilka delar av Fortnox appen kommer åt. Be bara om det du behöver: användaren ser listan när hen godkänner kopplingen. Några vanliga:

4. Rate limits

Fortnox tillåter 300 anrop per minut per klient-id och företag. Gränsen mäts i ett glidande fönster på 5 sekunder, alltså 25 anrop per 5 sekunder. Den gäller per åtkomsttoken, inte per IP-adress, så fem anslutna företag har var sin kvot. Går du över svarar API:t med 429 Too Many Requests.

I praktiken betyder det:

5. Paginering och filter

Listor är paginerade. Ange limit (upp till 500) och page. Svaret innehåller MetaInformation med @TotalResources, @TotalPages och @CurrentPage. Många resurser har dessutom färdiga filter, till exempel /3/invoices?filter=unpaidoverdue för förfallna kundfakturor, och datumintervall som fromdate och todate.

GET https://api.fortnox.se/3/invoices?filter=unpaidoverdue&limit=100&page=1
Authorization: Bearer ACCESS_TOKEN
Accept: application/json

6. Vanliga endpoints

EndpointScopeInnehåll
/3/companyinformationcompanyinformationFöretagets namn, organisationsnummer, adress
/3/invoicesinvoiceKundfakturor. Filter: unpaid, unpaidoverdue, fullypaid, cancelled, unbooked
/3/customerscustomerKundregistret
/3/supplierinvoicessupplierinvoiceLeverantörsfakturor, inklusive attest
/3/supplierssupplierLeverantörsregistret
/3/invoicepaymentspaymentInbetalningar på kundfakturor
/3/articlesarticleArtiklar och tjänster med priser
/3/orders, /3/offersorder, offerOrder och offerter
/3/vouchersbookkeepingVerifikationer per räkenskapsår och serie
/3/accountsbookkeepingKontoplanen
/3/financialyearsbookkeepingRäkenskapsår
/3/sie/4bookkeepingSIE 4-export, grunden för saldon, resultat och balans
/3/projects, /3/costcentersproject, costcenterProjekt och kostnadsställen
/3/inbox, /3/archiveinbox, archiveFiler: kvitton, inskannade fakturor, bilagor

Ett tips om SIE-exporten: /3/sie/4 svarar bara om du skickar Accept: */*. Med text/plain får du felet "Invalid response type".

7. Fel och felkoder

Fel returneras som JSON med ett ErrorInformation-objekt som innehåller en felkod och ett meddelande, ofta på svenska. Vanliga orsaker är saknat scope, saknad licens för en modul (till exempel attest), en låst period eller ett konto som inte finns. Visa meddelandet för användaren i stället för att svälja det: det säger oftast exakt vad som är fel.

Fortnox API och AI: tre vägar

Det vanligaste skälet att söka på Fortnox API i dag är att man vill låta ChatGPT, Claude eller en egen AI-agent läsa bokföringen. Det finns tre sätt att göra det.

Exportera filer till chatten

Ladda ner en rapport eller SIE-fil och klistra in den i chatten. Det fungerar för en engångsfråga, men datan är gammal direkt och AI:n kan inte slå upp en enskild faktura eller kund.

Bygg en egen MCP-server

MCP (Model Context Protocol) är standarden som låter AI-assistenter anropa verktyg. Du kan bygga en egen Fortnox MCP-server, men då ska du lösa allt ovan och lite till:

Är du utvecklare och vill ha full kontroll kan det vara rätt val. För de flesta företag är det inte det.

Använd en färdig connector

En färdig connector har redan gjort jobbet. Med Fortare lägger du till adressen nedan i ChatGPT eller Claude, loggar in med Fortnox och börjar fråga. Fortare sparar ingen bokföring, läser som standard och kräver ditt godkännande för varje ändring.

https://fortare.ai/mcp

Läs mer om hur det fungerar på Fortnox MCP, se exempel på frågor eller jämför med andra Fortnox-connectors.

Vanliga frågor

Är Fortnox API gratis?

Det kostar inget att skapa ett utvecklarkonto och bygga mot API:t. Företaget som kopplar en integration behöver däremot Fortnox integrationslicens, som kostar från 189 kr/mån och täcker alla integrationer företaget använder.

Vad är rate limit i Fortnox API?

300 anrop per minut per klient-id och företag (tenant), mätt i ett glidande fönster på 5 sekunder. Det blir i praktiken 25 anrop per 5 sekunder. Går du över får du HTTP 429 Too Many Requests.

Behöver jag en API-nyckel för att koppla Fortnox till ChatGPT eller Claude?

Nej, inte med Fortare. Du lägger till https://fortare.ai/mcp i ChatGPT eller Claude och loggar in med ditt Fortnox-konto. Inloggningen sker med Fortnox officiella OAuth-flöde.

Kan jag bygga en egen Fortnox MCP-server?

Ja. Du behöver en app i Fortnox utvecklarportal, ett OAuth-flöde, säker lagring av nycklar, hantering av rate limits och paginering, och en MCP-server med OAuth för AI-klienterna. Det är fullt möjligt, men det är mycket att drifta för att ställa frågor om sina fakturor.

Vilken bas-URL har Fortnox API?

REST-API:t ligger på https://api.fortnox.se/3/ och OAuth-flödet på https://apps.fortnox.se/oauth-v1/. Svaren är JSON.

Källor: Fortnox utvecklardokumentation om rate limits och Fortares egen integration. Kontrollera alltid aktuella detaljer i Fortnox dokumentation.