Introduction

The Risika API uses JWT (JSON Web Token) for authorization. If you don't have token yet, please contact your sales representative or see our website for prices.

The API is REST-based and you authorize requests to the API by providing your authorization token in the request header. The authorization token you need to use depends on what type of request you want to make. There is an refresh token that works as your identity. It is used to generate access tokens that are used to request data from the API: e.g. get financial information for a given company.

Headers

All the endpoints require an authorization token (access or refresh token) with the Authorization header. You should also specify the Content-Type header as "application/json", but this is the only supported format, so consider it optional.

Some endpoints also allow you to specify an Accept-Language header to get the text in different languages. We currently support Danish and English with the following codes, respectively: da-DK, en-UK.

Notes about anonymous Swedish companies

In Sweden, sole proprietorships use the owner's social security number to identify the company. This means that the ID of the company is private and it should not be publicly available. This means that queries on the platform will only show an anonymized company ID for sole proprietorships.

If you are trading with this company, you will usually get their company ID for invoices. If you have the company ID, you can use it to query the company directly as you would with Danish and Norweigan companies.

If you don't have the company ID (e.g. used the search end-point to find it), you get an unique hash instead. This hash can be used as an alternative to the company ID for Swedish companies. The hash is only necessary for sole proprietorships, but can be used for all Swedish companies.

As an example, you can query this sole proprietorship using the hash:

GET https://api.risika.dk/v1.2/se/company/basics/c5003dc23321660c66e90d6ee5303b4c

"local_organization_id": {
    "country": "SE",
    "hash": "c5003dc23321660c66e90d6ee5303b4c",
    "id": "161025XXXX"
}

You can also query IKEA, which is not a sole proprietorship with a hash:

GET https://api.risika.dk/v1.2/se/company/basics/5bb0a470e09b3629ab23d6beae2ecea4

"local_organization_id": {
    "country": "SE",
    "hash": "5bb0a470e09b3629ab23d6beae2ecea4",
    "id": "5568099963"
}

Access Token

Access tokens give you temporary access to all your resources while off-loading traffic from our user servers and gives you faster response times.

The access token has a payload with all the information we need about you to authorize your requests. The access token contains an expiration date, which you should check in your script automatically and request a new access token when it is about to expire.

You can learn more about JWT here.

Generate an access token

Using this endpoint, you can generate an access token from your refresh token. Your refresh token is permanent, while the access token only lives for a while. This is done to improve security and offload the API servers. After the 10 minute timeframe, you can request a new one.

GET
/access/refresh_token

Example request

r = requests.get("https://api.risika.dk/v1.2/access/refresh_token",
                 headers={"Authorization": <refresh_token>,
                          "Content-Type": "application/json"})
token = r.json().get("token")

Example response

{
  "token": "jwt eyJ0eXAiOiJKV1QiLCJhbG ..."
}

Create an Access Class

NB: Not available for cURL

Copy the code from the example and replace "jwt ..." with your token in self._refresh_token. After that, you should be able to initialize the class with access = Access(). You can then use the class property access.token as a variable, which will always have a valid access token. If the token expires, if will automatically request a new one.

When installing dependencies, please note that jwt is installed with pip install pyjwt. The version of jwt you get from pip install jwt is not compatible!

Access Class

import requests
import time
import jwt  # install with "pip install pyjwt", NOT "pip install jwt"


class Access():
    def __init__(self):
        self._url = "https://api.risika.dk/v1.2"
        self._refresh_token = "jwt ..."

        self._access_token = None
        self._expires = None

        # Seconds to subtract from token expiration to avoid race condition. If
        # a token is about to expire, it may have expired when the request
        # reaches the server. X must be larger than you timeout policy.
        self._expiration_margin = 10

        self._refresh()

    def _refresh(self):
        # Get an access token using our refresh token
        r = requests.get("%s/access/refresh_token" % self._url,
                         headers={"Authorization": self._refresh_token,
                                  "Content-Type": "application/json"})

        # Save the access token for calls to self.token()
        self._access_token = r.json()["token"]

        # Skip the prepended "jwt" and extract the expiration time from the JWT.
        # We do not have the token secret, so verification is not possible.
        token = jwt.decode(self._access_token[4:], verify=False)
        self._expires = token["exp"] - self._expiration_margin

    @property
    def token(self):
        if self._expires < time.time():
            self._refresh()

        return self._access_token

access = Access()
r = requests.get("https://api.risika.dk/v1.2/dk/company/basics/37677892",
                 headers={"Authorization": access.token,
                          "Accept-Language": "da-DK",
                          "Content-Type": "application/json"})

print(r.json())

Company Information

The end-points that starts with /{country}/company/ offers general infomation the company such as address, phone number, number of employees and people who are related to the company.

Company Basics

To get the general infomation about a company, you make a request to GET /{country}/company/basics/{local_id}.

This end-point supports the Accept-Language header described in Headers.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Table with brief descriptions of all variables delivered by Company Basics:

Value Description
local_organization_id The local id and country code of the company requested
address The address with city, coname, number, street, country, zipcode, postdistrict. Values may be null.
status The status of the company. See Company Status for full list of statuses. This end-point change language depending on Accept-Language
status_code Shows the same information as status, but is not affected by Accept-Language
advertisement_protection true/false whether the contact information can be used for advertisement. See advertisement protection for more information.
financial_reports true/false whether this company has or is able to submit financial reports
main_industry_code See industry for more information.
secondary_industry_codes The secondary industry code
number_of_employees The number of employees in intervals (1, 2-4, 5-9, 10-19, 20-49, 50-99, 100-199, 200-499, 500-999, 1000+)
last_report_date The date of the last report, if it has any
date_of_incorporation The date of which the company was established
company_type See company type for more information.
score The current risika score of the company
risk_assessment Shows a risk assessment for companies that cannot have a risika score (e.g. ENK companies in Denmark)
risk_assessment_code Shows the same information as risk_assessment_code, but is not affected by Accept-Language. The value can be HIGH, MEDIUM, LOW
registered_capital The registered capital in the company. See registered capital for more information.
company_name The primary name of the company
company_secondary_names A list of aliases for the company
holding_company Some holding companies does not have the correct industry. This value shows if our analysis proves this should be a holding company. See holding company for more information.
powers_to_bind A description of who has the powers to sign binding documents. See powers to bind for more information.
email The email of the company and whether or not it can be used for advertisement
phone The phone number of the company and whether or not it can be used for advertisement
bank Bank information provided from the newest financial statement
vat Boolean value showing if the company is registered for VAT (can be null if unknown)

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/company/basics/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
    "address": {
        "city": "K\u00f8benhavn K",
        "coname": null,
        "country": "DK",
        "municipality": "K\u00f8benhavn",
        "number": "26, st.",
        "postdistrict": "K\u00f8benhavn K",
        "street": "Kronprinsessegade",
        "zipcode": 1306
    },
    "advertisement_protection": true,
    "bank": null,
    "company_name": "RISIKA A/S",
    "company_secondary_names": [
        {
            "name": "Global Business Platform ApS",
            "valid_from": "2016-04-30",
            "valid_to": "2017-05-17"
        },
        {
            "name": "Globus Platform ApS",
            "valid_from": "2017-01-14",
            "valid_to": "2017-05-17"
        }
    ],
    "company_type": {
        "long": "Aktieselskab",
        "short": "A/S"
    },
    "date_of_incorporation": "2016-04-30",
    "email": {
        "email": "contact@risika.dk",
        "hidden": false
    },
    "financial_reports": true,
    "holding_company": false,
    "last_report_date": "2018-12-31",
    "local_organization_id": {
        "country": "DK",
        "id": "37677892"
    },
    "main_industry_code": {
        "code": 829100,
        "description": "Inkassovirksomhed og kreditoplysning"
    },
    "number_of_employees": {
        "interval": "10-19",
        "source": null
    },
    "phone": {
        "hidden": false,
        "phone_number": "42905757"
    },
    "powers_to_bind": "Selskabet tegnes af en direkt\u00f8r i forening med et medlem af bestyrelsen eller af den samlede bestyrelse",
    "registered_capital": {
        "currency": null,
        "value": 501310.0
    },
    "risk_assessment": "High",
    "risk_assessment_code": "HIGH",
    "score": 3,
    "secondary_industry_codes": [
        {
            "group_name": "Databehandling, webhosting og lignende serviceydelser; webportaler",
            "industry_code": 631100,
            "industry_description": "Databehandling, webhosting og lignende serviceydelser",
            "priority": 1,
            "section": "J"
        },
        {
            "group_name": "Computerprogrammering, konsulentbistand vedr\u00f8rende informationsteknologi og lignende aktiviteter",
            "industry_code": 620200,
            "industry_description": "Konsulentbistand vedr\u00f8rende informationsteknologi",
            "priority": 2,
            "section": "J"
        }
    ],
    "status": "Active",
    "status_code": "ACTIVE",
    "vat": true
}

Find EAN using CVR

You can look up the EAN-number (what is an EAN-number?) of a company using the CVR-number and the optional key argument to specify the type of EAN-number (the key can be any of the following: DK:P, GLN, DK:CVR, DK:SE, DK:VANS).

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/company/ean",
                 params={"cvr": 25362365},
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
    {
        "key": "5790001718633",
        "keytype": "GLN",
        "local_id": "25362365",
        "name": "KONTAKT ApS"
    },
    {
        "key": "25362365",
        "keytype": "DK:CVR",
        "local_id": "25362365",
        "name": "KONTAKT ApS"
    }
]

Find CVR using EAN

If you have the EAN-number, but wants to find the CVR-number, you can do so by querying for the key without cvr.

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/company/ean",
                 params={"key": 5790001899950},
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
    {
        "key": "5790001899950",
        "keytype": "GLN",
        "local_id": "10404916",
        "name": "Tivoli / Nimb"
    }
]

Company Relations

This endpoint is used to get all the relational information for a given company. You will get the owners, directors, together with a date for when the person got the role.

This end-point supports the Accept-Language header described in Headers.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Table with brief descriptions of all variables delivered by Company Relations:

Value Description
personal_id personal_id of subject related to the company.
name Name of subject related to the company.
type Type of subject related to the company. Can either be PERSON or VIRKSOMHED (the Danish word for company)
functions Historical list of functions the subject related to the company has in the company.
local_organization_id local_id of the subject related to the company if the subject is a company.

Table with variables delivered by functions in Company Relations:

Value Description
function See company functions for more information.
valid_from Date where the function is valid from.
valid_to Date where the function is valid to. If the function is still active valid_toreturns NULL
shares Shares held by the subject. See shareholder for more information.
shares_interval Shares reported in share interval held by the subject. See shareholder for more information.

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/company/relations/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
    "relations": [
        {
            "functions": [
                {
                    "function": "AUDIT",
                    "title": "Audit",
                    "valid_from": "2019-02-13",
                    "valid_to": null
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "19263096"
            },
            "name": "inforevision statsautoriseret revisionsaktieselskab",
            "personal_id": 3369870,
            "type": "COMPANY"
        },
        {
            "functions": [
                {
                    "function": "BOARD OF DIRECTORS",
                    "title": "Board of Directors",
                    "valid_from": "2019-01-14",
                    "valid_to": null
                }
            ],
            "name": "Martin Lavesen",
            "personal_id": 4000397851,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "BOARD OF DIRECTORS",
                    "title": "Board of Directors",
                    "valid_from": "2019-01-14",
                    "valid_to": "2019-03-18"
                }
            ],
            "name": "Niels Gade-Jacobsen",
            "personal_id": 4000569667,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2016-12-31",
                    "valid_to": "2017-05-18"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 30.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2018-03-06",
                    "valid_to": "2018-04-01"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 50.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2016-12-31",
                    "valid_to": "2018-03-05"
                }
            ],
            "name": "Hanne Bach-Nielsen",
            "personal_id": 4000625364,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2018-04-01",
                    "valid_to": null
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 30.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2018-04-01",
                    "valid_to": "2018-10-28"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 27.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2018-10-29",
                    "valid_to": "2019-02-18"
                }
            ],
            "name": "Nicolai Rasmussen",
            "personal_id": 4000652101,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2016-07-01",
                    "valid_to": "2016-12-31"
                }
            ],
            "name": "Poul Erik M\u00f8lgaard Rasmussen",
            "personal_id": 4000679462,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "BOARD OF DIRECTORS",
                    "title": "Board of Directors",
                    "valid_from": "2019-03-18",
                    "valid_to": null
                }
            ],
            "name": "Peter Christian Schmiegelow",
            "personal_id": 4000693282,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "CHAIRMAN",
                    "title": "Chairman",
                    "valid_from": "2019-01-14",
                    "valid_to": null
                }
            ],
            "name": "Mads Guttorm Jakobsen",
            "personal_id": 4004175969,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "FOUNDER",
                    "title": "Founder",
                    "valid_from": "2016-04-30",
                    "valid_to": null
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "20-24.99%",
                    "title": "Legal Owner",
                    "valid_from": "2019-02-18",
                    "valid_to": null
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "100%",
                    "title": "Legal Owner",
                    "valid_from": "2016-07-01",
                    "valid_to": "2017-05-17"
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "25-33.33%",
                    "title": "Legal Owner",
                    "valid_from": "2018-03-06",
                    "valid_to": "2019-02-17"
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "50-66.65%",
                    "title": "Legal Owner",
                    "valid_from": "2017-05-18",
                    "valid_to": "2018-03-05"
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "36701927"
            },
            "name": "N. Rasmussen Holding ApS",
            "personal_id": 4005959089,
            "type": "COMPANY"
        },
        {
            "functions": [
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "10-14.99%",
                    "title": "Legal Owner",
                    "valid_from": "2019-02-18",
                    "valid_to": null
                }
            ],
            "name": "Simon Turner",
            "personal_id": 4006184467,
            "type": "OTHER"
        },
        {
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2017-05-18",
                    "valid_to": "2018-03-31"
                },
                {
                    "function": "CHIEF EXECUTIVE OFFICER",
                    "title": "Chief Executive Officer",
                    "valid_from": "2018-04-01",
                    "valid_to": null
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 45.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2018-03-06",
                    "valid_to": "2018-10-28"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 50.0,
                    "title": "Beneficial Owner",
                    "valid_from": "2017-05-18",
                    "valid_to": "2018-03-05"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 41.4,
                    "title": "Beneficial Owner",
                    "valid_from": "2018-10-29",
                    "valid_to": "2019-02-17"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "shares": 34.050000000000004,
                    "title": "Beneficial Owner",
                    "valid_from": "2019-02-18",
                    "valid_to": null
                }
            ],
            "name": "Timm Jeppesen",
            "personal_id": 4006873173,
            "type": "PERSON"
        },
        {
            "functions": [
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "50-66.65%",
                    "title": "Legal Owner",
                    "valid_from": "2017-05-18",
                    "valid_to": "2018-03-05"
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "33.34-49.99%",
                    "title": "Legal Owner",
                    "valid_from": "2018-03-06",
                    "valid_to": null
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "38599070"
            },
            "name": "TJ Formueinvest ApS",
            "personal_id": 4006873174,
            "type": "COMPANY"
        },
        {
            "functions": [
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "20-24.99%",
                    "title": "Legal Owner",
                    "valid_from": "2018-10-29",
                    "valid_to": "2019-02-17"
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "10-14.99%",
                    "title": "Legal Owner",
                    "valid_from": "2019-02-18",
                    "valid_to": null
                },
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "25-33.33%",
                    "title": "Legal Owner",
                    "valid_from": "2018-03-06",
                    "valid_to": "2018-10-28"
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "39258072"
            },
            "name": "Perceval ApS",
            "personal_id": 4007482058,
            "type": "COMPANY"
        },
        {
            "functions": [
                {
                    "function": "LEGAL OWNER",
                    "shares_interval": "10-14.99%",
                    "title": "Legal Owner",
                    "valid_from": "2019-02-18",
                    "valid_to": null
                }
            ],
            "name": "Sort Hest Limited",
            "personal_id": 4007487941,
            "type": "OTHER"
        }
    ]
}

Financial

Using the financial end-points, you can get access to a companies financial reports, key figures, information about the auditor and a link to their official financial report. The financial information have been categorized into four types/end-points: Numbers, stats, performance and ratios. You can read more about the specific types below.

Common for numbers, stats, and ratios is that they all return lists with information for each annual report. The reports are sorted by date.

If you query a Company ID and it returns an empty list, it either means that the Company ID doesn't exist (confirm this with a call to /company/basics/{local_id}) or that the company is not obligated to submit financial reports.

The reports are filtered, so it only outputs annual reports. Some companies submit quarterly or semi-annually, but these are not included in the API.

Financial Numbers

This endpoint provides you with all the relevant financial numbers for a given company. You can read about the limitations in Financial

Expand Endpoint Description to see description of each financial number

Endpoint Description

Financial Numbers - Income Statement

An income statement is one of the three important financial statements used for reporting a company's financial performance over a specific accounting period, with the other two key statements being the balance sheet and the statement of cash flows. Also known as the profit and loss statement or the statement of revenue and expense, the income statement primarily focuses on company’s revenues and expenses during a particular period.

Variable Danish Translation
revenue Omsætning
other_income Anden indtægter
costs Omkostninger (Variable omkostninger)
gross_result Bruttoresultat
operating_costs Operationelle udgifter (Faste omkostninger)
other_operating_income Andre operationelle indtægter
staff_expenses Medarbejder udgifter
ebitda EBITDA
depreciation Afskrivninger
ebit EBIT
interest_income Renteindtægter
interest_expenses Renteudgifter
other_net_financial_income Andet finansielt resultat
net_financial_income Netto finansielle poster
ordinary_profit Ordinært resultat
extraordinary_item Ekstraordinære poster
profit_loss_before_tax Resultat før skat
tax_expenses Udgifter til skat
profit_loss Årets resultat / Endeligt resultat
  • EBIT = Earnings Before Interest and Taxes
  • EBITDA = Earnings Before Interest, Taxes, Depreciation and Amortization

Financial Numbers - Balance Sheet

A balance sheet is a financial statement that reports a company's assets, liabilities and shareholders' equity at a specific point in time, and provides a basis for computing rates of return and evaluating its capital structure. It is a financial statement that provides a snapshot of what a company owns and owes, as well as the amount invested by shareholders.

Balance Sheet - Assets

In financial accounting, an asset is any resource owned by the business. Anything tangible or intangible that can be owned or controlled to produce value and that is held by a company to produce positive economic value is an asset. Simply stated, assets represent value of ownership that can be converted into cash (although cash itself is also considered an asset). The balance sheet of a firm records the monetary value of the assets owned by that firm. It covers money and other valuables belonging to an individual or to a business.

Variable Danish Translation
goodwill Goodwill
other_intangible_assets Andre immatrielle anlægsaktiver
intangible_assets Immatrielle anlægsaktiver i alt
land_and_buildings Grunde og bygninger
plant_equipment_and_fixtures Driftsmidler
other_property_plant_and_equipment Andre materielle anlægsaktiver
property_plant_and_equipment Materielle anlægsaktiver i alt
noncurrent_receivables Langfristede tilgodehavender
noncurrent_investments Kapitalinteresser
other_noncurrent_financial_assets Andre finansielle anlægsaktiver
noncurrent_financial_assets Finansielle anlægsaktiver i alt
noncurrent_assets Anlægsaktiver i alt
inventories Varebeholdning
current_prepayments Forudbetalinger
short_term_receivables_from_sales_and_services Tilgodehavender fra salg og services
short_term_receivables_from_group_enterprises Tilgodehavender fra nærtstående parter
other_short_term_receivables Andre tilgodehavender
short_term_receivables Kortfristede tilgodehavender i alt
current_financial_assets Kortfristede finansielle aktiver / Værdipapirer
cash Likvide midler
current_assets Omsætningsaktiver i alt
assets Aktiver i alt

Balance Sheet - Liabilities and Equity

A liability, in general, is an obligation to or something that you owe somebody else. Liabilities are defined as a company's legal financial debts or obligations that arise during the course of business operations. Liabilities are settled over time through the transfer of economic benefits including money, goods, or services. Recorded on the right side of the balance sheet, liabilities include loans, accounts payable, mortgages, deferred revenues, and accrued expenses.

Equity is typically referred to as shareholder equity (also known as shareholders' equity) which represents the amount of money that would be returned to a company’s shareholders if all of the assets were liquidated and all of the company's debt was paid off.

Column Name Danish Translation
contributed_capital Selskabskapital
reserves Reserveringer
dividend Udbytte
retained_earnings Overført resultat
equity_before_minority_interests Egenkapital før minoritets interesser
minority_interests Minoritets interessanter
equity Egenkapital i alt
provisions Hensættelser / Hensatte forpligtelser
long_term_debt_to_group_enterprises Langfristet gæld til nærtstående parter
long_term_debt_to_banks Langfristet gæld til banker og andre kreditinstitutioner
long_term_mortgage_debt Langfristet realkredit gæld
equity_loan Ansvarlig lånekapital
deferred_tax Udskudt skat
other_long_term_debt Anden langfristet gæld
long_term_debt Langfristet gæld i alt
short_term_debt_to_group_enterprises Kortfristet gæld til nærtstående parter
short_term_debt_to_banks Kortfristet gæld til banker og andre kreditinstitutioner
short_term_mortgage_debt Kortfristet realkredit gæld
short_term_trade_payables Varekreditorer
short_term_tax_payables Selskabsskat
other_short_term_debt Anden kortfristet gæld
short_term_debt Kortfristet gæld i alt
debt Gæld i alt
liabilities_and_equity Passiver i alt

GET
/{country}/financial/numbers/{local_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/financial/numbers/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
  {
    "period": {
      "start": "2018-01-01",
      "end": "2018-12-31"
    },
    "revenue": null,
    "other_income": null,
    "costs": 0.0,
    "gross_result": -557581.0,
    "operating_costs": 0.0,
    "other_operating_income": 190000.0,
    "staff_expenses": 128950.0,
    "ebitda": -496531.0,
    "depreciation": 417673.0,
    "ebit": -914204.0,
    "interest_income": 0.0,
    "interest_expenses": -22900.0,
    "other_net_financial_income": 0.0,
    "net_financial_income": -22900.0,
    "ordinary_profit": -534098.0,
    "extraordinary_item": 0.0,
    "profit_loss_before_tax": -937104.0,
    "tax_expenses": -201503.0,
    "profit_loss": -735601.0,
    "goodwill": 0.0,
    "other_intangible_assets": 0.0,
    "intangible_assets": 1380614.0,
    "land_and_buildings": 0.0,
    "plant_equipment_and_fixtures": 0.0,
    "other_property_plant_and_equipment": 0.0,
    "property_plant_and_equipment": 0.0,
    "noncurrent_receivables": 0.0,
    "noncurrent_investments": 0.0,
    "other_noncurrent_financial_assets": 0.0,
    "noncurrent_financial_assets": 0.0,
    "noncurrent_assets": 1380614.0,
    "inventories": 0.0,
    "current_prepayments": 0.0,
    "short_term_receivables_from_sales_and_services": 13662.0,
    "short_term_receivables_from_group_enterprises": 0.0,
    "other_short_term_receivables": 571258.0,
    "short_term_receivables": 584920.0,
    "current_financial_assets": 0.0,
    "cash": 45317.0,
    "current_assets": 630237.0,
    "assets": 2010851.0,
    "contributed_capital": 399406.0,
    "reserves": 1076879.0,
    "dividend": 0.0,
    "retained_earnings": -576556.0,
    "equity_before_minority_interests": 899729.0,
    "minority_interests": 0.0,
    "equity": 899729.0,
    "provisions": 681195.0,
    "long_term_debt_to_group_enterprises": 0.0,
    "long_term_debt_to_banks": 0.0,
    "long_term_mortgage_debt": 0.0,
    "equity_loan": 0.0,
    "deferred_tax": 0.0,
    "other_long_term_debt": 0.0,
    "long_term_debt": 0.0,
    "short_term_debt_to_group_enterprises": 0.0,
    "short_term_debt_to_banks": 0.0,
    "short_term_mortgage_debt": 0.0,
    "short_term_trade_payables": 61334.0,
    "short_term_tax_payables": 0.0,
    "other_short_term_debt": 165437.0,
    "short_term_debt": 429927.0,
    "debt": 429927.0,
    "liabilities_and_equity": 2010851.0
  },
  {
    "period": {
      "start": "2016-07-01",
      "end": "2017-12-31"
    },
    "revenue": null,
    "other_income": null,
    "costs": 0.0,
    "gross_result": -114631.0,
    "operating_costs": 0.0,
    "other_operating_income": 0.0,
    "staff_expenses": 0.0,
    "ebitda": -114631.0,
    "depreciation": 56216.0,
    "ebit": -170847.0,
    "interest_income": 0.0,
    "interest_expenses": 0.0,
    "other_net_financial_income": 0.0,
    "net_financial_income": 0.0,
    "ordinary_profit": -96415.0,
    "extraordinary_item": 0.0,
    "profit_loss_before_tax": -170847.0,
    "tax_expenses": -37216.0,
    "profit_loss": -133631.0,
    "goodwill": 0.0,
    "other_intangible_assets": 199881.0,
    "intangible_assets": 199881.0,
    "land_and_buildings": 0.0,
    "plant_equipment_and_fixtures": 0.0,
    "other_property_plant_and_equipment": 0.0,
    "property_plant_and_equipment": 0.0,
    "noncurrent_receivables": 0.0,
    "noncurrent_investments": 0.0,
    "other_noncurrent_financial_assets": 2500.0,
    "noncurrent_financial_assets": 2500.0,
    "noncurrent_assets": 202381.0,
    "inventories": 0.0,
    "current_prepayments": 0.0,
    "short_term_receivables_from_sales_and_services": 0.0,
    "short_term_receivables_from_group_enterprises": 0.0,
    "other_short_term_receivables": 110505.0,
    "short_term_receivables": 110505.0,
    "current_financial_assets": 0.0,
    "cash": 25461.0,
    "current_assets": 135966.0,
    "assets": 338347.0,
    "contributed_capital": 50000.0,
    "reserves": 375907.0,
    "dividend": 0.0,
    "retained_earnings": -289538.0,
    "equity_before_minority_interests": 136369.0,
    "minority_interests": 0.0,
    "equity": 136369.0,
    "provisions": 43974.0,
    "long_term_debt_to_group_enterprises": 0.0,
    "long_term_debt_to_banks": 0.0,
    "long_term_mortgage_debt": 0.0,
    "equity_loan": 0.0,
    "deferred_tax": 0.0,
    "other_long_term_debt": 0.0,
    "long_term_debt": 0.0,
    "short_term_debt_to_group_enterprises": 0.0,
    "short_term_debt_to_banks": 0.0,
    "short_term_mortgage_debt": 0.0,
    "short_term_trade_payables": 76324.0,
    "short_term_tax_payables": 0.0,
    "other_short_term_debt": 81680.0,
    "short_term_debt": 158004.0,
    "debt": 158004.0,
    "liabilities_and_equity": 338347.0
  }
]

Financial Ratios

This endpoint provides some ratios that we have calculated from their financial report. These include ratios like interest coverage, return on equity (ROE), return on investment (ROI), etc. You can read about the general limitations in Financial

Expand Endpoint Description to see description of each financial ratio

Endpoint Description

Financial Key Figure

A financial key figure or financial ratio or accounting ratio is a relative magnitude of two selected numerical values taken from an enterprise's financial statements. Often used in accounting, there are many standard ratios used to try to evaluate the overall financial condition of a corporation or other organization.

Profitability Ratios

Profitability ratios are a class of financial metrics that are used to assess a business's ability to generate earnings relative to its revenue, operating costs, balance sheet assets, and shareholders' equity over time, using data from a specific point in time.

Variable Danish Translation Formula
gross_margin Dækningsgrad gross_result / revenue
operating_margin Overskudsgrad ebit / revenue
profit_margin Resultatgrad profit_loss / revenue
return_on_equity Egenkapitalens forrentning profit_loss / equity
return_on_equity_with_average Egenkapitalens forrentning profit_loss / ((equity1 + equity2)/2)
return_on_assets Afkastningsgrad profit_loss / assets
return_on_assets_with_average Afkastningsgrad profit_loss / ((assets1 + assets2)/2)
return_on_net_assets Nettokapitalforretning (RONA) profit_loss / (assets - debt)
return_on_net_assets_with_average Nettokapitalforretning (RONA)
basic_earning_power Primær indtjeningsevne (BEP) ebit / assets
basic_earning_power_with_average Primær indtjeningsevne (BEP) ebit / ((assets1 + assets2)/2)
cash_conversion_rate Pengestrømskonverteringsrate ebitda / profit_loss

Liquidity Ratios

Liquidity ratios are an important class of financial metrics used to determine a debtor's ability to pay off current debt obligations without raising external capital. Liquidity ratios measure a company's ability to pay debt obligations and its margin of safety through the calculation of metrics including the current ratio, quick ratio, and operating cash flow ratio.

Variable Danish Translation Definition
asset_turnover Aktivernes omsætningshastighed revenue / assets
asset_turnover_with_average Aktivernes omsætningshastighed revenue / ((assets1 + assets2)/2)
cash_ratio Pengeraten cash / short_term_debt
capacity_ratio Kapacitetsgrad gross_result / (gross_result - ebit)
current_ratio Likviditetsgrad current_assets / short_term_debt
quick_ratio Kortsigtet likviditetsgrad (current_assets - inventories) / short_term_debt
current_assets_to_equity Omsætningsaktiver-til-egenkapital rate current_assets / equity
inventory_conversion_ratio Varelagerets omsætningshastighed 365.25 / (revenue / inventories)

Debt Ratios / Leveraging Ratios

A leverage ratio is any one of several financial measurements that look at how much capital comes in the form of debt (loans) or assesses the ability of a company to meet its financial obligations. The leverage ratio category is important because companies rely on a mixture of equity and debt to finance their operations, and knowing the amount of debt held by a company is useful in evaluating whether it can pay its debts off as they come due.

Variable Danish Translation Definition
debt_ratio Gældsgrad debt / assets
debt_to_equity_ratio Gæld til egenkapital rate debt / equity
fixed_assets_to_long_term_liabilities_ratio Kapitalbindingsgrad noncurrent_assets / (equity + long_term_debt)
income_to_debt_ratio Profit til gæld rate profit_loss / debt
income_to_debt_ratio_with_average Profit til gæld rate profit_loss / debt
ebitda_to_debt_ratio EBITDA til gæld rate ebitda / debt
ebitda_to_debt_ratio_with_average EBITDA til gæld rate ebitda / debt
interest_coverage Rentedækningsgrad ebit / ABS(interest_expenses)
interest_margin Rentemarginal
interest_rate_on_debt_with_average Gældsrente
solidity_ratio Soliditetsgrad equity / assets
liabilities_to_equity_ratio Forpligtelsernes gearing (liabilities_and_equity - equity) / equity

Other Ratios

Variable Danish Translation Definition
one_year_change_in_equity Årlig ændring i egenkapital (equity1 / equity2) - 1
one_year_change_in_debt Årlig ændring i gæld (debt1 / debt2) - 1
equity_to_contributed_capital_ratio Egenkapital til selskabskapital rate equity / contributed_capital
gross_profit_per_employee Bruttofortjeneste per medarbejder gross_result / averagenumberofemployees
net_income_per_employee Nettoresultat per medarbejder profit_loss / averagenumberofemployees
revenue_per_employee Omsætning per medarbejder revenue / averagenumberofemployees

GET
/{country}financial/ratios/{local_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/financial/ratios/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
  {
    "period": {
        "end": "2018-12-31",
        "start": "2018-01-01"
    },
    "asset_turnover": null,
    "asset_turnover_with_average": null,
    "basic_earning_power": -0.4546,
    "basic_earning_power_with_average": -0.7783,
    "capacity_ratio": -1.5635,
    "cash_conversion_rate": 0.675,
    "cash_ratio": 0.1054,
    "current_assets_to_equity": 0.7005,
    "current_ratio": 1.4659,
    "debt_ratio": 0.2138,
    "debt_to_equity_ratio": 0.4778,
    "ebitda_to_debt_ratio": -1.1549,
    "ebitda_to_debt_ratio_with_average": -1.6891,
    "equity_to_contributed_capital_ratio": 2.2527,
    "fixed_assets_to_long_term_liabilities_ratio": 1.5345,
    "gross_margin": null,
    "gross_profit_per_employee": -111516.2,
    "income_to_debt_ratio": -1.711,
    "income_to_debt_ratio_with_average": -2.5023,
    "interest_coverage": -39.9216,
    "interest_margin": -0.635,
    "interest_rate_on_debt_with_average": 0.0087,
    "inventory_conversion_ratio": null,
    "liabilities_to_equity_ratio": 1.235,
    "net_income_per_employee": -147120.2,
    "one_year_change_in_debt": 1.721,
    "one_year_change_in_equity": 5.5978,
    "operating_margin": null,
    "profit_margin": null,
    "quick_ratio": 1.4659,
    "return_on_assets": -0.3658,
    "return_on_assets_with_average": -0.6263,
    "return_on_equity": -0.8176,
    "return_on_equity_with_average": -1.4199,
    "return_on_net_assets": -0.4653,
    "return_on_net_assets_with_average": -0.8353,
    "revenue_per_employee": null,
    "solidity_ratio": 0.4474
  },
  {
    "period": {
        "end": "2017-12-31",
        "start": "2016-07-01"
    },
    "asset_turnover": null,
    "asset_turnover_with_average": null,
    "basic_earning_power": -0.5049,
    "basic_earning_power_with_average": null,
    "capacity_ratio": -2.0391,
    "cash_conversion_rate": 0.8578,
    "cash_ratio": 0.1611,
    "current_assets_to_equity": 0.997,
    "current_ratio": 0.8605,
    "debt_ratio": 0.467,
    "debt_to_equity_ratio": 1.1587,
    "ebitda_to_debt_ratio": -0.7255,
    "ebitda_to_debt_ratio_with_average": null,
    "equity_to_contributed_capital_ratio": 2.7274,
    "fixed_assets_to_long_term_liabilities_ratio": 1.4841,
    "gross_margin": null,
    "gross_profit_per_employee": null,
    "income_to_debt_ratio": -0.8457,
    "income_to_debt_ratio_with_average": null,
    "interest_coverage": null,
    "interest_margin": null,
    "interest_rate_on_debt_with_average": null,
    "inventory_conversion_ratio": null,
    "liabilities_to_equity_ratio": 1.4811,
    "net_income_per_employee": null,
    "one_year_change_in_debt": null,
    "one_year_change_in_equity": null,
    "operating_margin": null,
    "profit_margin": null,
    "quick_ratio": 0.8605,
    "return_on_assets": -0.395,
    "return_on_assets_with_average": null,
    "return_on_equity": -0.9799,
    "return_on_equity_with_average": null,
    "return_on_net_assets": -0.741,
    "return_on_net_assets_with_average": null,
    "revenue_per_employee": null,
    "solidity_ratio": 0.403
  }
]

Financial Stats

This endpoint has information about each financial report. We provide information about who audited the report, when it was approved, a link to the actual PDF report, whether they are IFRS (International Financial Reporting Standards) compliant, etc.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Table with brief descriptions of all variables delivered by Financial Stats:

Value Description
period Contains start and end date for the reporting period of the financial statement. See reporting period for more information.
pdf_link Link to pdf version of the financial statement.
type See types of financial statements for more information.
class_of_reporting_entity See class of reporting entity for more information.
approval_date Date of the approval of the financial statement.
general_meeting_date Date of the general meeting related to the financial statement. Usually, the approval_date is identical to general_meeting_date. See general meeting for more information.
auditor Contains auditor information: name, description, type_of_auditor_assistance, company_id and company_name. See auditor for more information.
currency Specifies the reporting currency. See currency for more information.
ifrs true/false indication of if the financial statement is following IFRS auditing rules. See IFRS for more information.

GET
/{country}/financial/stats/{local_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/financial/stats/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
  {
    "period": {
      "start": "2018-01-01",
      "end": "2018-12-31"
    },
    "pdf_link": "http://regnskaber.virk.dk/29877673/ZG9rdW1lbnRsYWdlcjovLzAzLzhlL2FhLzgwL2ZiL2EzN2QtNDA2Ny05NDVkLWRhN2MxNWQ5MzhlMA.pdf",
    "type": "ANNUAL REPORT",
    "class_of_reporting_entity": "REPORTING CLASS B",
    "approval_date": "2019-04-10",
    "general_meeting_date": "2019-04-19",
    "auditor": {
      "name": "Michael Dam-Johansen",
      "description": "statsautoriseret revisor",
      "type_of_assistance": "AUDITOR'S REPORT",
      "company_id": "19263096",
      "company_name": "inforevision statsautoriseret revisionsaktieselskab"
    },
    "currency": "DKK",
    "ifrs": false
  },
  {
    "period": {
      "start": "2016-07-01",
      "end": "2017-12-31"
    },
    "pdf_link": "http://regnskaber.virk.dk/29877673/ZG9rdW1lbnRsYWdlcjovLzAzLzM2LzhlL2E0L2Q4LzdkMmMtNDBmYy04ZWIxLWFmYzFhZTg4YjNhOQ.pdf",
    "type": "ANNUAL REPORT",
    "class_of_reporting_entity": "REPORTING CLASS B",
    "approval_date": "2018-05-25",
    "general_meeting_date": "2018-05-25",
    "auditor": {
      "name": null,
      "description": "uautoriseret titel",
      "type_of_assistance": "NO AUDITOR ASSISTANCE",
      "company_id": null,
      "company_name": null
    },
    "currency": "DKK",
    "ifrs": false
  }
]

Financial Performance

This endpoint calculates the performance compared to the rest of the market.

This end-point supports the Accept-Language header described in Headers.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Table with brief descriptions of all financial ratios delivered by Financial Performance:

Value Description
performance Can deliver 10, 20, ... , 100
explanation Exaplanation of financial performance.

The performance number idendicates how the company perform in terms of deciles for a specific financial ratio compared to all other companies within the same industry.

Example 1: Consider a company in the automotive industry with a performance = 20. Then the company has a financial ratio among the 20% lowest financial ratios for automotive companies.

Example 2: Consider a company in the healthcare industry with a performance = 100. Then the company has a financial ratio among the 10% highest financial ratios for healthcare companies.

NB: Not all financial ratios has currently explanations

GET
/{country}/financial/performance/{local_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/financial/performance/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "gross_margin": {
    "performance": null,
    "explanation": null
  },
  "operating_margin": {
    "performance": null,
    "explanation": null
  },
  "profit_margin": {
    "performance": null,
    "explanation": null
  },
  "return_on_equity": {
    "performance": 10,
    "explanation": "Egenkapitalsforrentning er evnen til at skabe sundt afkast. Virksomheden har en meget svag egenkapitalsforretning, da den ligger blandt de 10% laveste ratede virksomheder i samme branche."
  },
  "return_on_assets": {
    "performance": 20,
    "explanation": "Afkastningsgrad er evnen til skabe afkast til investorer. Virksomheden har en meget svag afkastningsgrad, da den ligger blandt de 20% laveste ratede virksomheder i samme branche."
  },
  "return_on_net_assets": {
    "performance": 10,
    "explanation": null
  },
  "basic_earning_power": {
    "performance": 10,
    "explanation": null
  },
  "current_ratio": {
    "performance": 60,
    "explanation": "Likviditetsgrad er evnen til at betale regninger og afdrage på gæld. Virksomheden har en middel likviditetsgrad, sammenlignet med andre virksomheder i samme branche."
  },
  "current_assets_to_equity": {
    "performance": 20,
    "explanation": null
  },
  "cash_ratio": {
    "performance": 40,
    "explanation": null
  },
  "capacity_ratio": {
    "performance": 10,
    "explanation": null
  },
  "asset_turnover": {
    "performance": null,
    "explanation": null
  },
  "inventory_conversion_ratio": {
    "performance": null,
    "explanation": null
  },
  "debt_ratio": {
    "performance": 100,
    "explanation": null
  },
  "debt_to_equity_ratio": {
    "performance": 100,
    "explanation": "Gearing er evnen til at stå imod større interne eller eksterne kriser. Virksomheden har en meget stærk gearing, da den ligger blandt de 10% højeste ratede virksomheder i samme branche."
  },
  "income_to_debt_ratio": {
    "performance": 10,
    "explanation": null
  },
  "ebitda_to_debt_ratio": {
    "performance": 10,
    "explanation": null
  },
  "interest_coverage": {
    "performance": 20,
    "explanation": "Rentedækningsgrad er evnen til at tilbagebetale renter på gæld. Virksomheden har en meget svag rentedækningsgrad, da den ligger blandt de 20% laveste ratede virksomheder i samme branche."
  },
  "solidity_ratio": {
    "performance": 60,
    "explanation": "Soliditetsgrad er evnen til at bære større tab. Virksomheden har en middel soliditetsgrad, sammenlignet med andre virksomheder i samme branche."
  },
  "liabilities_to_equity_ratio": {
    "performance": 100,
    "explanation": null
  },
  "one_year_change_in_equity": {
    "performance": 10,
    "explanation": null
  }
}

Person Relations

Using a personal_id, you can look up a specific person and see their relations to other companies. Currently, this is only supported for Danish companies, but will be available for other countries later on.

You get the personal_id by using the Search end-point or the Company Basic end-point.

This end-point supports the Accept-Language header described in Headers.

Endpoint Description

Definitions

CEO - Administrerende Direktør

The chief executive officer (CEO), or just chief executive (CE), is the most senior corporate, executive, or administrative officer in charge of managing an organization – especially an independent legal entity such as a company or nonprofit institution. CEOs lead a range of organizations, including public and private corporations, non-profit organizations and even some government organizations (e.g., Crown corporations). The CEO of a corporation or company typically reports to the board of directors and is charged with maximizing the value of the entity, which may include maximizing the share price, market share, revenues, or another element. In the non-profit and government sector, CEOs typically aim at achieving outcomes related to the organization's mission, such as reducing poverty, increasing literacy, etc.

Board of Directors - Bestyrelse

A board of directors is a group of people who jointly supervise the activities of an organization, which can be either a for-profit business, nonprofit organization, or a government agency. Such a board's powers, duties, and responsibilities are determined by government regulations (including the jurisdiction's corporations law) and the organization's own constitution and bylaws. These authorities may specify the number of members of the board, how they are to be chosen, and how often they are to meet.

Chairman of the Board - Formand

The chairman (also chair) is the highest officer of an organized group such as a board, a committee, or a deliberative assembly. The person holding the office is typically elected or appointed by the members of the group, and the chairman presides over meetings of the assembled group and conducts its business in an orderly fashion.

Auditor - Revisor

An auditor is a person or a firm appointed by a company to execute an audit. To act as an auditor, a person should be certified by the regulatory authority of accounting and auditing or possess certain specified qualifications. Generally, to act as an external auditor of the company, a person should have a certificate of practice from the regulatory authority.

Real Owner - Reel Ejer

Reelle ejere er fysiske personer, der direkte eller indirekte ejer eller kontrollerer en tilstrækkelig del af en virksomhed, eller som udøver kontrol ved hjælp af andre midler. Som udgangspunkt anses det som en tilstrækkelig del, hvis en person ejer eller kontrollerer 25% eller mere af virksomheden. Dog er denne procentdel kun en indikator på reelt ejerskab. Virksomheden skal nemlig tilsikre oplysninger på mulige reelle, og foretage en vurdering af om registrering skal ske.

Legal Owner - Legal Ejer

En legal ejer er den formelle ejer af virksomheden, og kan både være en person eller en virksomhed. Dette gør sig ikke gældende for en reel ejer, som kun kan være en fysisk person. De legale ejere er alle personer og virksomheder, som råder over mere end 5% af et selskabs kapital eller stemmeret. Derudover skal den præcise beholdning af ejerandele og stemmerettigheder registreres for reelle ejere. Hvorimod legale ejeres beholdning og ejerandele angives i intervaller.

Stakeholder - Interessent

Stakeholders are people, separate organizations or groups with direct or indirect interests in the company's success. A large or small business' stakeholders range from creditors and employees to shareholders, owners, labor unions and the surrounding community, according to Business Dictionary's website. The type of stakeholders for a business depends largely the company's legal definition. For example, a corporation can sell stock and have shareholders, while a sole proprietorship or business partnership cannot do so legally.

Founder - Stifter

An organizational founder is a person who has undertaken some or all of the work needed to create a new organization, whether this is a business, a charitable organization, a governing body, a school, a group of entertainers, or some other kind of organization. If there are multiple founders, each can be referred to as a co-founder. If the organization is a business, the founder is usually an entrepreneur. If an organization is created to carry out charitable work, the founder is generally considered a philanthropist.

Shareholder - Aktionær

A shareholder is someone who owns shares in a corporation. Generally, corporations are owned by several shareholders. For example, Google is a publicly traded corporation with almost half a million shareholders. Other corporations are closely held, meaning that there are only a few shareholders

Corporate Ownership - Virksomheds Ejerskab

While an argument can be made that corporations can’t truly be owned, it is widely agreed upon that the shareholders of the corporation are owners, but not legal owners. Legal ownership means having the ability to make actual business decisions or use the company’s assets. The shareholders aren’t the actual true owners of the business. While they aren’t legal owners, they are still considered owners due to their ownership in stock.

Such ownership will depend on the percentage of shares that each person carries in the corporation. For example, someone who holds 51% of the shares in a corporation owns a controlling interest in it; therefore, he or she has greater voting and other decision-making power.

The shareholders have the following rights:

  • The right to receive a portion of the corporation’s net revenue
  • The right to vote on the board of directors
  • The right to inspect corporate records
  • The right to sue for wrongful acts committed by the board, i.e., breach of fiduciary duty, fraud, illegal conduct
  • The right to sell their stock
  • The right to dividends
  • The right to purchase more stock if another public offering is made

With regard to the second right, all shareholders have a right to vote for who will be on the board, giving them some sort of oversight as to how the business will be run, as they run the company for the benefit of the shareholders. Additionally, as noted above, if a shareholder owns a significant amount of shares in the business (i.e., 51%), then he or she might even be able to appoint the board alone.

If a shareholder wants to sell his stock to another person, but still holds beneficial ownership over the shares, he can do so by turning over the rights to his shares without turning over title. If this occurs, the third party will be the registered owner of the stock, but there is a document that will specify the original shareholder as the true holder of the shares. This also means that the original shareholder will continue to have the above-mentioned rights as all other shareholders.

Liquidator - Likvidator

In law, a liquidator is the officer appointed when a company goes into winding-up or liquidation who has responsibility for collecting in all of the assets under such circumstances of the company and settling all claims against the company before putting the company into dissolution.

Management Levels

Most organizations have three management levels: first-level, middle-level, and top-level managers. First-line managers are the lowest level of management and manage the work of nonmanagerial individuals who are directly involved with the production or creation of the organization's products. First-line managers are often called supervisors, but may also be called line managers, office managers, or even foremen. Middle managers include all levels of management between the first-line level and the top level of the organization. These managers manage the work of first-line managers and may have titles such as department head, project leader, plant manager, or division manager. Top managers are responsible for making organization-wide decisions and establishing the plans and goals that affect the entire organization. These individuals typically have titles such as executive vice president, president, managing director, chief operating officer, chief executive officer, or chairman of the board.

These managers are classified in a hierarchy of authority, and perform different tasks. In many organizations, the number of managers in every level resembles a pyramid. Each level is explained below in specifications of their different responsibilities and likely job titles.

Top Management

The top or senior layer of management consists of the board of directors (including non-executive directors and executive directors), president, vice-president, CEOs and other members of the C-level executives. Different organizations have various members in their C-suite, which may include a Chief Financial Officer, Chief Technology Officer, and so on. They are responsible for controlling and overseeing the operations of the entire organization. They set a "tone at the top" and develop strategic plans, company policies, and make decisions on the overall direction of the organization. In addition, top-level managers play a significant role in the mobilization of outside resources. Senior managers are accountable to the shareholders, the general public and to public bodies that oversee corporations and similar organizations. Some members of the senior management may serve as the public face of the organization, and they may make speeches to introduce new strategies or appear in marketing.

The board of directors is typically primarily composed of non-executives who owe a fiduciary duty to shareholders and are not closely involved in the day-to-day activities of the organization, although this varies depending on the type (e.g., public versus private), size and culture of the organization. These directors are theoretically liable for breaches of that duty and typically insured under directors and officers liability insurance. Fortune 500 directors are estimated to spend 4.4 hours per week on board duties, and median compensation was $212,512 in 2010. The board sets corporate strategy, makes major decisions such as major acquisitions,[25] and hires, evaluates, and fires the top-level manager (Chief Executive Officer or CEO). The CEO typically hires other positions. However, board involvement in the hiring of other positions such as the Chief Financial Officer (CFO) has increased. In 2013, a survey of over 160 CEOs and directors of public and private companies found that the top weaknesses of CEOs were "mentoring skills" and "board engagement", and 10% of companies never evaluated the CEO. The board may also have certain employees (e.g., internal auditors) report to them or directly hire independent contractors; for example, the board (through the audit committee) typically selects the auditor.

Helpful skills of top management vary by the type of organization but typically include a broad understanding of competition, world economies, and politics. In addition, the CEO is responsible for implementing and determining (within the board's framework) the broad policies of the organization. Executive management accomplishes the day-to-day details, including: instructions for preparation of department budgets, procedures, schedules; appointment of middle level executives such as department managers; coordination of departments; media and governmental relations; and shareholder communication.

Middel Management

Consist of general managers, branch managers and department managers. They are accountable to the top management for their department's function. They devote more time to organizational and directional functions. Their roles can be emphasized as executing organizational plans in conformance with the company's policies and the objectives of the top management, they define and discuss information and policies from top management to lower management, and most importantly they inspire and provide guidance to lower level managers towards better performance.

Middle management is the midway management of a categorized organization, being secondary to the senior management but above the deepest levels of operational members. An operational manager may be well-thought-out by middle management, or may be categorized as non-management operate, liable to the policy of the specific organization. Efficiency of the middle level is vital in any organization, since they bridge the gap between top level and bottom level staffs.

Their functions include:

  • Design and implement effective group and inter-group work and information systems.
  • Define and monitor group-level performance indicators.
  • Diagnose and resolve problems within and among work groups.
  • Design and implement reward systems that support cooperative behavior. They also make decision and share ideas with top managers.

Lower Management

Lower managers include supervisors, section leaders, forepersons and team leaders. They focus on controlling and directing regular employees. They are usually responsible for assigning employees' tasks, guiding and supervising employees on day-to-day activities, ensuring the quality and quantity of production and/or service, making recommendations and suggestions to employees on their work, and channeling employee concerns that they cannot resolve to mid-level managers or other administrators. First-level or "front line" managers also act as role models for their employees. In some types of work, front line managers may also do some of the same tasks that employees do, at least some of the time. For example, in some restaurants, the front line managers will also serve customers during a very busy period of the day.

Front-line managers typically provide:

  • Training for new employees
  • Basic supervision
  • Motivation
  • Performance feedback and guidance
  • Some front-line managers may also provide career planning for employees who aim to rise within the organization.

GET
/{country}/person/relations/{personal_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/person/relations/4006873173",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
    "local_organization_id": null,
    "name": "Timm Jeppesen",
    "politically_exposed_persons": null,
    "relations": [
        {
            "company_name": "RISIKA A/S",
            "company_status": "Active",
            "company_status_code": "ACTIVE",
            "company_type": {
                "long": "Aktieselskab",
                "short": "A/S"
            },
            "functions": [
                {
                    "function": "CHIEF EXECUTIVE OFFICER",
                    "title": "Chief Executive Officer",
                    "valid_from": "2018-04-01",
                    "valid_to": null
                },
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2017-05-18",
                    "valid_to": "2018-03-31"
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "title": "Beneficial Owner",
                    "valid_from": "2017-05-18",
                    "valid_to": null
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "37677892"
            },
            "risk_assessment": "High",
            "risk_assessment_code": "HIGH",
            "score": 3
        },
        {
            "company_name": "TJ Formueinvest ApS",
            "company_status": "Active",
            "company_status_code": "ACTIVE",
            "company_type": {
                "long": "Anpartsselskab",
                "short": "APS"
            },
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2017-04-26",
                    "valid_to": null
                },
                {
                    "function": "LEGAL OWNER",
                    "title": "Legal Owner",
                    "valid_from": "2017-04-26",
                    "valid_to": null
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "title": "Beneficial Owner",
                    "valid_from": "2017-04-26",
                    "valid_to": null
                },
                {
                    "function": "FOUNDER",
                    "title": "Founder",
                    "valid_from": "2017-04-26",
                    "valid_to": null
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "38599070"
            },
            "risk_assessment": "High",
            "risk_assessment_code": "HIGH",
            "score": 3
        },
        {
            "company_name": "MoneyFlow Group ApS",
            "company_status": "Active",
            "company_status_code": "ACTIVE",
            "company_type": {
                "long": "Anpartsselskab",
                "short": "APS"
            },
            "functions": [
                {
                    "function": "BOARD OF DIRECTORS",
                    "title": "Board of Directors",
                    "valid_from": "2018-02-13",
                    "valid_to": null
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "39228327"
            },
            "risk_assessment": "High",
            "risk_assessment_code": "HIGH",
            "score": 1
        },
        {
            "company_name": "TNT Holding DK ApS",
            "company_status": "Active",
            "company_status_code": "ACTIVE",
            "company_type": {
                "long": "Anpartsselskab",
                "short": "APS"
            },
            "functions": [
                {
                    "function": "MANAGEMENT",
                    "title": "Management",
                    "valid_from": "2018-01-23",
                    "valid_to": null
                },
                {
                    "function": "BENEFICIAL OWNER",
                    "title": "Beneficial Owner",
                    "valid_from": "2018-01-23",
                    "valid_to": "2018-02-07"
                }
            ],
            "local_organization_id": {
                "country": "DK",
                "id": "39276208"
            },
            "risk_assessment": "High",
            "risk_assessment_code": "HIGH",
            "score": 1
        }
    ],
    "type": "OTHER"
}

Rating

The rating end-points provide the credit scores and credit limits for the queried company. The credit score found here is the same as in /{country}/company/basics/{local_id}, but provides a historical perspective.

Credit

This endpoint provides a credit recomendation for the company you requested. The credit recommendation consists of a credit max, number of credit days and a recommended upfront payment.

The end-point has a optional credit parameter. If you specify credit, we will give a concrete credit recommendation. If you do not have a specific amount, we will give a generel recommendation for the company.

You can change the currency by specifying the optional parameter currency. The currency will be assumed for the input credit and the output credit max. You can get a complete list of supported currencies from List of Currencies. If no currency is specified, it defaults to DKK.

The given credit max does not depend on the amount of credit you specify. We use the credit to calculate how many days you should provide the specified amount of credit. If the credit you provided is greater than the credit max, we will recommend that you request the remaining payment upfront.

Expand Endpoint Description to see description and definitions.

Endpoint Description

The recommended credit max and credit days depends on the current risika score and equity of the company. Because of this it can happen that a company with a risika score of 5 gets a higher credit max than a company with a risika score of 7.

GET
/{country}/rating/credit/{local_id}?credit={amount}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/rating/credit/37677892",
                 params={"credit": 1000,
                         "currency": "DKK"},
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "upfront": null,
  "credit_days": 7,
  "credit_max": 9000,
  "currency": "DKK"
}

Scores (Risika score)

This endpoint provides the historical Risika scores for the queried company. The most recent score is also shown in /{country}/company/basics/{local_id}.

The scores are currently calulated for each financial report, but may in the future be triggered by other events. This is a disclaimer not to tie the score to a specific financial statement. The scores are sorted by the date of the financial statement.

If we're unable to score a finacial statement, score will be null and the key error will explain why the report is not scored. The description language change with the Accept-Language header described in Headers.

This end-point is only available for Danish companies at the moment, but will be available for other countries soon. If you want the Risika Score for other countries, you can use /{country}/company/basics/{local_id} to get the current score for any company.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Risika score companies from 1-10 where 1 is the lowest score (highest risk) and 10 is the highest score (lowest risk). We deliver accurate credit ratings by analyzing financial statements and industry patterns together with indicators of fraud like the level of audit and connected bankruptcies.

Risika Score Risk
1-3 High Risk
4-7 Medium Risk
8-10 Low Risk

For more information about our model performance please don't hestitate to contact us.

Note: The list of scores are not sorted by date

Example request with no errors

r = requests.get("https://api.risika.dk/v1.2/dk/rating/scores/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
  {
    "date": "2018-12-31",
    "score": 3
  },
  {
    "date": "2017-12-31",
    "score": 2
  },
  {
    "date": "2017-12-31",
    "score": 2
  }
]

Example request with errors

r = requests.get("https://api.risika.dk/v1.2/dk/rating/scores/10839238",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

[
    {
        "date": "2018-06-30",
        "error": "We have decided not to score inactive companies. We consider companies under enforced closure or under bankrupcty as being inactive",
        "score": null
    },
    {
        "date": "2017-06-30",
        "error": "We have decided not to score inactive companies. We consider companies under enforced closure or under bankrupcty as being inactive",
        "score": null
    }
]

Highlights

This endpoint provides highlights that we have selected by analyzing the company, financial reports and the people associated with the company.

A highlight can be classified as either positive, neutral or negative. The classification is a tool for grouping similar highlights. To prioritize by seriousness, you can use the weight parameter. weight ranks the highlights on an arbitrary scale that indicates the relative seriousness to each highlight.

Each highlight carries a title, message and description. The title and message are generated specificly for the company and explains the situation that triggered the highlight. The description is general explaination of the highlight and doesn't change depending on the companies situation.

This end-point supports the Accept-Language header described in Headers.

Endpoint Description

Highlights

Highlight Description
address The company have changed address within the last couple of years.
age Warning of higher risk if the company is started within 5 years.
auditors The company have changed auditor within the last couple of years.
change_in_employees Number of employees has consistently changed over the last 3 years.
change_in_management There have been many changes in the management and/or the board within the last year.
company_type The information appears if the company is a sole proprietorship.
connected_bankruptcies Amount of historical bankruptcies with the people associated with the company (executives, board of directors etc.).
current_ratio If the current ratio is within the top or bottom decile in industry.
equity Information regarding whether the company has zero or negative equity.
foreign_currency Informing that the financial statement is stated in a foreign currency.
holding If the company is identified as a holding company.
industry Special industries (defined by industry codes) that are not graded.
industry_risk Informing if the company is in an industry with high or low bankruptcy risk.
intangible_assets Warning if the value of intellectual property represents over 50% of equity in the company. This is a potentially risk factor.
old_financialstatement The financial statement that the calculations are based upon is very old.
one_financial_statement Only one financial statement - can give uncertainty in the calculation.
pep If any political exposed persons are involved with the company.
powers_to_bind Warning if the company has changed powers to bind in the last year.
prior_distress If the company has been under bankruptcy or under enforced closure in the past.
profit_loss If profit or losses have increased or decreased with more than 20%.
proprietorship_age The information appears if the company is an older sole proprietorship.
return_on_assets If the return on assets is within the top or bottom decile in industry.
revenue If revenues have increased or decreased with more than 20%.
solidity_ratio If solidity ratio is within the top or bottom decile in industry.
three_years_profitloss If the profit or losses have a siginificant trend the last 3 years.
timely_delivery Warning about if the financial statement wasn''t handed in to the authorities in time.
type_of_auditor_assistance Warning about the level of involvement from an auditor in the creation of the financial statement.
vat_check Provides infomation on weather or not the company is registered for VAT
corona_exposure Highlights companies with stressed liquidity and within industries where demand is negatively affected by the crisis

GET
/{country}/highlights/{local_id}

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/highlights/37677892",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "highlights": {
    "age": {
      "title": "Ung virksomhed",
      "message": "Vær opmærksom på, at alderen på virksomheden er 3 år. Vores algoritme har vist, at det forøger risikoen, når virksomheder er under 5 år gamle og derfor har det påvirket den samlede score.",
      "description": "Advarsel om, at der er større risiko forbundet med denne virksomheden, da den en mindre end 5 år gammel.",
      "classification": "negative",
      "weight": 1900
    },
    "address": {
      "title": "Adresseskift",
      "message": "Virksomheden har skiftet adresse mere end 3 gange i løbet af de sidste 3 år.",
      "description": "Informationen fremkommer, hvis virksomheden har skiftet adresse inden for de sidste par år.",
      "classification": "neutral",
      "weight": 1850
    },
    "change_in_management": {
      "title": "Udskifting i ledelsen",
      "message": "Virksomheden har haft ændringer i direktionen og/eller bestyrelsen 3 eller flere gange sidste år.",
      "description": "Informationen fremkommer, hvis der har været udskiftninger i direktionen og/eller bestyrelsen det sidste 3 år.",
      "classification": "neutral",
      "weight": 1875
    },
    "powers_to_bind": {
      "title": "\u00c6ndring i tegningsregel",
      "message": "Virksomheden har ændret tegningsregel indenfor det sidste år.",
      "description": "Informationen fremkommer, hvis virksomheden har ændret tegningsregel inden for sidste år.",
      "classification": "neutral",
      "weight": 3750
    },
    "change_in_employees": {
      "title": "\u00c6ndring i antal ansatte",
      "message": "Virksomhedens antal ansatte er steget over de sidste 3 år.",
      "description": "Informationen fremkommer, hvis antallet af medarbejdere er steget eller faldet over de sidste 3 år.",
      "classification": "positive",
      "weight": 2500
    },
    "intangible_assets": {
      "title": "Stor andel immaterielle anlægsaktiver",
      "message": "Over 50% af egenkapitalen i selskabet består af immaterielle anlægsaktiver, hvilket kan betyde en øget finansiel risiko.",
      "description": "Informationen fremkommer, hvis virksomheden har en høj andel immaterielle anlægsaktiver, hvilket kan være en risiko-faktor.",
      "classification": "negative",
      "weight": 1950
    },
    "type_of_auditor_assistance": {
      "title": "Revisionsniveau",
      "message": "Virksomhedens seneste regnskab er blevet revideret af en revisor.",
      "description": "Informationen fremkommer, hvis virksomheden ikke har fået lavet fuld revision af seneste regnskab.",
      "classification": "neutral",
      "weight": null
    },
    "connected_bankruptcies": {
      "title": "Konkursanalyse",
      "message": "Der er 1 konkurs i blandt de personer der har relation til virksomheden. Det har ikke trukket ned i den samlede kreditscore.",
      "description": "Informationen fremkommer, hvis der har været konkurser blandt de personer, der har relation til virksomheden.",
      "classification": "neutral",
      "weight": 3200
    }
  }
}

If you don't have a specific Company ID or Personal ID, you can use search end-points to filter all companies by name, address, equity, Risika score, etc.

Search for a specific person only works by name at the moment and work only for Danish companies.

Search for Company

This endpoint enables you to search for companies by name and many other attributes defined under Search Filters instead of providing a local ID (e.g. CVR-number for Danish companies). You can search with two different modes: minimal or full:

It should be also noted that you can combine multiple search filters together to get a more specific result e.g. "filters: {"company_name": "Ikea", "city": "København"}

Minimal Limited to 25 search results. The results are also much simpler, contains only the name, local ID and country code. This is meant as "quick search" feature.

Full The full search returns much more information about the companies and allows you to set advanced search parameters. The values returned are: local_organization_id, company_name, score, company_type, employees_interval, active, advertisement_protected, date_of_incorporation, secondary_names, historical_names and address.

There is a max limit of 50,000 for search results, meaning you may only get top 50,000 results matching your criteria. Also you have to use pagination to get more than the first 1000 rows. To get more than the first 1000 rows (or to less than 1000 rows), you can specify the from and to parameters. If no from and to parameters are specified, it defaults to 100 rows.

Explanation of search input parameters

Interpreting This Table

This table illustrates how each parameter is treated based on the end-point. If the entry e.g. active is unique in the Input Parameter column this means that it has the same behavior for all end-points /dk/.., /no/.., /se/... If entry e.g. company_type is duplicated several times this means it is localized for specific country and differs in structure or input data types. Super scripts likeNOO mean NO(Norway) + O(Only) = NOO and NO(Norway) + N(Non Supported) = NON. If Supported Input Types has something like List[integer] this means it's a list of integers and the data structure looks for example like this [1, 2, 4]. If the List[] item data-type is not a primitive: boolean, string, integer refer to the Input Types Explained section for information about that specific input type. A singleton in this context means that Input Parameter is just a simple immutable value e.g. {"active": True} is a singleton because boolean is not a list nor an object.

We added a filter called free_search, which is meant as an "omni bar" for web sites (available in both full and minimal search). As input data for free_search you can use use the following: name of the company, phone numberNON, full address, partial address, historicalDKO and secondary namesDKO.

Input Parameter Supported Input Types Description
"active": boolean Singleton boolean. Filters based on company being active(true) or inactive(false)
"advertising": boolean Singleton boolean. true means company can be contacted for advertising and false it can't
"company_name": string The name of the company. It is case-insensitive and supports partial names (name substrings)
"free_search": string Searches on multiple fields: name, address full and partial, zipcode, phone numberNON, emailDKO, historical and secondary nameDKO
"auditor":DKO string DK Only. Allows you to search based on the: auditing firm CVR, auditing firm name and the name of auditor
"company_type":DKO List[dk_company_type_enum] Enumerated company types. Find valid values at List Company Types
"company_type":NOO List[no_company_type_enum] Enumerated company types. See valid enum values at NO company types
"company_type":SEO List[se_company_type_enum] Enumerated company types. See valid enum values at SE company types
"employees":DKO, †† List[dk_employees_enum] Enumerated employee ranges. See valid enum values at enum values at List Employee Intervals
"employees":NOO string Integer passed as a string type e.g {employees: "99"}
"employees":SEO List[se_employees_enum] Enumerated employee ranges. See valid enum values at enum values at SE employee intervals
"industry":DKO, ‡ integer, dk_industry_enum, List[integer], List[dk_industry_enum] Allows you to filter by industry code, special industry categories (singleton or list)
"industry":SEO string, List[string] Filters by exact industry code (singleton or list) only strings are accepted
"industry":NOO string, List[string] Filters by exact industry code (singleton or list) only strings are accepted
"city": string, List[string] Allows to search based on city name. Case Insensitive and city name has to be exact. It can be a simple string or list of strings.
"municipality": string, List[string] Allows to search based on municipality name. Case Insensitive and municipality name has to be exact. It can be a simple string or list of strings.
"zipcode": List[integer] List of zipcodes as integers (see full List of Zipcodes)
"solidity": range_basic, comparison_basic These values are expressed as the most recent integer percentages. e.g. an input of 10 is equal to 10%
"liquidity": range_basic, comparison_basic These values are expressed as the most recent integer percentages. e.g. an input of 10 is equal to 10%
"return_on_assets": range_basic, comparison_basic These values are expressed as the most recent integer percentages. e.g. an input of 10 is equal to 10%
"date_of_incorporation": range_date, comparison_date Date on which company was established
"score": risika_score, List[risika_score_enum], range_risika_score, comparison_risika_score Risika scores (integers from 1 to 10). They can be exact value, list of scores, range of scores or a comparison of scores
"assets": range_currency, comparison_currency Filters based on most recent company's profit loss calculations
"fixed_assets": range_currency, comparison_currency Filters based on most recent company's profit loss calculations
"equity": range_currency, comparison_currency Filters based on most recent company's profit loss calculations
"gross_result": range_currency, comparison_currency Filters based on most recent company's profit loss calculations
"profit_loss": range_currency, comparison_currency Filters based on most recent company's profit loss calculations
"share_capital": range_currency, comparison_currency Filters based on most recent company's share capital calculations
"total_debt": range_currency, comparison_currency Filters based on most recent company's total debt calculations
"balance": range_currency, comparison_currency Filters based on most recent company's balance calculations

Input Types Explained

All field/key values shown in the examples are mandatory and are of integer type (unless explicitly stated in the description).

Input Type Example Description
range_basic { "range_start": 200, "range_end": 600 } base range object type from which other range_ borrows structure
range_currency { "range_start": 900, "range_end": 900, "currency": "EUR" } currency is a enumerated string valid values found [here][list of currencies](#list-currencies)
range_date { "range_start": "2001-09-11", "range_end": "2020-01-04"} key values for all are of string type and have a format of YYYY-MM-DD
range_risika_score { "range_start": 3, "range_end": 10 } key values for all are integers in range [1, 10]
comparison_basic { "value": 20000, "operator": ">" } operator is one of: "(<, >, =, <=, >=)"
comparison_currency { "value": 20000, "operator": ">", "currency": "EUR" } operator is one of: "(<, >, =, <=, >=)" and currency is a enumerated string valid values found under List of Currencies
comparison_date { "value": "2001-09-11", "operator": ">" } value is of string type and has a format of YYYY-MM-DD , operator is one of: "(<, >, =, <=, >=)"
comparison_risika_score {"score": { "value": 3, "operator": ">" }} value is of integer type and is in range [1, 10], operator is one of: "(<, >, =, <=, >=)"
risika_score 9 values in range [1, 10]

DKO Only supported for Danish DK (dk/search/company, dk/export/company) endpoints

NOO Only supported for Norwegian NO (no/search/company, no/export/company) endpoints

NON Not supported for Norwegian NO (no/search/company, no/export/company) endpoints

SEO Only supported for Swedish SE (se/search/company, se/export/company) endpoints

†† For DK and SE it's a string that comes in the following format "5-9" where 5 and 9 are the lowest amount of employees and 9 is the max. DK and SE intervals are different and should be referred in List of Employee Interval. In the case of NO there are no intervals so you have to pass an exact number as a string e.g. employees: "911"

The Danish industry codes are grouped in several levels, but the API splits them into 3 major groups. You can find the complete description of industries in List of Industries, where you can also get the full list of possible industry codes.

The first grouping is by sector which can be: A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U. The second grouping is called "group" and indicates a division of the sectors. The thirds grouping is called "subgroup" and divides the groups into smaller groups.

POST
/{country}/search/company

Example request (minimal)

r = requests.post("%s/dk/search/company" % url,
                  json={"mode": "minimal",
                        "filters": {"free_search": "Risika"}},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})
print(r.json())

Example response (minimal)

{
  "search_result": [
    {
      "local_organization_id": {
        "country": "DK",
        "id": "37677892"
      },
      "company_name": "RISIKA A/S"
    }
  ],
  "count": 1
}

Example request (full)

r = requests.post("%s/dk/search/company" % url,
                  json={"mode": "full",
                        "from": 0,
                        "to": 100,
                        "filters": {
                            "company_name": "risika",
                            "company_type": ["A/S"],
                            "score": [1, 2, 3, 4, 5],
                            "active": True
                        }},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})
print(r.json())

Example response (full)

{
  "search_result": [
    {
      "local_organization_id": {
        "country": "DK",
        "id": "37677892"
      },
      "active": true,
      "company_name": "RISIKA A/S",
      "score": 3,
      "company_type": "A/S",
      "employees_interval": "5-9",
      "advertisement_protected": true,
      "address": {
        "city": "København K",
        "coname": null,
        "number": "26, st.",
        "street": "Kronprinsessegade",
        "country": "DK",
        "zipcode": 1306,
        "postdistrict": "København K"
      }
    }
  ],
  "rows": {
    "from": 0,
    "to": 1
  },
  "count": 1
}

Search for Person

The search for persons is limited to search by name. The name is case insensitive and may be partial (missing e.g. middle name). This search doesn't support pagination and will return at most 100 matches.

Parameter Description
personal_id The unique ID identifying the person (doesn't work cross-country)
name Full name of the person
alias Aliases of the person as a list of strings
functions Associative array with active and function indicating whether if the person still has this function
active_company_relations List of company names this person is currently involved in

Example request

r = requests.post("https://api.risika.dk/v1.2/dk/search/person",
                 params={"query": "Timm Jeppesen"},
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "search_result": [
    {
      "personal_id": 4006873173,
      "name": "Timm Jeppesen",
      "aliases": [
        "Timm Jeppesen"
      ],
      "functions": [
        {
          "active": true,
          "function": "ADMINISTRERENDE DIREKT\u00d8R"
        },
        {
          "active": true,
          "function": "BESTYRELSE"
        },
        {
          "active": true,
          "function": "DIREKTION"
        },
        {
          "active": true,
          "function": "REEL EJER"
        },
        {
          "active": true,
          "function": "STIFTERE"
        }
      ],
      "active_company_relations": [
        "MoneyFlow Group ApS",
        "RISIKA A/S",
        "TJ Formueinvest ApS",
        "TNT Holding DK ApS"
      ]
    }
  ],
  "count": 1
}

Export

The export end-points are meant for export of "lead lists" or similar CSV/Excel dumps. The result is returned in the same format as Company Search, but includes some extra fields with contact information. The filter of each end-point is compatible with their search counterparts for eaiser export.

Pagination is disable for export. If you need more than the standard amount, please contact your sales representative.

This end-points exports the information from a search. The difference between export and search is the number of columns returned and that pagination is disabled. The additional columns includes contact information, which makes it ideal for "lead lists".

The filter function of this end-points is identical to the filter found in Search for Company. The only exception being that you can't specify the from parameter. The to parameter goes to 5000 by default, but may be changed upon request. Please contact your sales representative if you need a larger export limit.

POST
/{country}/export/company

Example request

r = requests.post("%s/dk/export/company" % url,
                  json={"mode": "full",
                        "from": 0,
                        "to": 10,
                        "filters": {
                            "free_search": "risika",
                            "company_type": ["A/S"],
                            "score": [1, 2, 3, 4, 5],
                            "active": True
                        }},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})
print(r.json())

Example response

{
  "search_result": [
    {
      "local_organization_id": {
        "id": "37677892",
        "country": "dk"
      },
      "active": true,
      "company_name": "RISIKA A/S",
      "company_type": "A/S",
      "employees_interval": "10-19",
      "address": {
        "city": "K\u00f8benhavn K",
        "coname": null,
        "number": "26, st.",
        "street": "Kronprinsessegade",
        "country": "DK",
        "zipcode": 1306,
        "municipality": "K\u00f8benhavn",
        "postdistrict": "K\u00f8benhavn K"
      },
      "main_industry_code": {
        "code": "829100",
        "description": "Inkassovirksomhed og kreditoplysning"
      },
      "email": {
        "email": "contact@risika.dk",
        "hidden": false
      },
      "phone": {
        "phone": "42905757",
        "hidden": false
      },
      "advertisement_protected": true,
      "webpage": null,
      "management": ["Nicolai Rasmussen", "Timm Jeppesen"]
    }
  ],
  "rows": {
    "to": 1,
    "from": 0
  },
  "count": 1,
  "time_elapsed": 123
}

Monitoring

The monitoring end-points allow you the manage and subscribe to changes for all your clients. You can add companies to monitoring lists and poll them for changes with List Monitoring or you can get the changes as soon as they are published with Webhook

Add Monitoring

You can add companies to your monitoring lists by sending a POST request with the Company IDs you want to subscribe to /monitor/add. It will not raise an error, if you're already subscribed to the company.

Monitoring supports having multiple lists, which can be managed by a list_id. list_id is optional and is assumed to be 0, if not declared. We recommend that you use list_id explicitly as we will make it required in future versions (will always be optional in v1.2).

The end-point only works with Danish companies, but the country must be specified for forward compatibility.

POST
/monitor/add

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/add",
                  json={
                        "list_id": 0,
                        "subscribe": [
                            {"local_organization_id": {"country": "DK", "id": "37677892"}},
                            {"local_organization_id": {"country": "DK", "id": "10404916"}},
                            {"local_organization_id": {"country": "DK", "id": "61126228"}}
                        ]
                  },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "status": "ok"
}

Remove Monitoring

To remove companies from the monitoring list, call this end-point with a list of Company IDs to remove. Unlike Add Monitoring, this end-point will return an error, if you try to remove a company you haven't subscribed to.

Monitoring supports having multiple lists, which can be managed by a list_id. list_id is optional and is assumed to be 0, if not declared. We recommend that you use list_id explicitly, as we will make it required in future versions (will always be optional in v1.2).

GET
/monitor/remove

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/remove",
                  json={
                        "unsubscribe": [
                            {"local_organization_id": {"country": "DK", "id": "37677892"}},
                            {"local_organization_id": {"country": "DK", "id": "10404916"}},
                            {"local_organization_id": {"country": "DK", "id": "61126228"}}
                        ]
                  },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "status": "ok"
}

Verify Monitoring

This end-point is used to verify if you have already subscribed to a company. Example of use is to change the subscribe button on the Risika Dashboard, if you already subscribed to the company.

Monitoring supports having multiple lists, which can be managed by a list_id. For this end-point it will search through all lists, if no list_id is declared. If you want to verify that a specific list is contains a company, you can query the specific list with list_id.

GET
/monitor/verify

Example request

r = requests.get("https://api.risika.dk/v1.2/monitor/verify",
                 params={"country": "DK", "local_id": 10404916, "list_id": 0},
                 headers={"Authorization": access.token,
                          "Content-Type": "application/json"})

Example response

{
    "monitoring": true
}

Get Monitoring Lists

Get a complete list of the companies you monitor together with the most recent changes. To indicate the type of change, every change is assigned a type. With the type, you will also get a weight, which may help you prioritize the change.

type weight
status 9999
score 9000
new_report 8000
company_type 5000
name 4500
industry 3500
employees_interval 3000
email 1500
address 1500
phone_number 1000

Monitoring supports having multiple lists, which can be managed by a list_id. The list_id can either be all or list_id (integer), which is set in the URI (see example). Querying for all returns an aggregated list of all lists. If you query by a specific list_id, it only returns the content of that list.

This end-point implements pagination. This means, that you have to specify which row you want to and from (at most 1000 rows at a time). No matter which interval you choose, you will always get the total number of rows available in count.

Because the API covers a lot of different usecases, you have to set date to limit how recent or old the changes can be. With to and from you can set the time interval for the changes. from can be set to at most 365 days from today and to can be set to today or earlier.

This end-point supports the Accept-Language header described in Headers.

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/list/all",
                  json={
                      "rows": {"from": 0, "to": 100},
                      "dates": {"from": "2019-06-05", "to": "2020-02-05"}
                  },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())
r = requests.post("https://api.risika.dk/v1.2/monitor/list/0",
                  json={
                      "rows": {"from": 0, "to": 100},
                      "dates": {"from": "2019-06-05", "to": "2020-02-05"}
                  },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "count": 1256,
  "monitor_list": [
    {
      "address": {
        "city": "K\u00f8benhavn V",
        "coname": null,
        "country": "DK",
        "municipality": "K\u00f8benhavn",
        "number": "3",
        "postdistrict": "K\u00f8benhavn V",
        "street": "Vesterbrogade",
        "zipcode": 1620
      },
      "changes": null,
      "company_name": "TIVOLI A/S",
      "credit_max": 25000000,
      "local_organization_id": {
        "country": "dk",
        "id": "10404916"
      },
      "risk_assessment": "Low",
      "risk_assessment_code": "LOW",
      "score": 10,
      "status": "Active",
      "status_code": "ACTIVE"
    },
    {
      "address": {
        "city": "Skovlunde",
        "coname": null,
        "country": "DK",
        "municipality": "Ballerup",
        "number": "22",
        "postdistrict": "Skovlunde",
        "street": "Mileparken",
        "zipcode": 2740
      },
      "changes": [
        {
          "date": "2019-10-21",
          "new": {
            "valid_from": "2019-05-01",
            "valid_to": null,
            "value": 6
          },
          "old": {
            "valid_from": "2018-05-01",
            "valid_to": "2019-04-30",
            "value": 7
          },
          "sentence": "New Risika Score",
          "type": "score",
          "weight": 9000
        },
        {
          "date": "2019-10-21",
          "new": {
            "valid_from": "2018-05-01",
            "valid_to": "2019-04-30"
          },
          "sentence": "New Annual Report",
          "type": "new_report",
          "weight": 8000
        }
      ],
      "company_name": "4 DIMENSIONS A/S",
      "credit_max": 222000,
      "local_organization_id": {
        "country": "dk",
        "id": "32563600"
      },
      "risk_assessment": "Low",
      "risk_assessment_code": "LOW",
      "score": 6,
      "status": "Active",
      "status_code": "ACTIVE"
    }
  ]
}

Rename Monitoring List

This end-point allows you to change the name of an existing monitoring list

POST
/monitor/list/rename

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/list/rename",
                  json={"list_id": 0, "title": "New Title"},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "status": "ok"
}

Show Monitoring List

Use this end-point to get a complete list of the IDs and names of your monitoring lists.

GET
/monitor/list/show

Example request

r = requests.get("https://api.risika.dk/v1.2/monitor/list/show",
                 headers={"Authorization": access.token,
                          "Content-Type": "application/json"})

Example response

[
    {"list_id": 0, "name": "List 0"},
    {"list_id": 1, "name": "List 1"},
    {"list_id": 2, "name": "List 2"},
]

Create Monitoring List

You always have one monitoring list with ID 0, which cannot be removed. If you need more lists, you can always create more with this end-point. When you first create a list, you can choose a name for it and you will get a unique ID of that list back. If you want to change the name after creation, see Rename Monitoring List

POST
/monitor/list/add

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/list/add",
                  json={"title": "New Title"},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "list_id": 1
}

Remove Monitoring List

This end-point will remove a monitoring list and all companies subscribed to it. It is not possible to recover a list, when it has been remove.

POST
/monitor/list/remove

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/list/remove",
                  json={"list_id": 0},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
    "status": "ok"
}

Export Monitoring

Export the list of the companies you monitor together with the most recent changes. It follows the same structure as List Monitoring, but will include more data fields in the future.

Monitoring supports having multiple lists, which can be managed by a list_id. The list_id can either be all or list_id (integer), which is set in the URI (see example). Querying for all returns an aggregated list of all lists. If you query by a specific list_id, it only returns the content of that list.

This end-point implements pagination. This means, that you have to specify which row you want to and from (at most 1000 rows at a time). No matter which interval you choose, you will always get the total number of rows available in count.

Because the API covers a lot of different usecases, you have to set date to limit how recent or old the changes can be. With to and from you can set the time interval for the changes. from can be set to at most 365 days from today and to can be set to today or earlier.

This end-point supports the Accept-Language header described in Headers.

Example request

r = requests.post("https://api.risika.dk/v1.2/monitor/export/all",
                  json={
                       "rows": {"from": 0, "to": 100},
                       "dates": {"from": "2019-06-05", "to": "2020-02-05"}
                   },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())
r = requests.post("https://api.risika.dk/v1.2/monitor/export/0",
                  json={
                       "rows": {"from": 0, "to": 100},
                       "dates": {"from": "2019-06-05", "to": "2020-02-05"}
                   },
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})

print(r.json())

Example response

{
  "count": 1256,
  "monitor_list": [
    {
      "address": {
        "city": "K\u00f8benhavn V",
        "coname": null,
        "country": "DK",
        "municipality": "K\u00f8benhavn",
        "number": "3",
        "postdistrict": "K\u00f8benhavn V",
        "street": "Vesterbrogade",
        "zipcode": 1620
      },
      "changes": null,
      "company_name": "TIVOLI A/S",
      "credit_max": 25000000,
      "local_organization_id": {
        "country": "dk",
        "id": "10404916"
      },
      "score": 10,
      "status": "Active",
      "status_code": "ACTIVE"
    },
    {
      "address": {
        "city": "Skovlunde",
        "coname": null,
        "country": "DK",
        "municipality": "Ballerup",
        "number": "22",
        "postdistrict": "Skovlunde",
        "street": "Mileparken",
        "zipcode": 2740
      },
      "changes": [
        {
          "date": "2019-10-21",
          "new": {
            "valid_from": "2019-05-01",
            "valid_to": null,
            "value": 6
          },
          "old": {
            "valid_from": "2018-05-01",
            "valid_to": "2019-04-30",
            "value": 7
          },
          "sentence": "New Risika Score",
          "type": "score",
          "weight": 9000
        },
        {
          "date": "2019-10-21",
          "new": {
            "valid_from": "2018-05-01",
            "valid_to": "2019-04-30"
          },
          "sentence": "New Annual Report",
          "type": "new_report",
          "weight": 8000
        }
      ],
      "company_name": "4 DIMENSIONS A/S",
      "credit_max": 222000,
      "local_organization_id": {
        "country": "dk",
        "id": "32563600"
      },
      "score": 6,
      "status": "Active",
      "status_code": "ACTIVE"
    }
  ]
}

Webhook

We provide a webhook, which enables you to receive updates as soon as they happen. To get them to work, you need to setup a URL (e.g. https://your-site.com/webhook) where you want to receive the updates. You then have two options: You can either register it on the dashboard from https://dashboard.risika.dk/developer or by using the API.

We provide four endpoints concerning webhooks: add, remove, status and test.

You may not be served by the same server every time, so you should not rely on the IP for validation. When you add your webhook, we generate a secret for you, which you can use to verify that the request is actually from us (we will send you a signature along with the message to your webhook).

The webhook will not tell you what has changed, but will inform you, that you should refresh your record of the company. The webhook is triggered by changes in (and may include more fields in the future):

  • Name
  • Date of Incorporation
  • Advertisement Protection
  • Company Status
  • Company Type
  • Address
  • Number of Employees
  • Email
  • Phone number
  • Industry Codes
  • Risika Score
  • Capital
  • Currency
  • Powers to Bind
  • Management
  • Bank

Notice: that the current implementation is not triggered by new financial statements. Unless, the new report changes the Risika score

You manage your webhook subscriptions using the end-points in Monitoring which can also be managed through the dashboard.

We provide an example of a web server to receive the message from the webhook, which also shows how to validate the message. The example is only available in Python.

The message from the webhook is sent as a POST request to your web server. The message contains a JSON list of objects with country and local_id for each company. The signature is located in the HTTP headers as Signature and is derived by computing the HMAC SHA256 hash of the payload.

from flask import Flask, request
import hmac
import hashlib
import json


SECRET = b"ceijohgheiQu4choo4aiH3zuchae5aizai8uteXeiz2bo6ievah2thoh4wuoc2Ah"

app = Flask(__name__)


@app.route("/", methods=['POST'])
def main():
    payload = request.get_data()

    validated_signature = hmac.new(SECRET, payload, hashlib.sha256).hexdigest()
    if request.headers.get("Signature") == validated_signature:
        print("valid")
    else:
        print("invalid")

    data = json.loads(payload)

    print(json.dumps(data, sort_keys=True, indent=4, separators=(',', ': ')))

    return "ok"

app.run(host='0.0.0.0', debug=True, port=8000)

Add Webhook

To add a webhook, you simply send a POST request containing the URL you want to register. Alternatively, you can do it directly from the dashboard.

POST
/webhook/add

Example request

r = requests.post("https://api.risika.dk/v1.2/webhook/add",
                  json={"url": "https://example-webhook.com/webhook"},
                  headers={"Authorization": access.token,
                           "Content-Type": "application/json"})
print(r.json())

Example response

{
  "status": "ok"
}

Remove Webhook

You can only have single webhook registered to your account at a time, so you simply make a GET request and it will be removed.

GET
/webhook/remove

Example request

r = requests.get("https://api.risika.dk/v1.2/webhook/remove",
                 headers={"Authorization": access.token,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "status": "ok"
}

Webhook Status

To check if you have a webhook registered, and to see your secret, you can make a GET request to the status endpoint. The secret is used to verify that any incoming requests are actually from us.

GET
/webhook/status

Example request

r = requests.get("https://api.risika.dk/v1.2/webhook/status",
                 headers={"Authorization": access.token,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "url": "https://example-site.com/webhook",
  "secret": "e5l13ukdqld43lpj6e6jkm7dy1zl2tbdj1ugwf6rjlvpzn4cnzk42orbvffv92ue"
}

Test Webhook

To make sure you have set up the webhook correctly, you can make a request to our test endpoint. Within 2 minutes you should receive an example request with some data.

The example data you receive is also how it's going to look like when we send an actual update.

GET
/webhook/test

Example request

r = requests.get("https://api.risika.dk/v1.2/webhook/test",
                 headers={"Authorization": access.token,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "status": "ok"
}

Test example sent to your URL

[
  {
    "local_id": "37677892",
    "country": "dk"
  }
]

Lists

The list end-points helps you validate requests and see the possible values for search end-points.

List Employee Intervals

This end-point provides a complete list of the employee intervals. These values are returned by end-points such as Company Basics, but can also be used in the search filters of Search for Company.

This end-point is available for: Denmark and Sweden.

NB: The intervals may not be identical in all countries

GET
/{country}/list/employees_interval/

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/employees_interval",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response (sample)

{
    "employees_intervals": [
        "0", "1", "2-4", "5-9", "10-19", "20-49", "50-99", "100-199", "200-499", "500-999", "1000-999999"
    ]
}

List Currencies

Currencies are used by Search for Company, which makes it eaiser to pass the user's preferred currency without converting the value locally. Any currency not in the list will be rejected by the API.

GET
/list/currencies/

Example request

r = requests.get("https://api.risika.dk/v1.2/list/currencies",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response (sample)

{
    "currencies": [
        "DKK", "SEK", "NOK", "EUR", "GBP", "USD", "HKD", "SGD", "QAR", "AUD", "HRK", "CHF", "RUB", "CZK", "CAD", "PLN"
    ]
}

List Company Types

The response is a list of strings containing all company types for the given country.

This end-point is available for: Denmark, Sweden and Norway.

GET
/{country}/list/company_types

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/company_types",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
    "company_types": [
        {
            "code": "FAS",
            "title": "Filial af udenlandsk aktieselskab, kommanditakties"
        },
        {
            "code": "UDL",
            "title": "Anden udenlandsk virksomhed"
        },
        {
            "code": "PAR",
            "title": "Partrederi"
        },
        {
            "code": "ABA",
            "title": "Andelsselskab (-forening) med begrænset ansvar"
        },
        {
            "code": "MSS",
            "title": "Medarbejderinvesteringsselskab"
        },
        {
            "code": "APS",
            "title": "Anpartsselskab"
        },
        {
            "code": "UOP",
            "title": "Uoplyst virksomhedsform"
        },
        {
            "code": "FON",
            "title": "Fonde og andre selvejende institutioner"
        },
        {
            "code": "SOV",
            "title": "Selvstændig offentlig virksomhed"
        },
        {
            "code": "K/S",
            "title": "Kommanditselskab"
        },
        {
            "code": "STA",
            "title": "Statslig administrativ enhed"
        },
        {
            "code": "AMT",
            "title": "Amtskommune"
        },
        {
            "code": "SMA",
            "title": "Selskab med begrænset ansvar"
        },
        {
            "code": "KOM",
            "title": "Primærkommune"
        },
        {
            "code": "FMA",
            "title": "Forening med begrænset ansvar"
        },
        {
            "code": "ENK",
            "title": "Enkeltmandsvirksomhed"
        },
        {
            "code": "A/S",
            "title": "Aktieselskab"
        },
        {
            "code": "I/S",
            "title": "Interessentskab"
        },
        {
            "code": "EØF",
            "title": "Europæisk Økonomisk Firmagruppe"
        },
        {
            "code": "EFO",
            "title": "Erhvervsdrivende fond"
        },
        {
            "code": "PMV",
            "title": "Personligt ejet Mindre Virksomhed"
        },
        {
            "code": "FBA",
            "title": "Forening eller selskab med begrænset ansvar"
        },
        {
            "code": "IVS",
            "title": "Iværksætterselskab"
        },
        {
            "code": "FKI",
            "title": "Folkekirkelige Institutioner"
        },
        {
            "code": "FIV",
            "title": "Særlig finansiel virksomhed"
        },
        {
            "code": "SCE",
            "title": "SCE-selskab"
        },
        {
            "code": "FFO",
            "title": "Frivillig forening"
        },
        {
            "code": "GUS",
            "title": "Grønlandsk afdeling af udenlandsk selskab eller virksomhed"
        },
        {
            "code": "DØD",
            "title": "Dødsbo"
        },
        {
            "code": "REG",
            "title": "Region"
        },
        {
            "code": "FOR",
            "title": "Forening"
        },
        {
            "code": "FBA",
            "title": "Filial af udenlandsk virksomhed med begrænset ansv"
        },
        {
            "code": "ANS",
            "title": "Andelsselskab (-forening)"
        },
        {
            "code": "ØVR",
            "title": "Øvrige virksomhedsformer"
        },
        {
            "code": "FAP",
            "title": "Filial af udenlandsk anpartsselskab eller selskab"
        },
        {
            "code": "KAS",
            "title": "Kommanditaktieselskab/Partnerselskab"
        },
        {
            "code": "EUO",
            "title": "Enhed under oprettelse i Erhvervsstyrelsen"
        }
    ],
    "country": "DK",
    "last_updated": "2020-01-15 15:38:00"
}

List Company Statuses

The response is a list of strings containing all company statuses for the given country.

This end-point is available for: Denmark, Sweden and Norway.

GET
/{country}/list/company_statuses

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/company_statuses",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
    "company_statuses": [
        {
            "code": "ACTIVE",
            "title": "Active"
        },
        {
            "code": "CEASED",
            "title": "Ceased"
        },
        {
            "code": "DELETED",
            "title": "Deleted"
        },
        {
            "code": "DISSOLVED",
            "title": "Dissolved"
        },
        {
            "code": "DISSOLVED AFTER BANKRUPTCY",
            "title": "Dissolved after bankruptcy"
        },
        {
            "code": "DISSOLVED AFTER CROSS-BORDER MERGER",
            "title": "Dissolved after cross-border merger"
        },
        {
            "code": "DISSOLVED AFTER CROSS-BORDER RELOCATION",
            "title": "Dissolved after cross-border relocation"
        },
        {
            "code": "DISSOLVED AFTER DECLARATION",
            "title": "Dissolved after declaration"
        },
        {
            "code": "DISSOLVED AFTER DEMERGER",
            "title": "Dissolved after demerger"
        },
        {
            "code": "DISSOLVED AFTER ENFORCED CLOSURE",
            "title": "Dissolved after enforced closure"
        },
        {
            "code": "DISSOLVED AFTER FUSION",
            "title": "Dissolved after fusion"
        },
        {
            "code": "DISSOLVED AFTER VOLUNTARY LIQUIDATION",
            "title": "Dissolved after voluntary liquidation"
        },
        {
            "code": "FUTURE",
            "title": "Future"
        },
        {
            "code": "UNDER BANKRUPTCY",
            "title": "Under bankruptcy"
        },
        {
            "code": "UNDER ENFORCED CLOSURE",
            "title": "Under enforced closure"
        },
        {
            "code": "UNDER REASSUMPTION",
            "title": "Under reassumption"
        },
        {
            "code": "UNDER RECONSTRUCTION",
            "title": "Under reconstruction"
        },
        {
            "code": "UNDER VOLUNTARY LIQUIDATION",
            "title": "Under voluntary liquidation"
        },
        {
            "code": "WITHOUT LEGAL EFFECT",
            "title": "Without legal effect"
        }
    ],
    "country": "DK",
    "last_updated": "2020-02-12 13:21:00"
}

List Industries

This list will display all the industries for the given country. In the search documentation the values are referred to as dk_industry_enum, se_industry_enum, no_industry_enum.

This end-point is available for: Denmark, Sweden and Norway.

Expand Endpoint Description to see description and definitions.

Endpoint Description

Section Description
A Agriculture, forestry and fishing
B Mining and quarrying
C Manufacturing
D Electricity, gas, steam and air conditioning supply
E Water supply; sewerage, waste management and remediation activities
F Construction
G Wholesale and retail trade; repair of motor vehicles and motorcycles
H Transportation and storage
I Accommodation and food service activities
J Information and communication
K Financial and insurance activities
L Real estate activities
M PROFESSIONAL, SCIENTIFIC AND TECHNICAL ACTIVITIES
N Administrative and support service activities
O PUBLIC ADMINISTRATION AND DEFENCE; COMPULSORY SOCIAL SECURITY
P Education
Q Human health and social work activities
R Arts, entertainment and recreation
S Other service activities
T Activities of households as employers; undifferentiated goods- and services-producing activities of households for own use
U Activities of extraterritorial organisations and bodies

GET
/{country}/list/industries

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/industries",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response (sample)

{
    "industries": {
        "A": {
            "group": [
                {
                    "11": {
                        "group": {
                            "11100": "Dyrkning af korn (undtagen ris), b\u00e6lgfrugter og olieholdige fr\u00f8",
                            "11200": "Dyrkning af ris",
                            "11300": "Dyrkning af gr\u00f8ntsager og meloner, r\u00f8dder og rodknolde",
                            "11400": "Dyrkning af sukkerr\u00f8r",
                            "11500": "Dyrkning af tobak",
                            "11600": "Dyrkning af tekstilplanter",
                            "11900": "Dyrkning af andre et\u00e5rige afgr\u00f8der"
                        },
                        "title": "Dyrkning af et\u00e5rige afgr\u00f8der"
                    },
                    "12": {
                        "group": {
                            "12100": "Dyrkning af druer",
                            "12200": "Dyrkning af tropiske og subtropiske frugter",
                            "12300": "Dyrkning af citrusfrugter",
                            "12400": "Dyrkning af kernefrugter og stenfrugter",
                            "12500": "Dyrkning af andre tr\u00e6frugter, b\u00e6r og n\u00f8dder",
                            "12600": "Dyrkning af olieholdige frugter",
                            "12700": "Dyrkning af planter til fremstilling af drikkevarer",
                            "12800": "Dyrkning af krydderiplanter, aromaplanter og l\u00e6geplanter",
                            "12900": "Dyrkning af andre fler\u00e5rige afgr\u00f8der"
                        },
                        "title": "Dyrkning af fler\u00e5rige afgr\u00f8der"
                    },
                }
            ],
            "title": "Landbrug, jagt, skovbrug og fiskeri"
        },
        "B": {
            "group": [
                {
                    "51": {
                        "group": {
                            "51000": "Indvinding af stenkul"
                        },
                        "title": "Indvinding af stenkul"
                    },
                    "52": {
                        "group": {
                            "52000": "Indvinding af brunkul"
                        },
                        "title": "Indvinding af brunkul"
                    },
                }
            ],
            "title": "R\u00e5stofindvinding"
        }
    }
}

List Municipalities

The response is a list of strings containing all municipalities for the given country.

This end-point is available for: Denmark, Sweden and Norway.

GET
/{country}/list/municipalities

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/municipalities",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response

{
  "municipalities": [
    "Aabenraa", "Aalborg", "Aarhus", "Albertslund", "Allerød", "Assens", "Aulum-Haderup",
    "Avannaata", "Ballerup", "Billund", "Birkerød", "Bornholms Regionskommune", "Brædstrup",
    "Brøndby", "Brønderslev-Dronninglund", "Christiansø", "Dragør", "Ebeltoft", "Egedal",
    "Egedesminde", "Esbjerg", "Faaborg-Midtfyn", "Fanø", "Favrskov", "Faxe", "Fladså",
    "Fredensborg", "Fredericia", "Frederiksberg", "Frederikshavn", "Frederikssund", "Frederiksværk",
    "Furesø", "Gentofte", "Gladsaxe", "Glostrup", "Godthåb", "Greve", "Gribskov",
    "Guldborgsund", "Haderslev", "Halsnæs", "Hedensted", "Helsingør", "Herlev", "Herning",
    "Hillerød", "Hjørring", "Holbæk", "Holstebro", "Horsens", "Hvidovre", "Høje Taastrup",
    "Hørsholm", "Ikast-Brande", "Ishøj", "Jammerbugt", "Kalundborg", "Kerteminde", "Kolding",
    "Kujalleq", "København", "Køge", "Langeland", "Lejre", "Lemvig", "Lolland", "Lyngby-Taarbæk",
    "Læsø", "Mariagerfjord", "Middelfart", "Morsø", "Møn", "Norddjurs", "Nordfyns", "Nyborg",
    "Næstved", "Nørre Rangstrup", "Odder", "Odense", "Odsherred", "Qaasuitsup", "Qeqertalik",
    "Qeqqata", "Randers", "Rebild", "Ringkøbing-Skjern", "Ringsted", "Roskilde", "Rudersdal",
    "Rødovre", "Samsø", "Sermersooq", "Silkeborg", "Skagen", "Skanderborg", "Skive", "Slagelse",
    "Slangerup", "Solrød", "Sorø", "Stevns", "Struer", "Suså", "Svendborg", "Syddjurs",
    "Sønderborg", "Them", "Thisted", "Tårnby", "Tønder", "Udenfor Kommunal Inddeling",
    "Ulfborg-Vemb", "Vallensbæk", "Varde", "Vejen", "Vejle", "Vesthimmerlands", "Viborg",
    "Vordingborg", "Århus", "Ærø"
  ]
}

List Regions

List of all the regions in Denmark. Each region contains an array of all the zip codes within the area. Regions are not directly supported by Search for Company, but can done together with this mapping and the zip code filter.

This end-point is available for: Denmark.

GET
/{country}/list/regions

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/regions",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response (sample)

{
  "regions": {
    "Region Nordjylland": [7900, 7950, 7960, 7970, 7980, 7990, 7700, 7730, 7741, 7742, 7752, 7755, 7760, 7770, 9320, 9330, 9340],
    "Region Hovedstaden": [1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071]
  }
}

List Zip Codes

Complete list of valid zip codes. This is only meant for validation.

This end-point is available for: Denmark, Sweden and Norway.

GET
/{country}/list/zipcodes/

Example request

r = requests.get("https://api.risika.dk/v1.2/dk/list/zipcodes",
                 headers={"Authorization": <access_token>,
                          "Content-Type": "application/json"})
print(r.json())

Example response (sample)

{
    "zipcodes": [
        0, 800, 900, 1000, 1001, 1002, 1003, 1004, 1005,
        1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013,
        1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021,
        1022, 1023, 1050, 1051, 1052, 1053, 1054, 1055,
        ...
    ]
}

ID types

country: The two letter country code (e.g. dk, se, no)

local_id: The company's ID in the country (e.g. CVR in Denmark)

personal_id: An ID we have given so it's possible to lookup a person.

What is an EAN number?

The EAN number is an electronic address used primarily when a company has to send e-invoicing to the public. The EAN number can be obtained from the municipality or region in which the public institution is located.

What does EAN mean? EAN is an abbreviation for "European Article Numbering". The term is not completely recurring as the system has been extended to the whole world and no longer only covers Europe.

The international name is "global location numbers" and can be abbreviated to GLN. EAN is still used as the term for this number as it is the most commonly used name.

Electronic invoicing is the exchange of an electronic invoice document between a supplier and a buyer. An electronic invoice (eInvoice) is an invoice that has been issued, transmitted and received in a structured data format which allows for its automatic and electronic processing

Danish: Reklamebeskyttelse

Optional protection from solicitation: Entities that opt not to receive advertising inquiries, including unsolicited emails and canvassing, are identified as "Reklamebeskyttelse: Dette P-nummer/CVR-nummer er reklamebeskyttet," which translates to "Advertising Protection: This P-number/CVR-number is advertising protected."

Advertisers are required to identify themselves in such a way that is easily recognizable and accessible by the recipient. The name and address of the advertiser must be stated in the offer. Recipient of advertisements who state in writing that they do not want to receive advertising, the advertiser must abide, unconditionally, post haste, but no later than 3 months of receipt of the request.

Industry

Danish: Industri

An industry is the production of goods or related services within an economy. The major source of revenue of a group or company is the indicator of its relevant industry. When a large group has multiple sources of revenue generation, it is considered to be working in different industries. Manufacturing industry became a key sector of production and labour in European and North American countries during the Industrial Revolution, upsetting previous mercantile and feudal economies. This came through many successive rapid advances in technology, such as the production of steel and coal.

Sole Proprietorship

Danish: Enkeltmandsvirksomhed

A sole proprietorship, also known as the sole trader, individual entrepreneurship or proprietorship, is a type of enterprise that is owned and run by one person and in which there is no legal distinction between the owner and the business entity. A sole trader does not necessarily work 'alone'—it is possible for the sole trader to employ other people.

Registered Capital

Danish: Selskabskapital

Equity capital is based on investments that, unlike debt capital, do not need to be repaid. This can include private investment by business owners, as well as contributions derived from the sale of stock.

Holding Company

Danish: Holdingselskab

A holding company is a company that owns other companies' outstanding stock. A holding company usually does not produce goods or services itself; rather, its purpose is to own shares of other companies to form a corporate group. Holding companies allow the reduction of risk for the owners and can allow the ownership and control of a number of different companies.

Powers to Bind

Danish: Tegningsregel

En tegningsregel angiver de tegningsberettigede i en virksomhed. En tegningsberettiget er en fysisk person, der har ret til at afgive formueretligt bindende løfter og indgå gensidigt bebyrdende aftaler på et selskabs vegne. Ifølge aktieselskabsloven er alle bestyrelsesmedlemmer og direktører tegningsberettigede, men det er dog muligt for selskabet at enten udvide eller indskrænke dette udgangspunkt i selskabets vedtægter, f.eks. ved at kræve at mindst to af de nævnte personer i forening er en betingelse for at forpligte selskabet.

Company Status

Danish: Virksomhedsstatus

The code returned by the end-points can be translated by setting the header Accept-Language. Here is a complete overview of the codes and the translations.

Code English Text Danish Text Applicable Countries
ACTIVE Active Aktiv DK, SE, NO
CEASED Ceased Ophørt DK, SE, NO
DELETED Deleted Slettet DK, SE
DISSOLVED Dissolved Opløst DK
DISSOLVED AFTER BANKRUPTCY Dissolved after bankruptcy Opløst efter konkurs DK, SE
DISSOLVED AFTER CROSS-BORDER MERGER Dissolved after cross-border merger Opløst efter grænseoverskridende fusion DK
DISSOLVED AFTER CROSS-BORDER RELOCATION Dissolved after cross-border relocation Opløst efter grænseoverskridende hjemstedsflytning DK
DISSOLVED AFTER DECLARATION Dissolved after declaration Opløst efter erklæring DK
DISSOLVED AFTER DEMERGER Dissolved after demerger Opløst efter spaltning DK
DISSOLVED AFTER ENFORCED CLOSURE Dissolved after enforced closure Tvangsopløst DK
DISSOLVED AFTER FUSION Dissolved after fusion Opløst efter fusion DK
DISSOLVED AFTER VOLUNTARY LIQUIDATION Dissolved after voluntary liquidation Opløst efter frivillig likvidation DK, SE
FUTURE Future Fremtid DK
MERGED ANNOUNCED Merger announced Fusion annonceret DK, SE
UNDER BANKRUPTCY Under bankruptcy Under konkurs DK, SE
UNDER ENFORCED CLOSURE Under enforced closure Under tvangsopløsning DK, NO
UNDER REASSUMPTION Under reassumption Under reassumering DK
UNDER RECONSTRUCTION Under reconstruction Under rekonstruktion DK, SE
UNDER VOLUNTARY LIQUIDATION Under voluntary liquidation Under frivillig likvidation DK
WITHOUT LEGAL EFFECT Without legal effect Uden retsvirkning DK

Company Functions

Danish: Virksomhedsfunktioner

The code returned by the end-points can be translated by setting the header Accept-Language. Here is a complete overview of the codes and the translations.

Code English Text Danish Text Applicable Countries
ACTUARY Actuary Aktuar SE
ADMINISTRATION Administration Administration DK
AUDIT Audit Revision DK, SE
AUDITOR SUBSTITUTE Auditor Substitute Revisorsuppleant SE
AUTHORIZED TO SIGN Authorized to Sign Tegningsberettiget DK
BENEFICIAL OWNER Beneficial Owner Reel ejer DK
BOARD OF DIRECTORS Board of Directors Bestyrelse DK, SE
BRANCH MANAGER Branch Manager Filialbestyrer DK
CHAIRMAN Chairman Formand DK, SE
CHIEF AUDITOR Chief Auditor Hovedrevisor SE
CHIEF EXECUTIVE OFFICER Chief Executive Officer Administrerende direktør DK, SE
CONFIDENTIAL CLERK Confidential Clerk Prokurist SE
DEPOSITARY Depositary Depositar DK
DEPUTY Deputy Suppleant DK, SE
DEPUTY CHAIRMAN Deputy Chairman Næstformand DK, SE
DEPUTY CHIEF EXECUTIVE OFFICER Deputy Chief Executive Officer Underdirektør SE
EMPLOYEE REPRESENTATIVE Employee Representative Medarbejderrepræsentant SE
ERROR IN DECLARATION Error in Declaration Fejl i angivelse SE
EXECUTIVE COMMITTEE Executive Committee Forretningsudvalg DK, SE
EXTERNAL DEPUTY CHIEF EXECUTIVE OFFICER Chief Executive Officer Ekstern underdirektør SE
EXTERNAL SIGNATORY External Signatory Ekstern underskriver SE
FOUNDER Founder Stiftere DK
GENERAL AGENT General Agent Generalagent DK
GENERAL PARTNER General Partner Komplementar DK, SE
INSOLVENCY ADMINISTRATOR Insolvency Administrator Kurator DK
INSURANCE RESPRESENTATIVE Insurance Respresentative Forsikringsrepræsentant SE
LAWYER Lawyer Advokat DK
LAY AUDITOR Other Auditor Anden revisor SE
LAY AUDITOR SUBSTITUTE Other Auditor Anden revisor SE
LIQUIDATOR Liquidator Likvidator SE
MANAGEMENT Management Direktion DK, SE
OWNER Owner Ejer DK, SE
OWNER REGISTER Owner Register Ejerregister DK
SECRETARY-GENERAL Secretary-General Generalsekretær DK
STAKEHOLDER Stakeholder Interessent DK
SUPERVISORY BOARD Supervisory Board Tilsynsråd DK

Company Type

Danish: Virksomhedsformer

Company type Short Description Category
Enkeltmandsvirksomhed ENK Personlige virksomheder
Personligt ejet Mindre Virksomhed PMV Personlige virksomheder
Interessentskab I/S Personlige virksomheder
Anpartsselskab ApS Kapitalselskaber
Iværksætterselskab (Terminated) IVS Kapitalselskaber
Aktieselskab A/S Kapitalselskaber
Kommanditaktieselskab/Partnerselskab KAS Kapitalselskaber
Kommanditselskab K/S Kapitalselskaber
Region REG Offentlige myndigheder
Folkekirkelige institutioner FKI Offentlige myndigheder
Primærkommune KOM Offentlige myndigheder
Selvstændig offentlig virksomhed SOV Offentlige myndigheder
Statslig administrativ enhed STA Offentlige myndigheder
Forening med begrænset ansvar FMA Foreninger
Andelsselskab (-forening) ANS Foreninger
Frivillig forening FFO Foreninger
Forening FOR Foreninger
Forening eller selskab med begrænset ansvar FBA Foreninger
Fonde og andre selvejende institutioner FON Fonde
Erhvervsdrivende fond EFO Fonde
Filial af udenlandsk aktieselskab, kommanditaktieselskab FAS Filialer
Filial af udenlandsk anpartsselskab eller selskab FAP Filialer
Filial af udenlandsk virksomhed med begrænset ansvar FBA Filialer
Filial af SE-selskab Filialer
Grønlandsk afdeling af udenlandsk selskab eller virksomhed GUS Filialer
Øvrige virksomhedsformer ØVR Andre virksomhedsformer
Anden udenlandsk virksomhed UDL Andre virksomhedsformer
Europæisk Økonomisk Firmagruppe EØF Andre virksomhedsformer
Fast forretningssted af Europæisk økonomisk Firmagruppe Andre virksomhedsformer
Særlig finansiel virksomhed FIV Andre virksomhedsformer
Selskab med begrænset ansvar (Terminated) SMA Andre virksomhedsformer
SE-selskab (Terminated) Andre virksomhedsformer
Dødsbo DØD Andre virksomhedsformer
Medarbejderinvesteringsselskab MSS Andre virksomhedsformer
Partrederi PAR Andre virksomhedsformer
Uoplyst virksomhedsform UOP Andre virksomhedsformer

Shareholder

Danish: Aktionær

A shareholder is someone who owns shares in a corporation. Generally, corporations are owned by several shareholders. For example, Google is a publicly traded corporation with almost half a million shareholders. Other corporations are closely held, meaning that there are only a few shareholders

Types of Financial Statements

Danish: Typer af regnskaber

Reporting Period

Danish: Rapporterings periode

A reporting period is the span of time covered by a set of financial statements. The reporting period is typically either for a month, quarter, or year. Organizations use the same reporting periods from year to year, so that their financial statements can be compared to the ones produced for prior years.

Class of Reporting Entity

Danish: Regnskabsklasse

General Meeting

Danish: Generalforsamling

An annual general meeting is a meeting of the general membership of an organization. These organizations include membership associations and companies with shareholders. These meetings may be required by law or by the constitution, charter, or by-laws governing the body. The meetings are held to conduct business on behalf of the organization or company.

Auditor

Danish: Revisor

An auditor is a person or a firm appointed by a company to execute an audit. To act as an auditor, a person should be certified by the regulatory authority of accounting and auditing or possess certain specified qualifications. Generally, to act as an external auditor of the company, a person should have a certificate of practice from the regulatory authority.

The API has the following types of auditors, which is used in Financial Stats):

Code
NO AUDIT ASSISTANCE
AUDITOR'S REPORT ON EXTENDED REVIEW
COMPILATION OF FINANCIAL STATEMENTS
AUDITOR'S REPORTS (OTHER NON-ASSURANCE REPORTS)
THE INDEPENDENT AUDITOR'S REPORTS (REVIEW)
AUDITOR'S REPORT
NO AUDITOR ASSISTANCE

The API doesn't offer translations for auditors at this time.

Currency

Danish: Valuta

A currency is a system of money (monetary units) in common use, especially for people in a nation. Under this definition, US dollars (USD), Danish crowns (DKK), Swedish crowns (SEK), pounds sterling (GBP), European euros (EUR) and Norwegian crowns (NOK) are examples of currencies. These various currencies are recognized as stores of value and are traded between nations in foreign exchange markets, which determine the relative values of the different currencies. Currencies in this sense are defined by governments, and each type has limited boundaries of acceptance.

IFRS

Danish: IFRS

International Financial Reporting Standards, usually called IFRS, are standards issued by the IFRS Foundation and the International Accounting Standards Board (IASB) to provide a common global language for business affairs so that company accounts are understandable and comparable across international boundaries. They are a consequence of growing international shareholding and trade and are particularly important for companies that have dealings in several countries. They are progressively replacing the many different national accounting standards. They are the rules to be followed by accountants to maintain books of accounts which are comparable, understandable, reliable and relevant as per the users internal or external.

Shell Corporation

Danish: Stråmandsvirksomhed

A shell corporation is a company or corporation that exists only on paper and has no office and no employees, but may have a bank account or may hold passive investments or be the registered owner of assets, such as intellectual property, or ships. Shell companies may be registered to the address of a company that provides a service setting up shell companies, and which may act as the agent for receipt of legal correspondence (such as an accountant or lawyer). The company may serve as a vehicle for business transactions without itself having any significant assets or operations. Sometimes, shell companies are used for tax evasion, tax avoidance, and money laundering, or to achieve a specific goal such as anonymity. Anonymity may be sought to shield personal assets from others, such as a spouse when a marriage is breaking down, from creditors, from government authorities, besides others.

from wikipedia https://en.wikipedia.org/wiki/Shell_corporation

Errors

The API uses HTTP status codes together with an error message formatted in JSON for exceptions. The response is formatted as {"error": "..."} and describes the encountered error in a user-friendly way. A lot of exceptions are reused, so they are not listed for each end-point. These lists should make it easier for a developer to predict the possible error that can be returned.

Authorization, Payment and Encoding Errors

Code Name Message
400 Bad Request Invalid company ID
400 Bad Request No company with the CVR-number
400 Bad Request No company with the Company ID
400 Bad Request No person with the ID <personal ID>
400 Bad Request Missing 'cvr' or 'key' in request parameters
400 Bad Request  Missing JSON body
400 Bad Request The requested country is not available for this end-point
400 Bad Request 'nickname' is missing from the request or is not a string
400 Bad Request 'type' is missing from the request or is not a string
400 Bad Request With a 'partner' user, you should specify what kind of users it is allowed to distribute
400 Bad Request <permit> didn't match any permits for this user
400 Bad Request Only 'partner' users can distribute new users
400 Bad Request The following key-value pairs must be present: 'country', 'local_id', 'plan'
400 Bad Request The following key-value pairs must be present: 'company_id', 'name', 'country', 'local_id', 'plan'
400 Bad Request 'country' must be a string and exactly 2 characters
400 Bad Request 'name' must be a string
400 Bad Request 'plan' must be either of these plans: BASIC, ENTERPRISE, PRO, STANDARD, TRIAL
400 Bad Request 'grouped' must be either 'true' or 'false'
401 Unauthorized Your permanent access token has been revoked. Contact Risika for more information
401 Unauthorized Insufficient privileges. You must use a permanent access token to access this function
401 Unauthorized Insufficient privileges. You must use a temporary access token to access this resource
401 Unauthorized Insufficient privileges. You must have a partner user to access this function
401 Unauthorized Insufficient rights to issue this permit or the user permit doesn't match any known permit types
401 Unauthorized Corrupt JWT
402 Payment Required Your subscription plan does not allow API requests
402 Payment Required Your subscription plan does not allow requests on '%s' resources
402 Payment Required Your subscription plan does not allow this request
402 Payment Required Your subscription plan does not allow anymore requests of this type
402 Payment Required Your subscription plan does not allow exports
402 Payment Required Your subscription plan does not allow you to monitor this many companies
404 Not Found Unknown resource
406 Not Acceptable Acceptable languages: da-DK, en-UK. If omitted, en-UK is used.
409 Conflict No company with the country and local_id exists
415 Unsupported Media Type This API only supports responses encoded as JSON.
500 Internal Server Error Unknown user type <user type>
500 Internal Server Error Invalid privileges

Search and Export Errors

Code Name Message
400 Bad Request Filter '<your filter>' is not recognized"
400 Bad Request 'filters' must be a dictionary/associative array
400 Bad Request 'company_name' must be a string
400 Bad Request 'company_type' must be a list of strings with company types
400 Bad Request 'city' must be a list of string with city names
400 Bad Request 'score' must be a list of int with score values
400 Bad Request 'active' must be a boolean
400 Bad Request 'advertising' must be a boolean
400 Bad Request 'employees' must be a list of string with employee intervals
400 Bad Request 'industry' must be a list of ints with valid industry values
400 Bad Request 'zipcode' must be a list of ints
400 Bad Request 'municipality' must be a list of strings
400 Bad Request 'industry' must be a list of ints with valid industry values
400 Bad Request 'score' is not within range (must be 1-10)
400 Bad Request 'interval' doesn't match any known intervals
400 Bad Request Invalid value for 'to'
400 Bad Request Invalid datatype for 'to'
400 Bad Request Invalid value for 'from'
400 Bad Request Invalid datatype for 'from'
400 Bad Request Invalid values for 'to' and 'from'
400 Bad Request 'to' must be set, if 'from' is set
400 Bad Request 'from' must be set, if 'to' is set
400 Bad Request difference between 'from' and 'to' must be less than or equal to <some limit>
400 Bad Request Parameter 'to' must be less or equal to <some limit>
400 Bad Request Invalid format for equity filtering
400 Bad Request Invalid operator for equity comparision
400 Bad Request Currency must be a string
400 Bad Request Supported currencies are: DKK, SEK, NOK, EUR, GBP, USD, HKD, SGD, QAR, AUD, HRK, CHF, RUB, CZK, CAD, PLN
400 Bad Request Missing export parameters
400 Bad Request Filters must be defined
400 Bad Request Export mode doesn't take 'from' argument
400 Bad Request Missing search parameters
400 Bad Request Query not defined
400 Bad Request Query is empty
400 Bad Request Filters must be defined
400 Bad Request You must specify at least one filter
400 Bad Request Minimal search must include a company name in the filter
400 Bad Request Minimal search with filter can only contain company name
400 Bad Request Search mode should be 'minimal' or 'full'

Financial, Credit and Score Errors

Code Name Message
400 Bad Request Didn't find any financial key figures to compare against
400 Bad Request Value not recognized as a number
400 Bad Request Credit must be greater than 0
409 Conflict No information found for <Company ID>
409 Conflict No equity information found for <Company ID>
409 Conflict No Risika score found for <Company ID>
409 Conflict No Risika score found for <Company ID>
409 Conflict No reports found with the Company ID <Company ID>

Monitoring Errors

Code Name Message
400 Bad Request Request is missing 'local_organization_id'
400 Bad Request Request is missing 'local_organization_id.country'
400 Bad Request Value for 'local_organization_id.country' is not a valid country
400 Bad Request Request is missing 'local_organization_id.id'
400 Bad Request Expected list of 'local_organization_id'
400 Bad Request You must specify 'local_id' and 'country' in the GET parameters
409 Conflict {"error": "Not subscribed to company", "rejected": <local_organization_id>}
500 Internal Server Error Missing translation for sentence_id <some id>

Webhook Errors

Code Name Message
400 Bad Request Protocol must be either HTTP or HTTPS
400 Bad Request URL is malformed. No changes were made
400 Bad Request URL or IP is blacklisted
409 Conflict Webhook is not set up
409 Conflict You have to wait <time> seconds before testing again.
Show examples in: