io.github.jakobwennberg/fortnox MCP Server
io.github.jakobwennberg/fortnox
MCP server for Fortnox Swedish accounting system integration with invoices, customers, and business intelligence.
What is the io.github.jakobwennberg/fortnox MCP server?
The Fortnox MCP Server is an MCP (Model Context Protocol) server that integrates with the Fortnox Swedish accounting system, enabling LLMs to manage invoices, customers, suppliers, orders, accounts, and vouchers. It supports both remote mode (browser-based OAuth) and local mode (environment variable configuration) for flexible deployment.
This server connects Claude and other LLMs to Fortnox accounting software, allowing you to automate invoice creation and management, customer and supplier administration, financial reporting, and business intelligence analytics. It includes 40+ tools covering accounting operations and provides cash flow forecasting, sales funnel analysis, and year-over-year comparisons.
How to install io.github.jakobwennberg/fortnox
Copy-paste configuration for popular MCP clients.
FORTNOX_CLIENT_IDrequiredsecretYour Fortnox app client ID from developer.fortnox.se
FORTNOX_CLIENT_SECRETrequiredsecretYour Fortnox app client secret
FORTNOX_REFRESH_TOKENrequiredsecretOAuth2 refresh token obtained from Fortnox authorization flow
Tools & capabilities
Tools this server exposes to the agent.
fortnox_list_customers— List and search customersfortnox_get_customer— Get customer detailsfortnox_create_customer— Create new customerfortnox_update_customer— Update customerfortnox_delete_customer— Delete customerfortnox_list_invoices— List invoices with filteringfortnox_get_invoice— Get invoice details with line itemsfortnox_create_invoice— Create new invoicefortnox_update_invoice— Update draft invoicefortnox_bookkeep_invoice— Bookkeep invoicefortnox_cancel_invoice— Cancel invoicefortnox_credit_invoice— Create credit notefortnox_send_invoice_email— Send invoice by emailfortnox_list_suppliers— List and search suppliersfortnox_get_supplier— Get supplier detailsfortnox_create_supplier— Create new supplierfortnox_update_supplier— Update supplierfortnox_delete_supplier— Delete supplierfortnox_list_supplier_invoices— List supplier invoices with filteringfortnox_get_supplier_invoice— Get supplier invoice details
Use cases
- Automate invoice creation, sending, and payment tracking for Swedish businesses using Fortnox
- Manage customer and supplier databases, including creation, updates, and deletion of contacts
- Generate financial reports and business intelligence including cash flow forecasts, sales funnel analysis, and profitability metrics
- Create and manage journal vouchers and chart of accounts for bookkeeping
- Analyze sales performance with top customers, product performance, and year-over-year comparisons
io.github.jakobwennberg/fortnox MCP server FAQ
It's an MCP server that connects Claude and other LLMs to Fortnox, a Swedish accounting system. It provides 40+ tools for managing invoices, customers, suppliers, accounts, and generating business intelligence reports.
The server itself is open-source and free. You need a Fortnox account (paid subscription) and Fortnox API credentials to use it.
Add the configuration to your Claude Desktop config file with either the remote URL (https://fortnox-mcp.vercel.app/mcp) for easiest setup, or use npx with environment variables for local mode. See the README for detailed instructions for macOS and Windows.
In remote mode, you authorize via browser OAuth—no credentials needed in config. In local mode, you set FORTNOX_CLIENT_ID, FORTNOX_CLIENT_SECRET, and FORTNOX_REFRESH_TOKEN as environment variables. Get these from the Fortnox Developer Portal.
You can create and manage invoices, customers, suppliers, orders, accounts, and vouchers. You can also generate reports like cash flow forecasts, sales funnel analysis, customer growth, product performance, and year-over-year comparisons.
Yes, the server includes automatic rate limiting to stay within Fortnox's 25 requests per 5 seconds limit.
README (reference)
Source of truth, from the repository.
Fortnox MCP Server
An MCP (Model Context Protocol) server for integrating with the Fortnox Swedish accounting system. This server enables LLMs to interact with Fortnox for managing invoices, customers, suppliers, orders, accounts, vouchers, and provides business intelligence analytics.
Two Ways to Use
| Mode | Best For | Setup |
|---|---|---|
| Remote Mode | End users | Just add URL, authorize in browser |
| Local Mode | Developers, self-hosted | Configure environment variables |
Quick Start: Remote Mode (Recommended)
The easiest way to use Fortnox MCP - no credentials needed, just authorize in your browser.
Option A: Add to Claude.ai (Web)
- Go to claude.ai
- Navigate to Settings → Integrations → Add Integration
- Enter the URL:
https://fortnox-mcp.vercel.app/mcp - Wait for it to load, then authorize access by clicking connect
Option B: Add to Claude Desktop
Open your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add this configuration:
{
"mcpServers": {
"fortnox": {
"url": "https://fortnox-mcp.vercel.app/mcp"
}
}
}
Restart Claude Desktop. When you first ask Claude to do something with Fortnox, a browser window will open for you to authorize access to your Fortnox account. Once authorized, you're all set!
Quick Start: Local Mode (Self-Hosted)
For developers who want to run the server locally or use their own Fortnox app credentials.
1. Get your Fortnox credentials
- Register at Fortnox Developer Portal
- Create an application to get your Client ID and Client Secret
- Complete the OAuth2 flow to get a Refresh Token
2. Add to Claude Desktop
Open your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add this configuration:
{
"mcpServers": {
"fortnox": {
"command": "npx",
"args": ["-y", "fortnox-mcp-server"],
"env": {
"FORTNOX_CLIENT_ID": "your-client-id",
"FORTNOX_CLIENT_SECRET": "your-client-secret",
"FORTNOX_REFRESH_TOKEN": "your-refresh-token"
}
}
}
}
3. Restart Claude Desktop
That's it! You can now ask Claude to manage your Fortnox invoices, customers, and more.
Features
Customer Management
fortnox_list_customers- List and search customersfortnox_get_customer- Get customer detailsfortnox_create_customer- Create new customerfortnox_update_customer- Update customerfortnox_delete_customer- Delete customer
Invoice Management
fortnox_list_invoices- List invoices with filteringfortnox_get_invoice- Get invoice details with line itemsfortnox_create_invoice- Create new invoicefortnox_update_invoice- Update draft invoicefortnox_bookkeep_invoice- Bookkeep invoicefortnox_cancel_invoice- Cancel invoicefortnox_credit_invoice- Create credit notefortnox_send_invoice_email- Send invoice by email
Supplier Management
fortnox_list_suppliers- List and search suppliersfortnox_get_supplier- Get supplier detailsfortnox_create_supplier- Create new supplierfortnox_update_supplier- Update supplierfortnox_delete_supplier- Delete supplier
Supplier Invoice Management
fortnox_list_supplier_invoices- List supplier invoices with filteringfortnox_get_supplier_invoice- Get supplier invoice detailsfortnox_approve_supplier_invoice- Approve supplier invoice for paymentfortnox_payables_report- Get accounts payable aging report
Order Management
fortnox_list_orders- List sales orders with filteringfortnox_list_offers- List offers/quotes with filtering
Account Management
fortnox_list_accounts- List chart of accountsfortnox_get_account- Get account detailsfortnox_create_account- Create new accountfortnox_update_account- Update accountfortnox_delete_account- Delete account
Voucher Management
fortnox_list_vouchers- List vouchers (journal entries)fortnox_get_voucher- Get voucher details with rowsfortnox_create_voucher- Create manual voucherfortnox_list_voucher_series- List available voucher seriesfortnox_account_activity- Get activity for a specific accountfortnox_search_vouchers- Search vouchers by description, account, or amount
Company Information
fortnox_get_company_info- Get company detailsfortnox_list_financial_years- List company financial years
Analytics
fortnox_invoice_summary- Get invoice statistics by periodfortnox_top_customers- Get top customers by revenuefortnox_unpaid_report- Get detailed unpaid invoice report
Business Intelligence
fortnox_cash_flow_forecast- Forecast cash flow based on invoices and payablesfortnox_order_pipeline- Analyze sales order pipelinefortnox_sales_funnel- Analyze sales funnel from offers to invoicesfortnox_product_performance- Analyze product/article performancefortnox_period_comparison- Compare financial metrics across periodsfortnox_customer_growth- Analyze customer acquisition and growthfortnox_project_profitability- Analyze project profitability (if using projects)fortnox_cost_center_analysis- Analyze costs by cost centerfortnox_expense_analysis- Analyze expenses by categoryfortnox_yearly_comparison- Compare year-over-year performancefortnox_gross_margin_trend- Track gross margin trends over time
Installation
Via npx (Recommended)
No installation needed! Just add the config above to Claude Desktop.
Manual Installation
npm install -g fortnox-mcp-server
From Source
git clone https://github.com/jakobwennberg/fortnox-mcp.git
cd fortnox-mcp
npm install
npm run build
Configuration
Environment Variables
Local Mode (default)
| Variable | Required | Description |
|---|---|---|
FORTNOX_CLIENT_ID | Yes | Your Fortnox app client ID |
FORTNOX_CLIENT_SECRET | Yes | Your Fortnox app client secret |
FORTNOX_REFRESH_TOKEN | Yes | OAuth2 refresh token (only needed for initial setup; automatically persisted after first use) |
FORTNOX_ACCESS_TOKEN | No | Current access token (auto-refreshed) |
TRANSPORT | No | stdio (default) or http |
PORT | No | HTTP port (default: 3000) |
Remote Mode (AUTH_MODE=remote)
| Variable | Required | Description |
|---|---|---|
AUTH_MODE | Yes | Set to remote |
SERVER_URL | Yes | Public URL of your server |
JWT_SECRET | Yes | Secret for signing JWT tokens |
FORTNOX_CLIENT_ID | Yes | Your Fortnox app client ID |
FORTNOX_CLIENT_SECRET | Yes | Your Fortnox app client secret |
UPSTASH_REDIS_REST_URL | Yes* | Upstash Redis URL for token storage |
UPSTASH_REDIS_REST_TOKEN | Yes* | Upstash Redis token |
PORT | No | HTTP port (default: 3000) |
*Falls back to in-memory storage if not provided (not recommended for production)
Getting OAuth Credentials
- Register as a developer at Fortnox Developer Portal
- Create a new application to get Client ID and Client Secret
- Complete the OAuth2 authorization flow to obtain a refresh token
- Set the environment variables
Usage
With Claude Desktop
See Quick Start above.
As HTTP Server
TRANSPORT=http PORT=3000 node dist/index.js
Then connect to http://localhost:3000/mcp
Tool Examples
List Unpaid Invoices
{
"tool": "fortnox_list_invoices",
"arguments": {
"filter": "unpaid",
"limit": 20
}
}
Create Invoice
{
"tool": "fortnox_create_invoice",
"arguments": {
"customer_number": "1001",
"rows": [
{
"description": "Consulting services",
"quantity": 10,
"price": 1000
}
]
}
}
Create Voucher
{
"tool": "fortnox_create_voucher",
"arguments": {
"voucher_series": "A",
"description": "Office supplies",
"transaction_date": "2025-01-24",
"rows": [
{ "account_number": 6110, "debit": 500 },
{ "account_number": 1910, "credit": 500 }
]
}
}
Rate Limiting
The Fortnox API allows 25 requests per 5 seconds. This server includes automatic rate limiting to prevent exceeding this limit.
Development
# Run in development mode with auto-reload
npm run dev
# Build for production
npm run build
# Clean build artifacts
npm run clean
Publishing & Distribution
This server is published to multiple registries for easy installation:
| Registry | URL | Purpose |
|---|---|---|
| npm | npmjs.com/package/fortnox-mcp-server | Package distribution via npx |
| MCP Registry | registry.modelcontextprotocol.io | Official MCP server discovery |
| GitHub | github.com/jakobwennberg/fortnox-mcp | Source code |
How It Works
- User adds config to Claude Desktop with
npx fortnox-mcp-server - Claude Desktop starts the server via npx (downloads latest version from npm)
- Server authenticates with Fortnox using OAuth2 credentials from environment variables
- Claude can now use tools like
fortnox_list_invoices,fortnox_create_customer, etc. - Server handles API calls to Fortnox, including automatic token refresh and rate limiting
Token Persistence (Local Mode)
Fortnox refresh tokens are single-use — each token refresh returns a new one. The server automatically persists the latest refresh token to ~/.fortnox-mcp/tokens.json so it survives process restarts without requiring manual config updates.
- On first run, the server reads
FORTNOX_REFRESH_TOKENfrom your environment/config - After each token refresh, the new refresh token is saved to
~/.fortnox-mcp/tokens.json - On subsequent restarts, the server uses the persisted token (which is always the latest)
- If the persisted file is missing or corrupt, the server falls back to the environment variable
The token file is created with restricted permissions (0600) for security.
Releasing New Versions
To release a new version, use the release script:
# Bug fixes (1.0.0 → 1.0.1)
npm run release:patch
# New features (1.0.0 → 1.1.0)
npm run release:minor
# Breaking changes (1.0.0 → 2.0.0)
npm run release:major
The release script automatically:
- Bumps the version in
package.json - Updates
server.jsonfor the MCP Registry - Builds the project
- Commits and tags the release
- Publishes to npm
- Publishes to MCP Registry
- Pushes to GitHub
Prerequisites for releasing:
npm login- Logged into npmmcp-publisher login github- Logged into MCP Registry- Clean git working directory
Users Get Updates Automatically
When you publish a new version, users running npx -y fortnox-mcp-server will automatically get the latest version the next time they restart Claude Desktop.
Deploying Your Own Remote Server
Want to host your own instance of the Fortnox MCP server? Follow these instructions.
Deploy to Vercel
1. Prerequisites
- A Vercel account
- An Upstash Redis database (for token storage)
- A Fortnox Developer account with an app created
2. Set Environment Variables
In your Vercel project settings, add these environment variables:
| Variable | Description |
|---|---|
AUTH_MODE | Set to remote |
SERVER_URL | Your Vercel deployment URL (e.g., https://your-app.vercel.app) |
JWT_SECRET | A random secret string for signing tokens (generate with openssl rand -hex 32) |
FORTNOX_CLIENT_ID | Your Fortnox app client ID |
FORTNOX_CLIENT_SECRET | Your Fortnox app client secret |
UPSTASH_REDIS_REST_URL | Upstash Redis REST URL |
UPSTASH_REDIS_REST_TOKEN | Upstash Redis REST token |
3. Configure Fortnox OAuth Callback
In your Fortnox app settings, add this redirect URI:
https://your-app.vercel.app/oauth/fortnox/callback
4. Deploy
vercel --prod
Server Endpoints
| Endpoint | Description |
|---|---|
GET /health | Health check |
GET /.well-known/oauth-authorization-server | OAuth metadata |
POST /authorize | Start OAuth flow |
POST /token | Exchange code for tokens |
GET /oauth/fortnox/callback | Fortnox OAuth callback |
POST /mcp | Protected MCP endpoint |
Architecture
┌─────────────────────────────────────────────────────────────┐
│ fortnox-mcp-server │
├─────────────────────────────────────────────────────────────┤
│ Mode: AUTH_MODE=local | remote │
├─────────────────────────────────────────────────────────────┤
│ │
│ LOCAL MODE REMOTE MODE │
│ ─────────── ─────────── │
│ • Env var tokens • OAuth flow │
│ • Single user • Multi-user │
│ • stdio or HTTP • HTTP only │
│ • Auto-persisted tokens • Token storage (Redis) │
│ (~/.fortnox-mcp/) │
│ │
└─────────────────────────────────────────────────────────────┘
License
MIT
Related MCP servers

TMCP
Composable skill packets, harvests, workflow routing, and release/audit rubrics over MCP.

Source-linked Malaysian individual and sole-proprietor tax guidance for AI agents.

Live and historical electricity prices and demand for 25 grids; carbon intensity for GB.
AI shopping comparison — search 50M+ products, compare prices, find deals
View repository →
pixelpact
Measure UI implementations against a reference design contract to close the feedback loop for coding agents.

Real-time crypto asset intel for trading AIs: liquidity grades, transfer routes, spreads, BTI
