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.
We recommend that you see ID Types before you read about the end-points, since these types will be used throughout the documentation.
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
.
To help provide a stable API for everyone, the API uses rate limiting to ensure everyone can get their requests through. The rates are shown in the table below. All tiers have a possiblity to send bursts, which gives added flexibility, if the rate limit have to be exceeded for a while. Sustained load have to be below the rate limit. If the limit is exceeded, the server will return HTTP status 429 Too Many Requests
.
Rates are subject to change without warning, so it is recommended to always wrap an API call with a retry-function, if the server should return 429 Too Many Requests
. At time of writing, all end-points use the same limit, but this may change in the future.
Your tier is, by default, determined by your subscription plan, but can be changed if your use case requires a higher limit.
Tier | Limit | Burst | Included in plans |
---|---|---|---|
Tier 1 | 2 requests per second | 50 | Freemium, Trial |
Tier 2 | 4 requests per second | 50 | Basic, Standard |
Tier 3 | 10 requests per second | 1000 | Pro, Enterprise |
Tier 4 | 100 requests per second | 1000 | Upon request |
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 a 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 their 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 their hash:
GET https://api.risika.dk/v1.2/se/company/basics/5bb0a470e09b3629ab23d6beae2ecea4
"local_organization_id": {
"country": "SE",
"hash": "5bb0a470e09b3629ab23d6beae2ecea4",
"id": "5568099963"
}
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 timestamp, which you should check in your script automatically and request a new access token when it is about to expire. The expiration timestamp can be found by decoding the JWT and extracting the JSON-object inside it.
You can learn more about JWT at jwt.io.
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.
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")
{
"token": "jwt eyJ0eXAiOiJKV1QiLCJhbG ..."
}
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!
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
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:], options={"verify_signature": False})
self._expires = token["exp"]
@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())
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.
To get the general infomation about a company, you make a request to GET /{country}/company/basics/{local_id}
.
{country}
is a two letter code for the country you want to query from (ISO 3166-1 Alpha-2). The countries supported can be found in ID Types.
This end-point supports the Accept-Language
header described in Headers.
Expand Endpoint Description to see description and definitions.
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. |
audit_selected |
true/false whether this company has a been financially audited |
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+) or the specific count |
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 |
score_data |
The current risika score for both BOHR and NEWTON |
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 |
webpage |
The website of the company |
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) |
credit_policy |
See Credit Policy for more information |
financial_year |
Shows that start and end dates for the financial year |
internal_id |
See Notes for more information |
listed |
true/false whether this company is a listed stock company |
purpose |
The company's own description of their purpose according to the offical company registers |
status_valid_from |
The date of the last status change. If the date is the same as date_of_incorporation , it can be safely ignored |
r = requests.get("https://api.risika.dk/v1.2/dk/company/basics/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"address": {
"city": "København K",
"coname": null,
"country": "DK",
"municipality": "København",
"number": "26, st.",
"postdistrict": "København K",
"street": "Kronprinsessegade",
"zipcode": 1306
},
"advertisement_protection": true,
"audit_selected": 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"
},
"credit_policy": null,
"date_of_incorporation": "2016-04-30",
"email": {
"email": "contact@risika.dk",
"hidden": false
},
"financial_reports": true,
"financial_year": {
"end": "--12-31",
"start": "--01-01"
},
"holding_company": false,
"internal_id": null,
"last_report_date": "2019-12-31",
"listed": null,
"local_organization_id": {
"country": "DK",
"id": "37677892"
},
"main_industry_code": {
"code": "829100",
"description": "Inkassovirksomhed og kreditoplysning",
"isic": {
"code": "8291",
"description": "Activities of collection agencies and credit bureaus",
"section": "N"
},
"nace": {
"code": "8291",
"description": "Activities of collection agencies and credit bureaus",
"section": "N"
},
"section": "N"
},
"number_of_employees": {
"interval": "10-19",
"specific": 15
},
"phone": {
"hidden": false,
"phone_number": "+4542905757"
},
"powers_to_bind": "Selskabet tegnes af en direktør i forening med et medlem af bestyrelsen eller af den samlede bestyrelse",
"purpose": "Selskabets formål er at etablere og drive en online kreditvurderingsplatform",
"registered_capital": {
"currency": "DKK",
"value": 557574.0
},
"risk_assessment": "Medium",
"risk_assessment_code": "MEDIUM",
"score": 5,
"score_data": {
"BOHR": {
"date": "2020-12-16",
"probability_of_distress": null,
"risk_assessment": "MEDIUM",
"score": 5
},
"NEWTON": {
"date": "2020-12-16",
"probability_of_distress": 0.002701502526178956,
"risk_assessment": "LOW",
"score": 7
}
},
"secondary_industry_codes": [
{
"group_name": "Databehandling, webhosting og lignende serviceydelser; webportaler",
"industry_code": "631100",
"industry_description": "Databehandling, webhosting og lignende serviceydelser",
"isic": {
"code": "6311",
"description": "Data processing, hosting and related activities",
"section": "J"
},
"nace": {
"code": "6311",
"description": "Data processing, hosting and related activities",
"section": "J"
},
"priority": 1,
"section": "J"
},
{
"group_name": "Computerprogrammering, konsulentbistand vedrørende informationsteknologi og lignende aktiviteter",
"industry_code": "620200",
"industry_description": "Konsulentbistand vedrørende informationsteknologi",
"isic": {
"code": "6202",
"description": "Computer consultancy and computer facilities management activities",
"section": "J"
},
"nace": {
"code": "6202",
"description": "Computer consultancy activities",
"section": "J"
},
"priority": 2,
"section": "J"
}
],
"status": "Active",
"status_code": "ACTIVE",
"status_valid_from": "2016-07-01",
"vat": true,
"webpage": "www.risika.dk"
}
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
).
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())
[
{
"key": "5790001718633",
"keytype": "GLN",
"local_id": "25362365",
"name": "KONTAKT ApS"
},
{
"key": "25362365",
"keytype": "DK:CVR",
"local_id": "25362365",
"name": "KONTAKT ApS"
}
]
If you have the EAN-number, but wants to find the CVR-number, you can do so by querying for the key
without cvr
.
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())
[
{
"key": "5790001899950",
"keytype": "GLN",
"local_id": "10404916",
"name": "Tivoli / Nimb"
}
]
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.
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_to returns 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. |
r = requests.get("https://api.risika.dk/v1.2/dk/company/relations/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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"
}
]
}
You can look up the date of the last update for a company.
r = requests.get("https://api.risika.dk/v1.2/dk/company/ean",
params={"local_id": "37677892"},
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"local_organization_id": "37677892",
"ts": "2021-07-08"
}
]
You can look up the date of last update for each individual CVR in a list
r = requests.get("https://api.risika.dk/v1.2/dk/company/ean",
params={"local_id": ["10404916", "37677892", "61126228"]},
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"local_organization_id": "10404916",
"ts": "2021-07-17"
},
{
"local_organization_id": "61126228",
"ts": "2021-07-17"
},
{
"local_organization_id": "37677892",
"ts": "2021-07-08"
}
]
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 Basic) 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.
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
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 |
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 |
r = requests.get("https://api.risika.dk/v1.2/dk/financial/numbers/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"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
}
]
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
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 |
r = requests.get("https://api.risika.dk/v1.2/dk/financial/ratios/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"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
}
]
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.
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. |
r = requests.get("https://api.risika.dk/v1.2/dk/financial/stats/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"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
}
]
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.
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
r = requests.get("https://api.risika.dk/v1.2/dk/financial/performance/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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
}
}
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.
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:
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:
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:
r = requests.get("https://api.risika.dk/v1.2/dk/person/relations/4006873173",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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"
}
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.
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.
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.
Changing between scoring products
The standard product (collection of models) used by this end-point is called BOHR
. It will default to BOHR
to you don't specify the product, but you can also specify it explicitly by setting the GET
parameter product
to BOHR
.
If you want to query for the Risika Scores generated by NEWTON (collection of models, including the Neutral Network scores), you set the GET
parameter to NEWTON
.
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())
{
"upfront": null,
"credit_days": 7,
"credit_max": 9000,
"currency": "DKK"
}
This endpoint provides the historical Risika scores for the queried company. The most recent score is also shown in /{country}/company/basics/{local_id}.
If we're unable to score the company, score
and risk_assessment
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.
The end-point works with Danish, Swedish and Norweigian companies.
Expand Endpoint Description to see description and definitions.
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.
Changing between scoring products
The standard product (collection of models) used by this end-point is called BOHR
. It will default to BOHR
to you don't specify the product, but you can also specify it explicitly by setting the GET
parameter product
to BOHR
.
If you want to query for the Risika Scores generated by NEWTON (collection of models, including the Neutral Network scores), you set the GET
parameter to NEWTON
.
Note: The list of scores are not sorted by date
r = requests.get("https://api.risika.dk/v1.2/dk/rating/scores/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"date": "2020-06-17",
"error": null,
"probability_of_distress": null,
"risk_assessment": "Middel",
"risk_assessment_code": "MEDIUM RISK",
"score": 4
},
{
"date": "2020-04-30",
"error": null,
"probability_of_distress": null,
"risk_assessment": "Middel",
"risk_assessment_code": "MEDIUM RISK",
"score": 4
}
]
[
{
"date": "2020-06-17",
"error": null,
"probability_of_distress": 0.0016828543739393353,
"risk_assessment": "Low",
"risk_assessment_code": "LOW RISK",
"score": 8
},
{
"date": "2020-04-30",
"error": null,
"probability_of_distress": 0.0036675294395536184,
"risk_assessment": "Low",
"risk_assessment_code": "LOW RISK",
"score": 7
},
]
r = requests.get("https://api.risika.dk/v1.2/dk/rating/scores/10839238",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"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",
"probability_of_distress": null,
"risk_assessment": null,
"risk_assessment_code": null,
"score": null
}
]
These end-points allows you to set and get a credit policy. The policies are set globally for your organization and is enabled on the Dashboard and in the API at the same time. The policies are individual for each country you have access to.
The policy is only set and verified with these end-points. To apply the credit policy to a company, you enable the credit policy /account/credit_policy/set
and then make a call to Company Basic, Company Search, or Monitor List. These end-points will return a key called credit_policy
. If the credit policy is not enabled (disabled through /account/credit_policy/set
or never set), it will show:
"credit_policy": null,
If the credit policy is set, but the company didn't have any conflicts, it will show the following object:
"credit_policy": {
"allowed": true,
"conflicts": []
}
If the credit policy is set and there is one or more conflicts with the company, it will show an object similar to this:
"credit_policy": {
"allowed": false,
"conflicts": [
{
"code": "POLICY_RISIKA_SCORE",
"text": "The company has a lower credit score than accepted cf. your credit policy"
}
]
}
code
is always in English and uppercase. If you want to add logic to the returned Conflict Codes, you should only rely on these code. We may add new Conflict Codes in the future, when we add more options in the credit policy. We recommend that you make sure your program can handle unknown Conflict Codes. The possible Conflict Codes can be found in the table below.
text
is describing the conflict in the langauge set in the request header. The exact wording of text
may change without warning, so program logic should always be based on code
.
Credit Policy parameter | Conflict Code |
---|---|
exclude_risika_scores | POLICY_RISIKA_SCORE |
exclude_company_types | POLICY_COMPANY_TYPE |
exclude_level_of_auditor_assistances | POLICY_AUDITOR_ASSISTANCE |
exclude_industries | POLICY_INDUSTRY |
exclude_companies | POLICY_LOCAL_ID |
exclude_persons | POLICY_ENTITY_ID |
exclude_vat | POLICY_VAT |
bankruptcy_limit | POLICY_BANKRUPTCIES |
age_limit | POLICY_AGE |
negative_equity_limit | POLICY_NEGATIVE_EQUITY |
prepaid_phone_number | POLICY_PREPAID_PHONE_NUMBER |
phone_number_registry | POLICY_PHONE_NUMBER_REGISTRY |
distance_to_ceo | POLICY_DISTANCE_TO_CEO |
You set the credit policy with a POST
request to /account/credit_policy/set
. The POST
request must have all of the following keys:
Key | Description |
---|---|
enabled |
Enable or disable the credit policy for country |
country |
Choose which country the policy is for |
policy |
A dictionary or "associative array" containing the policy |
The key policy
is a dictionary with these keys:
Key | Example | Availability |
---|---|---|
exclude_risika_scores |
[1, 2, 3, 4] |
DK, NO, SE |
exclude_company_types |
["APS", "IVS"] |
DK, NO, SE |
exclude_level_of_auditor_assistances |
["NO AUDITOR ASSISTANCE"] |
DK |
exclude_industries |
["841200"] |
DK, NO, SE |
exclude_companies |
[{"local_organization_id": {"country": "DK", "id": "10404916"}}] |
DK, NO, SE |
exclude_persons |
[{"local_person_id": {"country": "DK", "id": "4006873173"}}] |
DK |
exclude_vat |
["SHOULD_BE", "SHOULD_BE_AND_EXCEEDED"] |
DK, NO, SE |
bankruptcy_limit |
3 |
DK |
age_limit |
3 |
DK, NO, SE |
negative_equity_limit |
3 |
DK, NO, SE |
prepaid_phone_number |
false |
DK |
phone_number_registry |
false |
DK |
distance_to_ceo |
5 | DK |
Keys that are not set, will be set to null
. We recommend that you send all keys and set the unused keys to null
yourself, so you don't forget the values of the unset keys will be cleared.
For exclude_vat
, you can set it to SHOULD_BE
or SHOULD_BE_AND_EXCEEDED
. SHOULD_BE
means they are in an industry where companies typically are registered for VAT. The conflict is only triggered if the company isn't registered and they should be. SHOULD_BE_AND_EXCEEDED
is an extension of SHOULD_BE
, but only triggers if they also exceed the legal limit for revenue (limits depend on country).
For prepaid_phone_number
, you can set it to true
, false
or null
. The filter can allow or disallow the use of prepaid cards in the listed phone numbers for the company (aggregated over different sources). Prepaid cards may in some cases indicate fraudlent behavior, but is no guarantee of any wrongdoing. If the filter is set to true
, it will allow the use of prepaid cards. If the filter is set to false
, it will not allow prepaid cards. Having the filter set to null
is the same as true
- the filter is disabled and will allow prepaid cards.
r = requests.post(
"https://api.risika.dk/v1.2/account/credit_policy/set",
json={
"enabled": True,
"country": "DK",
"policy": {
"exclude_risika_scores": [1, 2, 3, 4],
"exclude_company_types": ["APS"],
"exclude_level_of_auditor_assistances": ["NO AUDITOR ASSISTANCE"],
"exclude_industries": ["841200"],
"exclude_companies": [
{"local_organization_id": {"country": "DK", "id": "10404916"}}
],
"exclude_persons": [
{"local_person_id": {"country": "DK", "id": "4006873173"}}
],
"exclude_vat": ["SHOULD_BE", "SHOULD_BE_AND_EXCEEDED"],
"bankruptcy_limit": 3,
"age_limit": 3,
"negative_equity_limit": 3,
"prepaid_phone_number": false,
"phone_number_registry": false,
"distance_to_ceo": 5,
}
},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"status": "ok"
}
You can retrieve the credit policy you set with a POST
request to /account/credit_policy/set
using this end-point. You specify the country in the GET
parameter by setting country
e.g. country=DK
.
The policy you get back will have the company name and person names included, so it is easier to display in a user interface.
It also has Unix timestamps for when the policy was created and updated (created
and updated
, respectively).
NB: The timestamps are 64-bit integers and are in milliseconds. A lot of systems still use 32-bit timestamps with seconds precision.
r = requests.get(
"https://api.risika.dk/v1.2/account/credit_policy/get",
params={"country": "DK"},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"created": 1603901311000,
"enabled": true,
"policy": {
"exclude_risika_scores": [1, 2, 3, 4],
"exclude_company_types": ["APS"],
"exclude_level_of_auditor_assistances": ["NO AUDITOR ASSISTANCE"],
"exclude_industries": ["841200"],
"exclude_companies": [
{
"local_organization_id": {"country": "DK", "id": "10404916", "name": "TIVOLI A/S"}
}
],
"exclude_persons": [
{
"local_person_id": {"country": "DK", "id": "4006873173", "name": "Timm Jeppesen"}
}
],
"exclude_vat": ["SHOULD_BE", "SHOULD_BE_AND_EXCEEDED"],
"bankruptcy_limit": 3,
"age_limit": 3,
"negative_equity_limit": 3,
"prepaid_phone_number": false,
"phone_number_registry": false,
"distance_to_ceo": 5
},
"updated": 1603984239000
}
The "Notes" end-points let you manage and show the notes you have add for each company. The notes are stored in a JSON structure and you are free to put anything into this structure with a few limitations to size and some reserved variable names. At the time of writing, there is no actual size limit to the JSON structure as we expect our customers to only use it for legitimate purposes, but there is an indirect limit on the size, as our load balancer doesn't allow POST requests larger than 1 MB. We reserve the right to add any filters or limitations later with no warning, but all legitimate purposes should always work.
There is two reserved variable names that can be used for specific features in our API and on our Dashboard
Parameter | Datatype | Features |
---|---|---|
_internal_id |
String of 1 - 64 chars | This data is shown in Company Basic and Monitoring under "Internal ID" and may help Dashboard users, so they can find your company's internal ID directly from the Dashboard |
_phone_number |
String of 1 - 64 chars | The phone number can be part of your Credit Policy, where you can set criteria for the phone numbers to mitigate fraud. This variable is in case your customer use a different phone number than the one that we have. The phone numbers must include the country code to work (e.g. +45xxxxxxxx for Denmark) and spaces must be omitted. |
We will add more variables in the future, so to prevent any interference with your custom variables, the variables starting with underscore is reserved for features by Risika.
To add notes to companies, you send a POST request to this end-point with a list with this data structure:
{
"mode": "overwrite",
"notes": [{"data": <JSON>, "local_organization_id": <Company ID>}]
}
The array should be between 1 and 500 elements. If you need to add more, you have to split the array into multiple parts and send a new POST request for each part.
mode
must be hardcoded to overwrite
, but will have other options later.
This end-point also makes to possible to remove multiple notes at the same time. If you send an empty JSON object ({}
) for each of the companies you want to remove, the data will be cleared and no longer shown in /account/notes/list
.
r = requests.post(
"https://api.risika.dk/v1.2/account/notes/add",
json={
"mode": "overwrite",
"notes": [
{
"data": {"_internal_id": "1", "test": 1},
"local_organization_id": {"country": "DK", "id": "54562519"}
},
{
"data": {"_internal_id": "2", "test": 2},
"local_organization_id": {"country": "NO", "id": "913829565"}
},
{
"data": {"_internal_id": "4", "test": 4},
"local_organization_id": {"country": "UK", "id": "00368236"}
},
{
"data": {"_internal_id": "3", "test": 3},
"local_organization_id": {"country": "SE", "id": "5560704131"}
},
{
"data": {"_internal_id": "5", "test": 5},
"local_organization_id": {"country": "SE", "hash": "eb50f772a2383d996df729370e2a38d5"}
}
]
},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"rejected": [],
"status": "ok"
}
To verify the note you wrote to a specific company, you can use this end-point. To retrive the full list of notes, please see /account/notes/list
.
NB: This is a POST request, unlike what the name might suggest
r = requests.post(
"https://api.risika.dk/v1.2/account/notes/get",
json={
"local_organization_id": {"country": "DK", "id": "54562519"}
},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"_internal_id": "1", "test": 1
}
This end-point lists all notes you have added through /account/notes/add
. You can only get 1000 notes at once, but you can control the pagination with rows
and get chunks of 1000 at a time. You can use count
to verify that you have downloaded everything.
r = requests.post(
"https://api.risika.dk/v1.2/account/notes/list",
json={
"rows": {
"from": 0,
"to": 10,
}
},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"count": 5,
"notes": [
{"data": {"_internal_id": "1", "test": 1}, "local_organization_id": {"country": "DK", "id": "54562519"}},
{"data": {"_internal_id": "2", "test": 2}, "local_organization_id": {"country": "NO", "id": "913829565"}},
{"data": {"_internal_id": "4", "test": 4}, "local_organization_id": {"country": "UK", "id": "00368236"}},
{"data": {"_internal_id": "3", "test": 3}, "local_organization_id": {"country": "SE", "id": "5560704131"}},
{"data": {"_internal_id": "5", "test": 5}, "local_organization_id": {"country": "SE", "hash": "eb50f772a2383d996df729370e2a38d5"}}
],
"rows": {
"from": 0,
"to": 10
}
}
You can use this end-point to remove a note from a single company. If you want to remove multiple company notes at a time, see /account/notes/list
.
r = requests.post(
"https://api.risika.dk/v1.2/account/notes/remove",
json={
"local_organization_id": {"country": "DK", "id": "54562519"}
},
headers={"Authorization": access.token,
"Content-Type": "application/json"}
)
print(r.json())
{
"status": "ok"
}
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.
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 |
Temporary Highlights
Highlight | Description |
---|---|
corona_exposure |
Highlights companies with stressed liquidity and within industries where demand is negatively affected by the crisis. |
r = requests.get("https://api.risika.dk/v1.2/dk/highlights/37677892",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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": "Ændring 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": "Ændring 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.
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. NB: We use a "half-closed interval" for from
and to
, which means that you should query "0-1000, 1000-2000, 2000-3000, ..." to get everything. If you query for "0-1000, 1001-2000, 2001-3000 ..." you will miss one company every time.
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 |
dk_industry_enum, List[dk_industry_enum] |
Allows you to filter by industry code, special industry categories (singleton or list) |
"industry": SEO |
se_industry_enum, List[se_industry_enum] |
Filters by exact industry code (singleton or list) only strings are accepted |
"industry": NOO |
no_industry_enum, List[no_industry_enum] |
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 |
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"
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())
{
"search_result": [
{
"local_organization_id": {
"country": "DK",
"id": "37677892"
},
"company_name": "RISIKA A/S"
}
],
"count": 1
}
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())
{
"count": 2,
"rows": {
"from": 0,
"to": 5
},
"search_result": [
{
"active": true,
"address": {
"city": "København K",
"coname": null,
"country": "DK",
"municipality": "København",
"number": "26, st.",
"postdistrict": "København K",
"street": "Kronprinsessegade",
"zipcode": 1306
},
"advertisement_protected": true,
"company_name": "RISIKA A/S",
"company_type": "A/S",
"credit_policy": null,
"date_of_incorporation": "2016-04-30",
"employees_interval": "10-19",
"historical_names": [
{
"company_name": "Globus Platform ApS",
"valid_from": "2016-04-30",
"valid_to": "2016-12-30"
},
{
"company_name": "NEMKREDITVURDERING.DK ApS",
"valid_from": "2016-12-31",
"valid_to": "2017-05-17"
},
{
"company_name": "RISIKA ApS",
"valid_from": "2017-05-18",
"valid_to": "2019-01-13"
},
{
"company_name": "RISIKA A/S",
"valid_from": "2019-01-14",
"valid_to": null
}
],
"local_organization_id": {
"country": "DK",
"id": "37677892"
},
"score": 4,
"secondary_names": [
{
"company_name": "Global Business Platform ApS",
"valid_from": "2016-04-30",
"valid_to": "2017-05-17"
},
{
"company_name": "Globus Platform ApS",
"valid_from": "2017-01-14",
"valid_to": "2017-05-17"
}
],
"webpage": "www.risika.dk"
},
{
"active": true,
"address": {
"city": "København K",
"coname": null,
"country": "DK",
"municipality": "København",
"number": "26, st.",
"postdistrict": "København K",
"street": "Kronprinsessegade",
"zipcode": 1306
},
"advertisement_protected": true,
"company_name": "TNT Holding DK ApS",
"company_type": "APS",
"credit_policy": null,
"date_of_incorporation": "2018-01-23",
"employees_interval": null,
"historical_names": [
{
"company_name": "Risika Group ApS",
"valid_from": "2018-01-23",
"valid_to": "2018-09-19"
},
{
"company_name": "TNT Holding DK ApS",
"valid_from": "2018-09-20",
"valid_to": null
}
],
"local_organization_id": {
"country": "DK",
"id": "39276208"
},
"score": 1,
"secondary_names": null,
"webpage": null
}
],
"time_elapsed": 91
}
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 |
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())
{
"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
}
The end-points that starts with /{country}/registration/
offers registration infomation (Tinglysning in Danish) where information from the Danish registration office is provided, information on e.g. properties.
To get a registration information about a property, you make a request to GET /{country}/registration/properties
.
Expand Endpoint Description to see description and definitions.
The property end-point requires four values in the request, these are; zipcode, district, street and building_number. Additional parameters can also be given to narrow the returned list of properties if e.g. address is requested where many properties share same address and can be distinguished by floor. Then the additional parameters are; floor, suite, side_door and district_subdivision.
Table with brief descriptions of all variables delivered by Registration Properties:
Value | Description |
---|---|
address |
The address of the requested property |
data |
The data for the requested property address |
r = requests.get("https://api.risika.dk/v1.2/dk/registration/property",
params ={"zipcode": "2200",
"district": "København N",
"street": "Jagtvej",
"building_number": "135"},
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[ { "address": { "building_number": "135", "country": "DK", "district": "K\u00f8benhavn N", "floor": null, "municipality": "K\u00f8benhavn", "side_door": null, "street": "Jagtvej", "suite": null, "zipcode": "2200" }, "data": {...} } ]
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.
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())
{
"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
}
The monitoring end-points allow you to manage and subscribe to changes for all your clients. You can add companies to monitoring lists and poll them for changes with List Monitoring.
The level of monitoring varies between countries. The list below shows which tags are delivered on each country. We will continuously add more tags and extend support for each country.
Tag | Country |
---|---|
status | DK, SE NO |
management | DK, SE, NO |
new_report | DK, SE, NO |
address | DK, SE, NO |
score | DK, SE NO |
employees_interval | DK, SE |
company_type | DK, SE |
industry | DK, SE |
name | DK, SE |
phone_number | DK |
DK |
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. If you an invalid Company ID, it will return the ID in the response under rejected
.
If you only have the hash
of a company (only applies for Swedish companies), you can add it to the monitoring list by replacing id
with hash
in the request (see example).
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 works with Danish, Swedish and Norweigian companies ('DK', 'SE', 'NO').
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": "NO", "id": "985279721"}},
{"local_organization_id": {"country": "SE", "hash": "ef94e87c50dc9f200c16eac53e3050d4"}}
]
},
headers={"Authorization": access.token,
"Content-Type": "application/json"})
print(r.json())
{
"status": "ok",
"rejected": []
}
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.
If you only have the hash
of a company (only applies for Swedish companies), you can add it to the monitoring list by replacing id
with hash
in the request (see example).
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).
r = requests.post("https://api.risika.dk/v1.2/monitor/remove",
json={
"unsubscribe": [
{"local_organization_id": {"country": "DK", "id": "37677892"}},
{"local_organization_id": {"country": "NO", "id": "985279721"}},
{"local_organization_id": {"country": "SE", "hash": "ef94e87c50dc9f200c16eac53e3050d4"}}
]
},
headers={"Authorization": access.token,
"Content-Type": "application/json"})
print(r.json())
{
"status": "ok",
"rejected": []
}
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
.
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"})
{
"monitoring": true
}
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 |
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.
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())
{
"count": 17281,
"monitor_list": [
{
"address": {
"city": "København V",
"coname": null,
"country": "DK",
"municipality": "København",
"number": "3",
"postdistrict": "København V",
"street": "Vesterbrogade",
"zipcode": 1620
},
"changes": null,
"company_name": "TIVOLI A/S",
"company_type": "A/S",
"credit_max": 25000000,
"credit_policy": null,
"date_of_incorporation": "0001-01-01",
"employee_interval": "1000-999999",
"financial_key_figures": {
"currency": "DKK",
"equity": 920400000.0,
"liquidity": 0.6359,
"profit_loss": 94200000.0,
"solidity": 0.5735
},
"industry_code": "932100",
"internal_id": null,
"local_organization_id": {
"country": "DK",
"id": "10404916"
},
"risk_assessment": "Low",
"risk_assessment_code": "LOW",
"score": 10,
"status": "Active",
"status_code": "ACTIVE"
},
{
"address": {
"city": "Billund",
"coname": null,
"country": "DK",
"municipality": "Billund",
"number": "1",
"postdistrict": "Billund",
"street": "Åstvej",
"zipcode": 7190
},
"changes": null,
"company_name": "LEGO A/S",
"company_type": "A/S",
"credit_max": 15000000,
"credit_policy": null,
"date_of_incorporation": "1975-12-19",
"employee_interval": "5-9",
"financial_key_figures": {
"currency": "DKK",
"equity": 22183000000.0,
"liquidity": 1.9325,
"profit_loss": 8306000000.0,
"solidity": 0.6348
},
"industry_code": "642020",
"internal_id": null,
"local_organization_id": {
"country": "DK",
"id": "54562519"
},
"risk_assessment": "Low",
"risk_assessment_code": "LOW",
"score": 10,
"status": "Active",
"status_code": "ACTIVE"
}
]
}
This end-point is meant to show a brief overview of the 3 most important changes in a monitoring list. This is the end-point used in "Most relevant changes" on the Risika Dashboard.
r = requests.get("https://api.risika.dk/v1.2/monitor/list/most_relevant/0",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
[
{
"changes": [
{
"new": {
"valid_from": "2012-04-26",
"valid_to": "2020-04-23",
"value": {
"entity_id": 4004093344,
"function": "BESTYRELSE",
"name": "Per Christiansen"
}
},
"sentence": "Board Member Stepdown",
"type": "management_stepdown",
"weight": 6000
}
],
"date": "2020-05-06",
"local_organization_id": {
"country": "DK",
"id": "10413494"
},
"name": "TV2/DANMARK A/S",
"weight": 6000
}
]
This end-point allows you to change the name of an existing monitoring list
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())
{
"status": "ok"
}
Use this end-point to get a complete list of the IDs and names of your monitoring lists. It also gives a brief overview of the risk distribution for each list. The risk can be used to sort or prioritize the lists.
r = requests.get("https://api.risika.dk/v1.2/monitor/list/show",
headers={"Authorization": access.token,
"Content-Type": "application/json"})
[
{
"list_id": 0,
"name": "Name of List 1",
"risk_assessment": {
"LOW": 27,
"HIGH": 1,
"NONE": 3,
"MEDIUM": 0
}
},
{
"list_id": 91,
"name": "Name of List 2",
"risk_assessment": {
"LOW": 5,
"HIGH": 0,
"NONE": 0,
"MEDIUM": 0
}
}
]
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
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())
{
"list_id": 1
}
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.
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())
{
"status": "ok"
}
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.
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())
{
"count": 17281,
"monitor_list": [
{
"address": {
"city": "København V",
"coname": null,
"country": "DK",
"municipality": "København",
"number": "3",
"postdistrict": "København V",
"street": "Vesterbrogade",
"zipcode": 1620
},
"changes": null,
"company_name": "TIVOLI A/S",
"company_type": "A/S",
"credit_max": 25000000,
"credit_policy": null,
"date_of_incorporation": "0001-01-01",
"employee_interval": "1000-999999",
"financial_key_figures": {
"currency": "DKK",
"equity": 920400000.0,
"liquidity": 0.6359,
"profit_loss": 94200000.0,
"solidity": 0.5735
},
"industry_code": "932100",
"internal_id": null,
"local_organization_id": {
"country": "DK",
"id": "10404916"
},
"risk_assessment": "Low",
"risk_assessment_code": "LOW",
"score": 10,
"status": "Active",
"status_code": "ACTIVE"
},
{
"address": {
"city": "Billund",
"coname": null,
"country": "DK",
"municipality": "Billund",
"number": "1",
"postdistrict": "Billund",
"street": "Åstvej",
"zipcode": 7190
},
"changes": null,
"company_name": "LEGO A/S",
"company_type": "A/S",
"credit_max": 15000000,
"credit_policy": null,
"date_of_incorporation": "1975-12-19",
"employee_interval": "5-9",
"financial_key_figures": {
"currency": "DKK",
"equity": 22183000000.0,
"liquidity": 1.9325,
"profit_loss": 8306000000.0,
"solidity": 0.6348
},
"industry_code": "642020",
"internal_id": null,
"local_organization_id": {
"country": "DK",
"id": "54562519"
},
"risk_assessment": "Low",
"risk_assessment_code": "LOW",
"score": 10,
"status": "Active",
"status_code": "ACTIVE"
}
]
}
We use local Company IDs (CVR in DK, Orgno in SE/NO, etc.) to identify companies in our databases and API, since that is the formal way of addressing a company. In some business cases, you also use the VAT number to identify a company, since that's also unique. We chose to only use Company IDs in the API to keep it streamlined and to avoid mixing the IDs in different end-points. Sometimes Company IDs are typed in by the user and there can be many ways to format these IDs. To make your integration simpler, we have this end-point to "search" for Company IDs and hopefully make it easier to spot typos and support different stylings of the same IDs.
The end-point takes a list of strings, where each string is a Company ID. The algorithms works like this:
Check if the first two letters is recognized as a country code:
Because the Company IDs are only unique in their own country, a lot of IDs are reused in other countries. Between Denmark, United Kingdom and Finland there are at least 1,203 identical IDs (you can test this with one of these IDs: 10046424, 10044162, 10039347, 10054117).
The result is always a list of matches to support the possiblity of multiple matches. To limit the countries we return to you, you have to set the key countries
with a list of the countries you support.
You can send up to 1000 Company IDs as once.
The end-point works with Danish, Swedish, Norweigian, Finnish and UK companies ('DK', 'SE', 'NO', 'FI', 'UK').
You can see some examples of how Company IDs can be formatted here:
Country | Company ID |
---|---|
DK | 37677892 |
DK | dk37677892 |
DK | 37 67 78 92 |
DK | DK 37 67 78 92 |
NO | 923609016 |
NO | NO-923609016 |
NO | NO923609016 |
NO | NO 923 609 016 MVA |
SE | 5561828459 |
SE | SE5561828459 |
SE | SE-5561828459 |
SE | SE-5561828459-01 |
FI | 0112038-9 |
FI | 01120389 |
FI | FI01120389 |
UK | 05979619 |
UK | UK-SC474114 |
r = requests.post(
"https://api.risika.dk/v1.2/validate/local_id",
json={
"countries": ["DK", "SE", "NO", "FI", "UK"],
"local_ids": [
"37 67 78 92",
"NO 923 609 016 MVA",
"SE-5561828459-01",
"0112038-9"
]},
headers={"Authorization": access.token, "Content-Type": "application/json"}
)
print(r.json())
{
"matches": {
"0112038-9": [
{
"country": "FI",
"id": "01120389",
"name": "Nokia Oyj"
}
],
"37 67 78 92": [
{
"country": "DK",
"id": "37677892",
"name": "RISIKA A/S"
}
],
"NO 923 609 016 MVA": [
{
"country": "NO",
"id": "923609016",
"name": "EQUINOR ASA"
}
],
"SE-5561828459-01": [
{
"country": "SE",
"hash": "532eb6e2eb4271ffc064783fe3956b8f",
"id": "5561828459",
"name": "IKEA Industry AB"
}
],
"31246695": [
{
"country": "DK",
"id": "31246695",
"name": "Sanggruppen"
},
{
"country": "FI",
"id": "31246695",
"name": "Suorsa Sourcing Oy"
}
],
}
}
The list end-points helps you validate requests and see the possible values for search end-points.
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
r = requests.get("https://api.risika.dk/v1.2/dk/list/employee_interval",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"employee_interval": [
"0", "1", "2-4", "5-9", "10-19", "20-49", "50-99", "100-199", "200-499", "500-999", "1000-999999"
]
}
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.
r = requests.get("https://api.risika.dk/v1.2/list/currencies",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"currencies": [
"DKK", "SEK", "NOK", "EUR", "GBP", "USD", "HKD", "SGD", "QAR", "AUD", "HRK", "CHF", "RUB", "CZK", "CAD", "PLN"
]
}
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.
r = requests.get("https://api.risika.dk/v1.2/dk/list/company_types",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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"
}
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.
r = requests.get("https://api.risika.dk/v1.2/dk/list/company_statuses",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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"
}
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
.
The example only shows a sample of the output, but it shows the recursive structure of the industry codes. The first object is a dictionary with the sections as keys and for each section, there is a tree-structure that follows the recursive pattern:
"A": {
"group": {
"010000": {
"group": {
...
},
"level": 2,
"title": "Plante- og husdyravl, jagt og serviceydelser i forbindelse hermed"
},
},
"level": 1,
"title": "Landbrug, jagt, skovbrug og fiskeri"
}
Every time the structure nests into group
, it makes the industry more specific. Sometimes, you will see structures with null
in the title
. That is because the industry code doesn't exist, but is necessary to make the tree-structure. We chose this way to show that we didn't miss a level, but it is simply not there. If you are going to visualize it, you may consider to squash the tree (removing the empty levels), but be aware that 960100
, 960200
, 960300
, 960400
, 960900
and possibly others, needs the empty level to work.
This end-point is available for: Denmark, Sweden and Norway.
Expand Endpoint Description to see description and definitions.
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 |
N | 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 |
X | Economic activity was not specified by tax authority |
r = requests.get("https://api.risika.dk/v1.2/dk/list/industries",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"A": {
"group": {
"010000": {
"group": {
"011000": {
"group": {
"011600": {
"group": {},
"level": 4,
"title": "Dyrkning af tekstilplanter"
}
},
"level": 3,
"title": "Dyrkning af etårige afgrøder"
}
},
"level": 2,
"title": "Plante- og husdyravl, jagt og serviceydelser i forbindelse hermed"
},
},
"level": 1,
"title": "Landbrug, jagt, skovbrug og fiskeri"
},
"X": {
"group": {
"990000": {
"group": {
"999000": {
"group": {
"999900": {
"group": {
"999990": {
"group": {
"999999": {
"group": {},
"level": 6,
"title": "Uoplyst"
}
},
"level": 5,
"title": null
}
},
"level": 4,
"title": null
}
},
"level": 3,
"title": null
}
},
"level": 2,
"title": null
}
},
"level": 1,
"title": "Uoplyst"
}
}
The response is a list of strings containing all municipalities for the given country.
This end-point is available for: Denmark, Sweden and Norway.
r = requests.get("https://api.risika.dk/v1.2/dk/list/municipalities",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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 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.
r = requests.get("https://api.risika.dk/v1.2/dk/list/regions",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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]
}
}
Complete list of valid zip codes. This is only meant for validation.
This end-point is available for: Denmark, Sweden and Norway.
r = requests.get("https://api.risika.dk/v1.2/dk/list/zipcodes",
headers={"Authorization": <access_token>,
"Content-Type": "application/json"})
print(r.json())
{
"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,
...
]
}
country
: The two letter country code (ISO 3166-1 Alpha-2). Currently, we support the following countries: dk
, se
, no
, uk
, fi
, de
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.
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.
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.
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.
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.
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.
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.
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 |
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 |
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 |
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
Danish: Typer af regnskaber
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.
Danish: Regnskabsklasse
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.
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 AUDITOR 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 |
The API doesn't offer translations for auditors at this time.
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.
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.
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