Integrations

The integrations API lets you connect client accounts to external services such as Altinn (government services), 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

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

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": {}
    }
  }
]

The status field is only included when client_account_id is provided.


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_INTEGRATION billing add-on if not already present. Requires an active bank account with the matching BIC.
  • Disabling: Removes the BANK_INTEGRATION billing 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