Introduction

To get started with the API, you need to use the base url together with an authorization token provided in the header.

Authorization
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.

JWT
We use a JSON Web Token for authorization. This enables us to send a payload inside the access token with additional information like expiration. That enables you to check if your token is still valid without doing an additional request.

You can learn more about it here.

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

Versions
There is currently only one supported version: v1_1

Base URL

https://api.risika.dk/{version}

Headers

Authorization: <access_token or refresh_token>
Content-Type: application/json

Generate a refresh token

This endpoint generates an access token from your refresh token. This token allows you to make unlimited requests for 10 minutes, after this timeframe you need to generate a new one. You are allowed to have multiple active access tokens at the same time.

This system is intented to replace a rate limit.

GET
/access/refresh_token

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/access/refresh_token/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <refresh_token>'

Example response

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

Company

These are all the endpoints that relates to the company itself. Here you will find basic information about the company: address, phone number, number of employees, etc. You will also find information about who is related to the company: the owners, board of directors, etc.

Basics

GET
/company/basics/{cvr}

Relations

GET
/company/relations/{cvr}

Company basics

This endpoint is used to get all the basic information about a given company. It will contain information such as address, phone number, number of employees, company name, etc.

GET
/company/basics/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/company/basics/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "local_organization_id": {
    "country": "DK",
    "id": 37677892
  },
  "address": {
    "city": "København K",
    "coname": null,
    "number": "26, st.",
    "street": "Kronprinsessegade",
    "country": "DK",
    "zipcode": 1306,
    "postdistrict": "København K"
  },
  "status": "normal",
  "advertisement_protection": true,
  "financial_reports": true,
  "main_industry_code": {
    "code": 829100,
    "description": "Inkassovirksomhed og kreditoplysning"
  },
  "secondary_industry_codes": [
    {
      "section": "J",
      "priority": 1,
      "group_name": "Databehandling, webhosting og lignende serviceydelser; webportaler",
      "industry_code": 631100,
      "industry_description": "Databehandling, webhosting og lignende serviceydelser"
    },
    {
      "section": "J",
      "priority": 2,
      "group_name": "Computerprogrammering, konsulentbistand vedrørende informationsteknologi og lignende aktiviteter",
      "industry_code": 620200,
      "industry_description": "Konsulentbistand vedrørende informationsteknologi"
    }
  ],
  "number_of_employees": {
    "interval": "5-9",
    "source": null
  },
  "last_report_date": null,
  "date_of_incorporation": "2016-04-30",
  "company_type": {
    "short": "A/S",
    "long": "Aktieselskab"
  },
  "score": 3,
  "registered_capital": {
    "value": 501310,
    "currency": null
  },
  "company_name": "RISIKA A/S",
  "holding_company": false,
  "powers_to_bind": "Virksomheden tegnes af et medlem af direktionen.",
  "email": {
    "email": "contact@risika.dk",
    "hidden": false
  },
  "phone": {
    "phone_number": "42905757",
    "hidden": false
  }
}

Company relations

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

Example request

curl --request GET \
  --url 'https://api.risika.dk/v1_1/company/relations/37677892' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "relations": [
    {
      "personal_id": 4000693282,
      "name": "Peter Christian Schmiegelow",
      "type": "PERSON",
      "functions": [
        {
          "function": "BESTYRELSE",
          "valid_to": null,
          "valid_from": "2019-03-18"
        }
      ],
      "shares": []
    },
    {
      "personal_id": 4006873173,
      "name": "Timm Jeppesen",
      "type": "PERSON",
      "functions": [
        {
          "function": "ADMINISTRERENDE DIREKTØR",
          "valid_to": null,
          "valid_from": "2018-04-01"
        },
        {
          "function": "REEL EJER",
          "valid_to": null,
          "valid_from": "2017-05-18"
        },
        {
          "function": "DIREKTION",
          "valid_to": "2018-03-31",
          "valid_from": "2017-05-18"
        },
        {
          "function": "shareholder",
          "valid_from": "2019-02-18",
          "valid_to": null
        },
        {
          "function": "shareholder",
          "valid_from": "2017-05-18",
          "valid_to": "2018-03-05"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-03-06",
          "valid_to": "2018-10-28"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-10-29",
          "valid_to": "2019-02-17"
        }
      ],
      "shares": [
        {
          "shares": 0.3405,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2019-02-18"
        },
        {
          "shares": 0.5,
          "legal_owner": true,
          "valid_to": "2018-03-05",
          "valid_from": "2017-05-18"
        },
        {
          "shares": 0.45,
          "legal_owner": true,
          "valid_to": "2018-10-28",
          "valid_from": "2018-03-06"
        },
        {
          "shares": 0.414,
          "legal_owner": true,
          "valid_to": "2019-02-17",
          "valid_from": "2018-10-29"
        }
      ]
    },
    {
      "personal_id": 4006184467,
      "name": "Simon Turner",
      "type": "ANDEN_DELTAGER",
      "functions": [
        {
          "function": "unknown",
          "valid_to": null,
          "valid_from": "1903-01-01"
        },
        {
          "function": "shareholder",
          "valid_from": "2019-02-18",
          "valid_to": null
        }
      ],
      "shares": [
        {
          "shares": 0.1,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2019-02-18"
        }
      ]
    },
    {
      "personal_id": 4005959089,
      "name": "N. Rasmussen Holding ApS",
      "type": "VIRKSOMHED",
      "functions": [
        {
          "function": "STIFTERE",
          "valid_to": null,
          "valid_from": "2016-04-30"
        },
        {
          "function": "shareholder",
          "valid_from": "2019-02-18",
          "valid_to": null
        },
        {
          "function": "shareholder",
          "valid_from": "2017-05-18",
          "valid_to": "2018-03-05"
        },
        {
          "function": "shareholder",
          "valid_from": "2016-07-01",
          "valid_to": "2017-05-17"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-03-06",
          "valid_to": "2019-02-17"
        }
      ],
      "shares": [
        {
          "shares": 0.2,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2019-02-18"
        },
        {
          "shares": 0.5,
          "legal_owner": true,
          "valid_to": "2018-03-05",
          "valid_from": "2017-05-18"
        },
        {
          "shares": 1,
          "legal_owner": true,
          "valid_to": "2017-05-17",
          "valid_from": "2016-07-01"
        },
        {
          "shares": 0.25,
          "legal_owner": true,
          "valid_to": "2019-02-17",
          "valid_from": "2018-03-06"
        }
      ],
      "local_organization_id": {
        "country": "DK",
        "id": "36701927"
      }
    },
    {
      "personal_id": 4007487941,
      "name": "Sort Hest Limited",
      "type": "ANDEN_DELTAGER",
      "functions": [
        {
          "function": "unknown",
          "valid_to": null,
          "valid_from": "1903-01-01"
        },
        {
          "function": "shareholder",
          "valid_from": "2019-02-18",
          "valid_to": null
        }
      ],
      "shares": [
        {
          "shares": 0.1,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2019-02-18"
        }
      ]
    },
    {
      "personal_id": 4007482058,
      "name": "Perceval ApS",
      "type": "VIRKSOMHED",
      "functions": [
        {
          "function": "unknown",
          "valid_to": null,
          "valid_from": "1903-01-01"
        },
        {
          "function": "shareholder",
          "valid_from": "2019-02-18",
          "valid_to": null
        },
        {
          "function": "shareholder",
          "valid_from": "2018-10-29",
          "valid_to": "2019-02-17"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-03-06",
          "valid_to": "2018-10-28"
        }
      ],
      "shares": [
        {
          "shares": 0.1,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2019-02-18"
        },
        {
          "shares": 0.2,
          "legal_owner": true,
          "valid_to": "2019-02-17",
          "valid_from": "2018-10-29"
        },
        {
          "shares": 0.25,
          "legal_owner": true,
          "valid_to": "2018-10-28",
          "valid_from": "2018-03-06"
        }
      ],
      "local_organization_id": {
        "country": "DK",
        "id": "39258072"
      }
    },
    {
      "personal_id": 4000397851,
      "name": "Martin Lavesen",
      "type": "PERSON",
      "functions": [
        {
          "function": "BESTYRELSE",
          "valid_to": null,
          "valid_from": "2019-01-14"
        }
      ],
      "shares": []
    },
    {
      "personal_id": 4000625364,
      "name": "Hanne Bach-Nielsen",
      "type": "PERSON",
      "functions": [
        {
          "function": "REEL EJER",
          "valid_to": "2018-04-01",
          "valid_from": "2016-12-31"
        },
        {
          "function": "DIREKTION",
          "valid_to": "2017-05-18",
          "valid_from": "2016-12-31"
        },
        {
          "function": "shareholder",
          "valid_from": "2016-12-31",
          "valid_to": "2018-03-05"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-03-06",
          "valid_to": "2018-04-01"
        }
      ],
      "shares": [
        {
          "shares": 0.5,
          "legal_owner": true,
          "valid_to": "2018-03-05",
          "valid_from": "2016-12-31"
        },
        {
          "shares": 0.3,
          "legal_owner": true,
          "valid_to": "2018-04-01",
          "valid_from": "2018-03-06"
        }
      ]
    },
    {
      "personal_id": 4006873174,
      "name": "TJ Formueinvest ApS",
      "type": "VIRKSOMHED",
      "functions": [
        {
          "function": "unknown",
          "valid_to": null,
          "valid_from": "1903-01-01"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-03-06",
          "valid_to": null
        },
        {
          "function": "shareholder",
          "valid_from": "2017-05-18",
          "valid_to": "2018-03-05"
        }
      ],
      "shares": [
        {
          "shares": 0.3333,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2018-03-06"
        },
        {
          "shares": 0.5,
          "legal_owner": true,
          "valid_to": "2018-03-05",
          "valid_from": "2017-05-18"
        }
      ],
      "local_organization_id": {
        "country": "DK",
        "id": "38599070"
      }
    },
    {
      "personal_id": 4004175969,
      "name": "Mads Guttorm Jakobsen",
      "type": "PERSON",
      "functions": [
        {
          "function": "FORMAND",
          "valid_to": null,
          "valid_from": "2019-01-14"
        }
      ],
      "shares": []
    },
    {
      "personal_id": 3369870,
      "name": "inforevision statsautoriseret revisionsaktieselskab",
      "type": "VIRKSOMHED",
      "functions": [
        {
          "function": "REVISION",
          "valid_to": null,
          "valid_from": "2019-02-13"
        }
      ],
      "shares": [],
      "local_organization_id": {
        "country": "DK",
        "id": "19263096"
      }
    },
    {
      "personal_id": 4000679462,
      "name": "Poul Erik Mølgaard Rasmussen",
      "type": "PERSON",
      "functions": [
        {
          "function": "DIREKTION",
          "valid_to": "2016-12-31",
          "valid_from": "2016-07-01"
        }
      ],
      "shares": []
    },
    {
      "personal_id": 4000569667,
      "name": "Niels Gade-Jacobsen",
      "type": "PERSON",
      "functions": [
        {
          "function": "BESTYRELSE",
          "valid_to": null,
          "valid_from": "2019-01-14"
        }
      ],
      "shares": []
    },
    {
      "personal_id": 4000652101,
      "name": "Nicolai Rasmussen",
      "type": "PERSON",
      "functions": [
        {
          "function": "REEL EJER",
          "valid_to": null,
          "valid_from": "2018-04-01"
        },
        {
          "function": "DIREKTION",
          "valid_to": null,
          "valid_from": "2018-04-01"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-04-01",
          "valid_to": "2018-10-28"
        },
        {
          "function": "shareholder",
          "valid_from": "2018-10-29",
          "valid_to": null
        }
      ],
      "shares": [
        {
          "shares": 0.3,
          "legal_owner": true,
          "valid_to": "2018-10-28",
          "valid_from": "2018-04-01"
        },
        {
          "shares": 0.27,
          "legal_owner": true,
          "valid_to": null,
          "valid_from": "2018-10-29"
        }
      ]
    }
  ]
}

Person

We provide an endpoint for looking up the companies that a person is associated with (ownership, board of directors, etc.).

Relations

GET
/person/relations/{personal_id}

Person relations

When you get the people associated with a company, you also receive a personal_id. You can use this ID to get all the relations associated with this person.

GET
/person/relations/{personal_id}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/person/relations/4006873173 \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "name": "Timm Jeppesen",
  "type": "person",
  "relations": [
    {
      "local_organization_id": {
        "country": "DK",
        "id": "37677892"
      },
      "company_active": true,
      "company_name": "RISIKA A/S",
      "score": 3,
      "functions": [
        {
          "function": "ADMINISTRERENDE DIREKTØR",
          "valid_to": null,
          "valid_from": "2018-04-01"
        },
        {
          "function": "REEL EJER",
          "valid_to": null,
          "valid_from": "2017-05-18"
        },
        {
          "function": "DIREKTION",
          "valid_to": "2018-03-31",
          "valid_from": "2017-05-18"
        }
      ],
      "shares": []
    },
    {
      "local_organization_id": {
        "country": "DK",
        "id": "38599070"
      },
      "company_active": true,
      "company_name": "TJ Formueinvest ApS",
      "score": 1,
      "functions": [
        {
          "function": "STIFTERE",
          "valid_to": null,
          "valid_from": "2017-04-26"
        },
        {
          "function": "REEL EJER",
          "valid_to": null,
          "valid_from": "2017-04-26"
        },
        {
          "function": "DIREKTION",
          "valid_to": null,
          "valid_from": "2017-04-26"
        }
      ],
      "shares": []
    },
    {
      "local_organization_id": {
        "country": "DK",
        "id": "39228327"
      },
      "company_active": true,
      "company_name": "MoneyFlow Group ApS",
      "score": null,
      "functions": [
        {
          "function": "BESTYRELSE",
          "valid_to": null,
          "valid_from": "2018-02-13"
        }
      ],
      "shares": []
    },
    {
      "local_organization_id": {
        "country": "DK",
        "id": "39276208"
      },
      "company_active": true,
      "company_name": "TNT Holding DK ApS",
      "score": 1,
      "functions": [
        {
          "function": "REEL EJER",
          "valid_to": "2018-02-07",
          "valid_from": "2018-01-23"
        },
        {
          "function": "DIREKTION",
          "valid_to": null,
          "valid_from": "2018-01-23"
        }
      ],
      "shares": []
    }
  ]
}

Financial

These are all the endpoints for financial information. Here you will have access to the numbers from their financial report, key figures, information about the auditor and a link to their official financial report. We provide information from the three latest financial reports.

NOTE: the result from these endpoints cannot be expected to be sorted, you will need to handle this yourself. There is a date on all objects in the response.

Numbers

GET
/financial/numbers/{cvr}

Ratios

GET
/financial/ratios/{cvr}

Performance

GET
/financial/performance/{cvr}

Stats

GET
/financial/stats/{cvr}

Financial numbers

This endpoint provides you with all the relevant financial numbers for the most recent financial report for a given company.

GET
/financial/numbers/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/financial/numbers/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

[
  {
    "period": {
      "start": "2016-07-01",
      "end": "2017-12-31"
    },
    "revenue": null,
    "other_income": 0,
    "costs": 0,
    "change_in_inventories": 0,
    "gross_result": -114631,
    "operating_costs": 0,
    "other_operating_income": 0,
    "staff_expenses": 0,
    "ebitda": -114631,
    "depreciation": 56216,
    "ebit": -170847,
    "interest_income": 0,
    "interest_expenses": 0,
    "net_financial_income": 0,
    "tax_expenses": -37216,
    "profit_loss": -133631,
    "intangible_assets": 199881,
    "property_plant_and_equipment": 0,
    "non_current_investments_and_receivables": 2500,
    "deferred_tax_assets": 0,
    "other_financial_assets": 0,
    "non_current_assets": 202381,
    "inventories": 0,
    "short_term_receivables": 110505,
    "current_financial_assets": 0,
    "short_term_investments": 0,
    "cash": 25461,
    "current_assets": 135966,
    "assets": 338347,
    "contributed_capital": 50000,
    "reserves": 375907,
    "dividend": 0,
    "retained_earnings": -289538,
    "minority_interests": 0,
    "equity": 136369,
    "provisions": 43974,
    "short_term_debt": 158004,
    "long_term_debt": 0,
    "debt": 158004,
    "liabilities_and_equity": 338347,
    "equity_loan": 0
  }
]

Financial ratios

This endpoint provides some ratios that we have calculated from their financial report. These include ratios like interest coverage, return on equity (ROE), return on investment (ROI), etc.

GET
/financial/ratios/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/financial/ratios/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

[
  {
    "period": {
      "start": "2016-07-01",
      "end": "2017-12-31"
    },
    "gross_margin": null,
    "operating_margin": null,
    "profit_margin": null,
    "return_on_equity": -0.98,
    "return_on_assets": -0.39,
    "return_on_net_assets": -0.74,
    "basic_earning_power": -0.5,
    "current_ratio": 0.86,
    "current_assets_to_equity": 1,
    "cash_ratio": 0.16,
    "capacity_ratio": -2.04,
    "asset_turnover": null,
    "inventory_conversion_ratio": null,
    "debt_ratio": 0.47,
    "debt_to_equity_ratio": 1.16,
    "income_to_debt_ratio": -0.85,
    "ebitda_to_debt_ratio": -0.73,
    "interest_coverage": null,
    "solidity_ratio": 0.4,
    "liabilities_to_equity_ratio": 1.48,
    "one_year_change_in_equity": 0.51
  }
]

Financial performance

This endpoint calculates the performance compared to the rest of the market. That helps to put the numbers into perspective.

GET
/financial/performance/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/financial/performance/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "gross_margin": {
    "performance": null,
    "explanation": null
  },
  "operating_margin": {
    "performance": null,
    "explanation": null
  },
  "profit_margin": {
    "performance": null,
    "explanation": null
  },
  "return_on_equity": {
    "performance": 10,
    "explanation": "Return on equity is the ability to generate healthy returns. The company has a very weak return on equity, because it is within the 10% lowest rated companies in the same industry."
  },
  "return_on_assets": {
    "performance": 20,
    "explanation": "The return on assets is the ability to generate returns for investors. The company has a very weak return on assets, because it is within the 20% lowest rated companies in the same industry."
  },
  "return_on_net_assets": {
    "performance": 10,
    "explanation": null
  },
  "basic_earning_power": {
    "performance": 10,
    "explanation": null
  },
  "current_ratio": {
    "performance": 40,
    "explanation": "Liquidity is the ability to pay bills and deduct debts. The company has a weak liquidity ratio, because it is within the 40% lowest rated companies in the same industry."
  },
  "current_assets_to_equity": {
    "performance": 30,
    "explanation": null
  },
  "cash_ratio": {
    "performance": 50,
    "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 is the ability to resist major internal or external crises. The company has a very strong gearing, because it is within the 10% highest rated companies in the same industry."
  },
  "income_to_debt_ratio": {
    "performance": 10,
    "explanation": null
  },
  "ebitda_to_debt_ratio": {
    "performance": 10,
    "explanation": null
  },
  "interest_coverage": {
    "performance": null,
    "explanation": null
  },
  "solidity_ratio": {
    "performance": 60,
    "explanation": "Solidity is the ability to carry greater losses. The company has a average solidity, compared to other companies in the same industry."
  },
  "liabilities_to_equity_ratio": {
    "performance": 100,
    "explanation": null
  },
  "one_year_change_in_equity": {
    "performance": 10,
    "explanation": null
  }
}

Financial stats

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

GET
/financial/stats/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/financial/stats/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

[
  {
    "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": null,
      "type_of_assistance": "NO AUDITOR ASSISTANCE",
      "company_id": null,
      "company_name": null
    },
    "currency": "DKK",
    "ifrs": false
  }
]

Highlights

This endpoint provides some highlights that we have selected by analyzing the company, the data in the financial report and the people associated with the company. A highlight can be classified as either positive, neutral or negative. We provide a message for each highlight to explain what it means for the given situation. Furthermore, we also provide a weight to indicate how important each highlight is.

GET
/highlights/{cvr}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/highlights/37677892/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "highlights": {
    "age": {
      "title": "Young company",
      "message": "The company is only 2 years old. Our analysis shows that the risk is higher on companies that are less than 5 years old. The credit score has been affected negatively.",
      "description": "Warning of higher risk if the company is started within 5 years",
      "classification": "negative",
      "weight": 1900
    },
    "address": {
      "title": "Change of address",
      "message": "This company has changed address 3 or more times the last 3 years.",
      "description": "The company have changed address within the last couple of years.",
      "classification": "neutral",
      "weight": 1850
    },
    "change_in_management": {
      "title": "Changes in management",
      "message": "This company had 3 or more changes in the management and/or the board within the last year.",
      "description": "There have been many changes in the management and/or the board within the last year.",
      "classification": "neutral",
      "weight": 1875
    },
    "change_in_employees": {
      "title": "Change in number of employees",
      "message": "Number of employees has increased the last 3 years.",
      "description": "Number of employees has consistently changed over the last 3 years.",
      "classification": "positive",
      "weight": 2500
    },
    "one_financial_statement": {
      "title": "Only one financial statement",
      "message": "This company only has one financial statement which could mean some uncertainty in the calculation of the credit score.",
      "description": "Only one financial statement - can give uncertainty in the calculation.",
      "classification": "neutral",
      "weight": 3150
    },
    "intangible_assets": {
      "title": "Large proportion of intangible assets",
      "message": "Intangible assets represents more than 50% of the total equity which may mean a higher financial risk.",
      "description": "Warning if the value of intellectual property represents over 50% of equity in the company. This is a potentially risk factor.",
      "classification": "negative",
      "weight": 1950
    },
    "type_of_auditor_assistance": {
      "title": "Level of audit",
      "message": "No involvement of an auditor: This could impact the accuracy and completeness of the financial figures and ratios. The credit score has been affected negatively.",
      "description": "Warning about the level of involvement from an auditor in the creation of the financial statement",
      "classification": "negative",
      "weight": 1200
    },
    "connected_bankruptcies": {
      "title": "Analysis of bankruptcies",
      "message": "We found 1 bankruptcy among the people related to this company. It did not affect the overall credit score.",
      "description": "Amount of historical bankruptcies with the people associated with the company (executives, board of directors etc.)",
      "classification": "neutral",
      "weight": 3200
    }
  }
}

Rating

These endpoints are essentially a way to sum up the entire company. We provide a number to represent how risky the company is (Risika score), and a credit recomendation.

Grades

GET
/rating/grades/{cvr}

Credit

GET
/rating/credit/{cvr}

Grades (Risika score)

This endpoint provides a grade (Risika score) for a given period.

We calculate the grade for each financial report available. This way, you will both have their current gade but also the historic grade, and will be able to see the development of their grade over time.

Note: the list of grades is not sorted, but we do provide a date.

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/rating/grades/20165715/ \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

[
  {
    "date": "2016-12-31",
    "grade": 10
  },
  {
    "date": "2014-12-31",
    "grade": 10
  },
  {
    "date": "2017-12-31",
    "grade": 10
  },
  {
    "date": "2015-12-31",
    "grade": 10
  }
]

Credit

This endpoint provides a credit recomendation for the company you requested. We provide you a credit max, credit days and an upfront payment recomendation.

You can pass a credit parameter, but it is not required.

The credit max does not depend on the credit you provide. We do, however, use the specified credit to calculate the max amount of days you should provide the specified amount of credit.

We also provide an upfront payment amount. If the credit you provided is greater than the credit max, we will recommend that you request the remaining payment upfront.

GET
/rating/credit/{cvr}?credit={amount}

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/rating/credit/37677892?credit=10000 \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "upfront": null,
  "credit_days": 7,
  "credit_max": 4000
}

We provide two endpoints for searching – the first searches for companies, the second for people.

Company

POST
/search/company

Person (NOT AVAILABLE YET)

GET
/search/person?query={person_name}&mode={mode}

Search company

This endpoint enables you to search for companies by name instead of providing a CVR number. We return very basic information about the company as a response: CVR number and company name.

You can search with two different modes: minimal or full.

Minimal
Limited to 25 search results. The results are also much simpler, containing only the name, CVR number and country code.

Full
There is no limit in the traditional sense, you use two additional parameters – to and from – which works as a way to paginate through the results. They default to a range of 0 – 100 if the to and from parameters aren't specified.

The results from the full mode also contains the Risika Score, company type, employee count and whether it is active.

POST
/search/company

Example request (minimal)

curl --request POST \
  --url https://api.risika.dk/v1_1/search/company \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>' \
  --data '{ "mode": "minimal", "filters": { "company_name": "risika" } }'

Example response (minimal)

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

Example request (full)

curl --request POST \
  --url https://api.risika.dk/v1_1/search/company \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>' \
  --data '{ "mode": "full", "from": 0, "to": 100, "filters": { "company_name": "risika", "company_type": ["ApS"], "score": [1, 2, 3, 4, 5], "active": true } }'

Example response (full)

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

Lists

We provide a list for municipalities and regions to make it easier to filter the data when searching. The search offers a lot of flexiblity for filtering by postal code, but what if you want a more broad area? No problem, use our lists to select the relevant postal codes.

Municipalities

GET
/list/municipalities

Regions

GET
/list/regions

List municipalities

This list will display all the municipalties in Denmark. Each municipalty contains an array of all the postal codes within the area.

GET
/list/municipalities

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/list/municipalities \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

{
  "municipalities": {
    "Læsø": [9940],
    "Vordingborg": [4720, 4733, 4735, 4750, 4760, 4771, 4772, 4773, 4780, 4791, 4792, 4793],
    "Høj-Taastrup": [2630, 2640, 4000],
    "Herlev": [2730, 2740, 2880],
    "Guldborgsund": [4800, 4840, 4850, 4862, 4863, 4871, 4872, 4873, 4874, 4880, 4891, 4892, 4894, 4930, 4990],
    "Vesthimmerlands": [9240, 9541, 9600, 9610, 9620, 9631, 9640, 9670, 9681],
    "Svendborg": [5700, 5762, 5771, 5772, 5854, 5874, 5881, 5882, 5883, 5884, 5892]
  }
}

List regions

This list will display all the regions in Denmark. Each region contains an array of all the postal codes within the area.

GET
/list/regions

Example request

curl --request GET \
  --url https://api.risika.dk/v1_1/list/regions \
  --header 'Content-Type: application/json' \
  --header 'Authorization: <access_token>'

Example response

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

Errors you might encounter

Out in the wild, there are different kinds of errors you might encounter when you utilize the API. This section aims to provide you with information to help prevent them, and what might be causing the errors to help you fix them faster and make debugging easier.

Authorization

The authorization can fail in different ways, and each situation is different. We provide you with the necessary information to help solve the issue. The errors you might encounter are the following:

Missing authorization header
This happens when you haven't provided the Authorization header or when no authorization token has been provided.

Invalid authorization header: must start with JWT
This happens when the token you provided didn't start with 'jwt', even if the remaining token is correct.

Signature verification failed
This happens when the authorization token you provided was invalid.

Signature has expired
This will most likely happen when the access token you provided was generated more than 10 minutes ago, and you will need to request a new one.

When the authorization header has not been specified

{ "error": "Missing Authorization Header" }

When the token provided didn't begin with 'jwt'

{ "error": "Invalid Authorization Header: Must start with JWT" }

When the token provided was invalid

{ "error": "Signature verification failed" }

When the token has expired

{ "error": "Signature has expired" }

Endpoint

Unknown resource
This happens if the endpoint you provided doesn't exist.

When the endpoint doesn't exist

{ "error": "Unknown resource" }

CVR-number

Invalid CVR-number
The format of the CVR-number is not correct e.g. if didn't contain exactly 8 digits, it contained letters or other illegal characters.

No company with the CVR-number
We provide this error when the format was correct, but we didn't find a company associated with the CVR-number you provided.

When the number you provided isn't a CVR-number

{ "error": "Invalid CVR-number" }

When the CVR-number is not associated with a company

{ "error": "No company with the CVR-number 37677893" }

Credit

Credit must be greater than 0
We cannot do any calculations based on a credit of '0'. If you don't know the credit amount, leave out the credit parameter alltogether, and we'll provide you with a standard calculatation.

Value not recognized as a number
We weren't able to parse the amount of credit you specified. Make sure to leave out thousand separators and decimals.

The credit was zero

{ "error": "Credit must be greater than 0" }

The credit provided couldn't be parsed as a number

{ "error": "Value not recognized as a number" }
Show examples in:
Risika API Documentation