Nordlet for app developers
Add invoicing, bookkeeping and EU tax filings to your software through one JSON API, typed SDKs, webhooks, an MCP server and sandbox companies.
Many apps create money events: an order is paid, a subscription renews, a refund goes out. Each of these events has to end up in a company's books.
Nordlet is accounting software built API-first. Everything the web app does is also available through one JSON API. Your app sends the events, and Nordlet keeps the books and prepares the tax filings.
What Nordlet does
- Exposes every action as
POST /v1/{module}/{resource}/{action}with a JSON body, for example/v1/sales/invoices/create. - Authenticates each request with an API key that belongs to one company. Each key carries scopes, such as
sales:readorsales:write, that limit what it can do. - Takes amounts as decimal strings, never as floating-point numbers, so no cents are lost to rounding.
- Accepts an
Idempotency-Keyheader on every change. A retry with the same key returns the first answer instead of doing the work twice. Idempotency means a repeated request has the same effect as one request. - Returns every error in one shared format.
- Allows 300 requests per minute per API key.
- Records every change in an audit log.
The API conventions guide covers each of these rules in detail.
Books that stay correct
- Issuing an invoice assigns a gapless number, checks that the accounting period is open, and posts the journal entry in the same database transaction.
- Every posting must balance. The database itself checks this when the transaction is saved.
- Issued and registered documents cannot be deleted. A wrong bank match is undone with a reversing entry, not by editing the old one. This is what an immutable ledger means.
SDKs, MCP and webhooks
- Typed SDKs are generated from the same OpenAPI description for TypeScript, Python, Go, Java, C#, Ruby, PHP, Swift and Rust. Until an SDK is published, you install it from its source repository. See the SDKs guide.
- A Postman collection with every endpoint is available.
- The MCP server lets an AI assistant such as Claude Code search the API and call it with your API key. Each call is an ordinary API request with the same scopes and limits.
- Webhooks tell your app when something happens, for example
sale_invoice.issuedorsale_invoice.paid. Each delivery is signed with an HMAC signature so you can check that it came from Nordlet. Failed deliveries are retried for about 24 hours.
Testing with sandbox companies
- Create a company with
isSandbox: true, or tick the sandbox box when you set up a company in the app. - A sandbox company works like a real one: same modules, same API.
- It is clearly marked as test data, and you cannot turn a real company into a sandbox or back.
- Filings and e-invoices of a sandbox company go to the administrations' test services.
- Usage in a sandbox company is metered and billed like usage in a real company.
The getting started guide walks through the first API key, the first invoice and the full cycle.
Frequently asked questions
Can one app serve several companies?
Yes. Each API key belongs to one company, so you create a key per company. Every webhook delivery carries the companyId of the company it belongs to, so one receiver can serve several companies.
Do I have to build the tax filings myself?
No. Nordlet builds the filings from the books. For each filing it either sends it, builds a file you upload, or shows figures you key in, depending on the country. The filing support table lists every case.