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
- Bas-URL:
https://api.fortnox.se/3/, JSON in och ut - Autentisering: OAuth 2.0 via
https://apps.fortnox.se/oauth-v1/ - Behörighet: scopes per område (fakturor, bokföring, kunder och så vidare)
- Rate limit: 300 anrop per minut per klient och företag, i ett glidande fönster om 5 sekunder (25 anrop per 5 sekunder)
- Kostnad: gratis att utveckla mot. Företaget som använder integrationen behöver Fortnox integrationslicens (från 189 kr/mån)
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:
companyinformation: företagsuppgifterinvoice,customer,article: kundfakturor, kunder, artiklarsupplierinvoice,supplier,payment: leverantörsfakturor, leverantörer, betalningarbookkeeping: konton, verifikationer, räkenskapsår och SIE-exportorder,offer,project,costcenter: försäljning och uppföljninginbox,archive,connectfile: filer och kopplingar mellan filer och verifikationersettings: företagsinställningar, till exempel låsta perioder
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:
- Begränsa anropen själv på klientsidan i stället för att vänta på 429
- Vid 429: vänta en stund och försök igen, med backoff
- Hämta många rader per sida i stället för många små anrop
- Använd sammanställningar (till exempel SIE-exporten) i stället för att hämta tusentals verifikationer
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
| Endpoint | Scope | Innehåll |
|---|---|---|
| /3/companyinformation | companyinformation | Företagets namn, organisationsnummer, adress |
| /3/invoices | invoice | Kundfakturor. Filter: unpaid, unpaidoverdue, fullypaid, cancelled, unbooked |
| /3/customers | customer | Kundregistret |
| /3/supplierinvoices | supplierinvoice | Leverantörsfakturor, inklusive attest |
| /3/suppliers | supplier | Leverantörsregistret |
| /3/invoicepayments | payment | Inbetalningar på kundfakturor |
| /3/articles | article | Artiklar och tjänster med priser |
| /3/orders, /3/offers | order, offer | Order och offerter |
| /3/vouchers | bookkeeping | Verifikationer per räkenskapsår och serie |
| /3/accounts | bookkeeping | Kontoplanen |
| /3/financialyears | bookkeeping | Räkenskapsår |
| /3/sie/4 | bookkeeping | SIE 4-export, grunden för saldon, resultat och balans |
| /3/projects, /3/costcenters | project, costcenter | Projekt och kostnadsställen |
| /3/inbox, /3/archive | inbox, archive | Filer: 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:
- En app i Fortnox utvecklarportal, OAuth-flöde och säker lagring av nycklar
- Rate limits, paginering, retries och begripliga felmeddelanden
- En MCP-server med egen OAuth 2.1 (dynamisk klientregistrering, PKCE), som ChatGPT och Claude kräver för fjärranslutna servrar
- Verktyg som ger små, välformade svar i stället för att dumpa hundratals rader i AI:n
- Ett säkert skrivflöde, så att AI:n aldrig bokför något utan att du godkänt det
- Drift, uppdateringar och övervakning, för alltid
Ä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/mcpLä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.