Integrations
The integrations API lets you connect client accounts to external services such as Altinn (government services), Skatteetaten (tax administration), Norwegian banks, Peppol (e-invoicing), ID-Porten (identity verification), and Dialogporten (government dialog platform). Each integration can be enabled or disabled per client account.
Endpoints
Altinn
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/altinn/status | Check Altinn connection status |
| POST | /integrations/altinn/authorize | Get authorization URL |
| GET | /integrations/altinn/reportees | List Altinn reportees |
| GET | /integrations/altinn/parties | Get authorized parties |
| GET | /integrations/altinn/system-users | List system users |
| POST | /integrations/altinn/system-users | Request a system user |
| GET | /integrations/altinn/system-users/{id} | Get system user status |
Skatteetaten
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/skatteetaten/eiendom/soek/{inntektsaar} | Search properties in the Skatteetaten registry |
Banks
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/banks | List supported banks |
| GET | /integrations/banks/{bic}/status | Get bank integration status |
| PATCH | /integrations/banks/{bic}/status | Enable or disable bank integration |
| GET | /integrations/banks/{bic}/pdf-forms/{form_type} | Download pre-filled bank form |
Peppol
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/peppol/status | Get Peppol status |
| PATCH | /integrations/peppol/status | Enable or disable Peppol |
ID-Porten
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/id-porten/status | Check ID-Porten connection status |
| POST | /integrations/id-porten/authorize | Get authorization URL |
Dialogporten
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/dialogporten/dialogs | Search Dialogporten dialogs |
ZData (Aritma)
| Method | Endpoint | Description |
|---|---|---|
| GET | /integrations/aritma/status | Get ZData integration status |
Altinn
Altinn is Norway’s platform for government digital services. The Snapbooks integration uses ID-Porten for authentication and supports both Altinn 2 reportees and Altinn 3 system users.
Check Altinn Status
GET /api/v2/integrations/altinn/status
Returns whether the user has an active Altinn connection via ID-Porten.
Response
{
"connected": true,
"end_session_url": "https://login.idporten.no/logout?..."
}
The end_session_url is null when not connected.
Authorize with Altinn
POST /api/v2/integrations/altinn/authorize
Returns an ID-Porten authorization URL. Redirect the user to this URL to initiate the login flow.
Response
{
"authorization_url": "https://login.idporten.no/authorize?..."
}
List Reportees
GET /api/v2/integrations/altinn/reportees
Lists the organizations and persons the authenticated user can act on behalf of in Altinn 2. Requires an active Altinn connection.
Response
Returns the Altinn HAL+JSON response with the list of reportees.
Error Responses
| Status | Description |
|---|---|
| 403 | No valid Altinn access token |
Get Authorized Parties
GET /api/v2/integrations/altinn/parties
Returns the organizations and persons the user can represent via the Altinn 3 AccessManagement API. Requires an active Altinn connection.
Response
Returns the Altinn 3 authorized parties response.
Error Responses
| Status | Description |
|---|---|
| 403 | No valid Altinn access token |
| 500 | Error fetching parties from Altinn |
List System Users
GET /api/v2/integrations/altinn/system-users
Returns a paginated list of Altinn system user requests.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | No | Filter by client account. When provided, syncs status with Altinn |
| page | integer | No | Page number (default: 1) |
| per_page | integer | No | Items per page (default: 100) |
Response
{
"items": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"external_ref": "ref-123",
"system_id": "snapbooks-prod",
"org_number": "123456789",
"client_account_id": 7,
"status": "Active",
"confirm_url": "https://altinn.no/...",
"redirect_url": "https://api.snapbooks.no/...",
"rights": [],
"created_at": "2026-03-15T10:00:00Z",
"updated_at": "2026-03-15T10:05:00Z"
}
],
"page": 1,
"per_page": 100,
"total": 1
}
System User Status Values
| Value | Description |
|---|---|
New |
Request created, awaiting user action |
Pending |
User has initiated confirmation |
Active |
System user is approved and active |
Request a System User
POST /api/v2/integrations/altinn/system-users
Creates a system user request for a client account’s organization in Altinn.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
Response
Returns the created system user object (same shape as list items).
Error Responses
| Status | Description |
|---|---|
| 400 | Missing client_account_id, client account has no organization, or request failed |
| 403 | No access to the client account |
| 404 | Client account not found |
Get System User Status
GET /api/v2/integrations/altinn/system-users/{id}
Returns the current status of a system user request. Syncs the status from Altinn on each call.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | System user UUID |
Response
Returns a single system user object.
Error Responses
| Status | Description |
|---|---|
| 400 | Failed to get status from Altinn |
| 403 | No access to this system user |
| 404 | System user not found |
Skatteetaten
Skatteetaten (the Norwegian Tax Administration) provides property data services. The Snapbooks integration proxies the Skatteetaten Eiendom API to search for properties and retrieve data for wealth tax reporting. This integration requires that the client account has an active Altinn system user with the appropriate Skatteetaten scope.
Search Properties
GET /api/v2/integrations/skatteetaten/eiendom/soek/{inntektsaar}
Searches the Skatteetaten property registry for a given tax year. This is a passthrough endpoint — it mirrors the upstream Skatteetaten API path and returns the raw response from Skatteetaten. Use the results to identify a property’s external_id before attaching it to an asset.
This endpoint uses Norwegian parameter names to match the upstream Skatteetaten API.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| inntektsaar | integer | Tax year (inntektsår) to search within |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID (used to resolve Altinn credentials) |
| query | string | Yes | Free-text search query (address, cadastral number, etc.) |
Example Request
GET /api/v2/integrations/skatteetaten/eiendom/soek/2025?client_account_id=7&query=Strandgaten%2018
Response
Returns the raw Skatteetaten search response. The shape follows the Skatteetaten Eiendom API schema.
{
"soekeresultatListe": [
{
"identifikator": "3817404-31/139/0/0",
"vegadresse": {
"adressenavn": "Strandgaten",
"husnummer": "18",
"postnummer": "5013",
"poststedsnavn": "Bergen"
},
"matrikkeladresse": {
"kommunenr": "4601",
"kommunenavn": "Bergen",
"gaardsnr": 31,
"bruksnr": 139,
"festenr": 0,
"seksjonsnr": 0
}
}
]
}
Error Responses
| Status | Description |
|---|---|
| 400 | Missing client_account_id or query |
| 403 | No access to the client account |
Banks
Connect to Norwegian banks for automatic transaction imports. Supported providers include TietoEvry (preferred) and ZData.
List Supported Banks
GET /api/v2/integrations/banks
Returns all banks supported by Snapbooks across all providers.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | No | If provided, includes integration status and filters to banks the client uses |
Response
[
{
"bic": "SPAVNOBB",
"organization": {
"id": 101,
"name": "Sparebanken Vest",
"logo": "https://...",
"website": "https://spv.no",
"country": "NO"
},
"status": {
"is_active": true,
"is_connected": true
},
"integration_config": {},
"onboarding_information": {}
}
]
The status, integration_config, and onboarding_information fields are only included when client_account_id is provided. The onboarding_information field is omitted when empty.
Get Bank Integration Status
GET /api/v2/integrations/banks/{bic}/status
Returns the integration status for a specific bank.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| bic | string | BIC/SWIFT code (e.g. SPAVNOBB) |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
Response
{
"is_active": true,
"is_connected": true,
"integration_config": {},
"onboarding_information": {}
}
Error Responses
| Status | Description |
|---|---|
| 400 | Missing client_account_id or invalid BIC |
| 403 | No access to the client account |
| 404 | Bank not supported by any provider |
Enable or Disable Bank Integration
PATCH /api/v2/integrations/banks/{bic}/status
Enables or disables the bank integration for a client account.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| bic | string | BIC/SWIFT code |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| is_active | boolean | Yes | Whether to enable or disable the integration |
| integration_config | object | No | Provider-specific configuration |
For DNB (DNBANOKK), the integration_config must include:
| Field | Type | Required | Description |
|---|---|---|---|
| division_number | string | Yes | DNB division number |
| division_name | string | Yes | DNB division name |
Example Request
{
"is_active": true,
"integration_config": {
"division_number": "001",
"division_name": "Hovedavdeling"
}
}
Response
{
"is_active": true,
"is_connected": true,
"integration_config": {
"division_number": "001",
"division_name": "Hovedavdeling"
}
}
Side Effects
- Enabling: Adds the
BANK_INTEGRATIONbilling add-on if not already present. Requires an active bank account with the matching BIC. - Disabling: Removes the
BANK_INTEGRATIONbilling add-on if no other banks are active.
Error Responses
| Status | Description |
|---|---|
| 400 | Missing required fields, invalid config, or no active bank account with this BIC |
| 403 | No access to the client account |
| 404 | Bank not supported |
Download Bank Integration Form
GET /api/v2/integrations/banks/{bic}/pdf-forms/{form_type}
Downloads a pre-filled PDF form for bank integration agreements.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| bic | string | BIC/SWIFT code |
| form_type | string | Form type. Currently only integration-agreement |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
Response
Returns a PDF file download.
Error Responses
| Status | Description |
|---|---|
| 400 | Missing parameters or unknown form type |
| 403 | No access to the client account |
| 404 | Client account, contact user, or bank accounts not found |
Peppol
Peppol is the pan-European e-invoicing network. Snapbooks supports sending and receiving invoices via Peppol.
Get Peppol Status
GET /api/v2/integrations/peppol/status
Returns the Peppol integration status. If no client_account_id is provided, returns status for all eligible client accounts.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | No | The client account ID. If omitted, returns status for all accounts |
Response (Single Client)
{
"is_active": true,
"connected": true
}
Response (All Clients)
{
"statuses": [
{
"client_account_id": 7,
"is_active": true,
"connected": true
},
{
"client_account_id": 23,
"is_active": false,
"connected": false
}
]
}
Enable or Disable Peppol
PATCH /api/v2/integrations/peppol/status
Enables or disables Peppol e-invoicing for a client account.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| is_active | boolean | Yes | Whether to enable or disable Peppol |
Example Request
{
"is_active": true
}
Response
{
"is_active": true,
"connected": true
}
Error Responses
| Status | Description |
|---|---|
| 400 | Missing client_account_id or is_active |
| 403 | No access to the client account |
| 500 | Server error |
ID-Porten
ID-Porten is Norway’s national login service. The Snapbooks integration is used to authenticate users with Altinn and other government services.
Check ID-Porten Status
GET /api/v2/integrations/id-porten/status
Returns whether the user has an active ID-Porten session.
Response
{
"connected": true,
"end_session_url": "https://login.idporten.no/logout?..."
}
The end_session_url is null when not connected.
Authorize with ID-Porten
POST /api/v2/integrations/id-porten/authorize
Returns an ID-Porten authorization URL for the OAuth2 flow. Redirect the user to this URL to start the authentication.
Response
{
"authorization_url": "https://login.idporten.no/authorize?..."
}
ZData (Aritma)
ZData provides bank integration services for some Norwegian banks. TietoEvry is the preferred provider for new integrations.
Get ZData Status
GET /api/v2/integrations/aritma/status
Returns the ZData integration status for a client account or specific bank account.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | No | The client account ID |
| bank_account_id | integer | No | A specific bank account ID. If provided, client_account_id is derived from it |
At least one of client_account_id or bank_account_id must be provided.
Response
{
"is_active": true,
"is_connected": true,
"onboarding_information": {}
}
Error Responses
| Status | Description |
|---|---|
| 400 | Neither client_account_id nor bank_account_id provided |
| 403 | No access to the client account |
| 404 | Bank account not found |
| 500 | Service error |
Dialogporten
Dialogporten is Altinn’s dialog platform for structured communication between government agencies and organizations. The Snapbooks integration lets you search dialogs for a client account’s organization in real time.
Search Dialogs
GET /api/v2/integrations/dialogporten/dialogs
Searches Dialogporten dialogs for the organization linked to a client account. Results are fetched live from the Dialogporten API and are not cached locally. Requires that the client account has an active Altinn system user.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| client_account_id | integer | Yes | The client account ID |
| status | string | No | Filter by dialog status (e.g. InProgress, Completed) |
| service_resource | string | No | Filter by service resource identifier |
Response
{
"items": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "InProgress",
"extendedStatus": null,
"serviceResource": "urn:altinn:resource:skd-amelding-tilbakemelding",
"party": "urn:altinn:organization:identifier-no:123456789",
"org": "skd",
"createdAt": "2026-03-01T10:00:00Z",
"updatedAt": "2026-03-15T14:30:00Z"
}
]
}
When the search cannot be performed (e.g. missing system user or organization number), the endpoint returns 200 with an empty list and an error field:
{
"items": [],
"error": "No organization number"
}
Error Responses
| Status | Description |
|---|---|
| 400 | Client account not found |
| 403 | No access to the client account |
Related Resources
- Client Accounts — the accounts integrations are configured for
- Bank Accounts — bank accounts used with bank integrations
- Assets — real-estate assets can be linked to Skatteetaten properties
- Authentication — OAuth2 authentication used by some integrations