Monitoring (overvågning)
Lasso monitors the CVR registry and fires events for the more than 2.000 daily changes registered. You can receive notifications by e-mail and webhooks every time such an event is fired. This section will describe how to set up a webhook that will receive events relevant to you and your business' needs.
Have your external system updated when changes occur
You can also use one of our many integrations to have your data updated as soon as events occur. No code required.
Examples of events include
- Company address changes
- Submission of annual reports
- Ownership changes
- Employee count changes
- Mentions in news outlets
- Many, many more..
Creating, testing and registering your webhook
You will need to provide an endpoint that functions as a webhook, and Lasso will then send notifications to this webhooks everytime a relevant event is fired.
Create your webhook
A webhook is an endpoint that receives data when something happens. In this case, the webhook is created and hosted by you, and Lasso will send it data whenever an event is fired. Your webhook must satisfy the following conditions:
- Be publically available over the internet, e.g. on https://mywebsite.com/webhook
- Accept a HTTP POST request with a body as described in the webhook payload section.
- Optionally, the webhook can be require authentication.
Once your webhook is set up, you're ready to register it in a Lasso monitor.
Expected response
Your webhook must respond with a statuscode in the 200-299 range to be considered succesful. If it does not, we will retry several times. Read more here.
Test your webhook
We provide an endpoint you can call to test the webhook that you set up in the previous section. When calling this endpoint, Lasso will send a test notification to your webhook and report back whether it was successful or not.
To test your webhook, do the following: Send a POST
request to the below endpoint where you include your webhook URL, your API Key and the Lasso Id for the company you want to send a test notification for. If Lasso Id not provided, data for Lasso X will be sent.
POST https://api.lassox.com/apps/monitoring/testwebhook?url={YOUR_WEBHOOK_URL}&lassoId=CVR-1-{CVR_NUMBER}&accessKey={API-KEY}
Lasso will then send an example payload to your webhook.
If you receive a result code 204
from Lasso, your webhook successfully handled the notification sent by Lasso. If your webhook fails to receive the notification, an error message including error details will be returned to you.
Once your webhook is tested to be working, you're ready to register it in Lasso to begin receiving data!
Register your webhook in a monitor
In order to listen for events you first have to set up your monitor. Monitors are created and set up in the Overvågning module in Lasso. Contact Lasso if you do not yet have access to the Overvågning module.
Once in Overvågning, create a monitor that monitors your desired target group, or choose to monitor everything. You'll receive webhooks when something happens to companies you're monitoring.
When editing the monitor, look for the Webhook section to register your webhook:
Fill out the relevant fields:
- Hændelser: Select the event types you want your webhook to receive. See event types.
- Sikkerhed: If your webhook has authentication, set it up here.
- Webhook URL: Enter the webhook URL that you created in step 1
When the webhook is set up, save the monitor. If your monitor is activated you will start receiving webhooks right away. If you wish to test your webhook before enabling it, make sure the monitor is disabled.
The webhook payload
The data sent by the CVR event webhook will tell you the who, the when and the what about the CVR update. Whenever possible, we also provide the data prior to the event, meaning that you can make comparisons that might suit your business needs. If you need to know if the employee count change caused a rise or decline in employees, this can easily be answered through the data provided by the webhook.
Below is an example of the webhook payload that is sent when a company changes status and a person leaves management.
{
"lassoId":"CVR-1-34580821",
"timestamp" : "2018-09-15T09:50:30.890Z",
"updates": {
"status": {
"updated": true,
"before": "NORMAL",
"after": "UNDER KONKURS"
},
"name": {
"updated": false,
"before": null,
"after": null,
},
"management": {
"updated": true,
"added": [],
"removed": [
{
"name": "Jens Jensen",
"lassoId": "CVR-3-8172635419",
"type": "Person"
}
]
}
... other events exluded for brevity ...
}
}
- lassoId is the company related to event. Read about Lasso Ids.
- timestamp is the time that the event was registrered in CVR.
- updates is an object containing all the potential changes made. Please note that all update types are sent, but it's the updated field in each update that tells you if a particular type of change was made. Data will therefore not be available if this is false. For the sake of brevity, we've left out most event types above. See below for a complete list.
Types of events
There are a number of different event types, which we will list below. For data examples, please refer to the next section, as the data format will change depending on the event type.
Event name | Description | Data format (see next section for examples) |
---|---|---|
name | The name of the company has changed | String change |
altNames | One or more alternate names (binavne) has changed | List of String changes |
address | The address of the company has changed | Address change |
industry | The industry of the company has changed | Industry change |
altIndustries | The alternate industries (bibrancher) has changed | List of industry changes |
purpose | The purpose of the company has changed | String change |
powerToBind | The power to bind (tegningsregler) has changed | String change |
bylawsChangedDate | The date for last change of bylaws (vedtægter) has changed | Date change |
capital | The company capital (selskabskapital) has changed | Capital change |
form | The company form (selskabsform) has changed | Company form change |
The company e-mail has changed | String change | |
fax | The company fax number has changed | String change |
phoneNumber | The company phone number has changed | String change |
website | The company website has changed | String change |
newReport | A new yearly report (årsregnskab) was published IMPORTANT: SEE NOTE 1 | Report |
newCompany | A new company was created | Entity reference |
ownership | A company had ownership changes | Lists of ownership changes |
trueOwnership | A company had changes to its true owners (reelle ejere) | Lists of ownership changes |
accountant | A company's accountant was changed | Relation changes |
board | A company's board (bestyrelse) changed | Relation changes |
management | A company's management (direktion) changed | Relation changes |
status | A company's status changed | String change |
lifetimeStarted | A company's lifetime started | Lifetime change |
lifetimeEnded | A company's lifetime ended | Lifetime change |
stakeholders | A company's stakeholders changed | Relation changes |
merger | A company has merged with another | Merger |
pUnitUpdated | A company's production units changed | Entity reference |
pUnitAdded | A production unit was added | Entity reference |
pUnitRemoved | A production unit was removed | Entity reference |
subsidiaryFounded | A company's stakeholders changed | Ownership |
commercialProtection | A company's commercial protection status (Reklamebeskyttelse) | Bool change |
monthlyEmployeeCount | A company's monthly employee count falls or rises (exact numbers). | Monthly Employee Count change |
quarterlyEmployees | A company's quarterly employee count falls or rises (interval). | Quarterly Employee Count change |
yearlyEmployees | A company's yearly employee count falls or rises (interval). | Yearly Employee Count change |
newArticle | A new newsarticle from some source | New Article |
trueOwnership | Self-registered true ownership (Reelt ejerskab) changed | List of ownership changes |
trueVoteRights | Self-registered true voterights (Réelle stemmeandele) changed | List of voterights changes |
addedToMonitor | The company was added to a monitor | Monitor change |
removedFromMonitor | The company was removed from a monitor | Monitor change |
NOTE 1: Currently, this property contains both a Report
and a Data
property, each containing an old and a new version of the key figure data, respectively. The Report
property is deprecated, but remains to ensure backwards comptability. It will be removed in the future. Please use Data
.
Event data formats
For each type of event, the format of the included data will change. See the below examples for the possible event data formats.
String change
{
"updated": true,
"before": 'Text before the change',
"after": 'Text after the change'
}
Date change
{
"updated": true,
"before": 'Date before the change',
"after": 'Date after the change'
}
List of String changes
{
"updated": true,
"added": [
"Alternate Name ApS",
"Another Name ApS"
],
"removed": [
"Old Name ApS"
]
}
Address change
{
"updated": true,
"before": {
"countryCode": "DK",
"freeText": null,
"roadCode": 7632,
"municipality": {
"period": {
"from": "2007-01-01T00:00:00",
"to": null,
"original": null,
"isNow": true
},
"name": "ODENSE",
"code": 461,
"original": null,
"lastUpdated": "2006-11-12T23:00:00",
"relatedLassoId": null,
"relatedUpdates": []
},
"houseNumberFrom": 14,
"houseNumberTo": null,
"houseLetterFrom": null,
"houseLetterTo": null,
"floor": null,
"sideDoor": null,
"coName": null,
"postalBox": null,
"streetName": "Skt. Hans Gade",
"cityName": null,
"postalCode": 5000,
"postalDistrict": "Odense C",
"period": {
"from": "2015-01-14T00:00:00",
"to": "2018-11-14T00:00:00",
"original": null,
"isNow": false
},
"original": null,
"lastUpdated": "2018-11-15T10:33:23",
"relatedLassoId": null,
"relatedUpdates": []
},
"after": { same format as the "before" field }
}
Lifetime change
{
"updated": true,
"date": "Date for the change",
}
Entity reference
{
"updated": true,
"entity": {
"lassoId": "CVR-1-40024212", // could also be a place or place or person
"name": "Wohn Systems ApS",
"type": "Company" // could also be a place or place or person
},
}
Industry change
{
"updated": true,
"before": {
"period": {
"from": "2018-10-01T00:00:00",
"to": "2018-11-14T00:00:00",
"isNow": false
},
"industryCode": "107120",
"industryText": "Fremstilling af friske bageriprodukter",
"lastUpdated": "2018-11-15T11:19:41"
},
"after": { same format as "before" field above }
}
List of industry changes
{
"updated": true,
"added": [
{
"period": {
"from": "2018-10-01T00:00:00",
"to": "2018-11-14T00:00:00",
"isNow": true
},
"industryCode": "107120",
"industryText": "Fremstilling af friske bageriprodukter",
"lastUpdated": "2018-11-15T11:19:41"
}
],
"removed": []
}
Company form change
{
"updated": true,
"before": {
"companyFormCode": 80,
"shortDescription": "APS",
"longDescription": "Anpartsselskab",
"responsibleDataProvider": "E&S",
"period":{
"from": "1999-01-01T00:00:00",
"to": "2006-02-08T00:00:00",
"isNow": false
},
"lastUpdated": "2013-11-22T18:00:13"
},
"after": { same format as "before" field above }
}
Relation changes
{
"updated": true,
"added": [
{
"lassoId": "CVR-3-4000054321",
"name": "Peter Petersen",
"type": "Person"
}
],
"removed": [
{
"lassoId": "CVR-3-4000012345",
"name": "Jens Jensen",
"type": "Person"
}
]
}
Ownership changes
{
"updated": true,
"added": [
{
"lassoId": "CVR-3-4000054321",
"name": "Peter Petersen",
"type": "Person",
"ownership": "10-15" // percentage interval in case of ownership change
}
],
"removed": [
{
"lassoId": "CVR-1-12345678",
"name": "Firmaet ApS",
"type": "Company",
"ownership": "15.7" // precise percentage in case of trueownership change
}
],
"changed": [
{
"lassoId": "CVR-3-4000056789",
"name": "Lars Larsen",
"type": "Person",
"ownership": "10-15" // percentage (or interval)
}
],
}
Ownership
{
"updated": true,
"ownership": {
"lassoId": "CVR-1-34580820",
"name": "Lasso X A/S",
"type": "Company",
"ownership": "10-15" // percentage (or an interval)
}
}
Voterights changes
{
"updated": true,
"added": [
{
"lassoId": "CVR-3-4000054321",
"name": "Peter Petersen",
"type": "Person",
"voterights": "10-15" // percentage (or interval)
}
],
"removed": [
{
"lassoId": "CVR-1-12345678",
"name": "Firmaet ApS",
"type": "Company",
"voterights": "15" // percentage
}
],
"changed": [
{
"lassoId": "CVR-3-4000056789",
"name": "Lars Larsen",
"type": "Person",
"voterights": "10" // percentage
}
],
}
Voterights
{
"updated": true,
"voterights": {
"lassoId": "CVR-1-34580820",
"name": "Lasso X A/S",
"type": "Company",
"voterights": "10" // percentage
}
}
Merger
{
"updated": true,
"entity": {
"lassoId": "CVR-1-34580820",
"name": "Lasso X A/S",
"type": "Company"
},
"dissolved": true / false // Whether the current company has been dissolved with the merger.
}
Bool change
{
"updated": true,
"before": false,
"after": true
}
ReportRead more about this format
{
"updated": true,
"data": {
"cvr": 34580820,
"reportType": "Yearly",
"period": {
"from": "2020-01-01T00:00:00",
"to": "2020-12-31T00:00:00",
"instant": null
},
"publicationTime": "2021-05-31T09:02:47",
"reportUrl": "https://api.lassox.com/data/cvr/report?id=02808543/amNsb3VkczovLzAzLzM2LzFmLzVmLzlmLzIzNTUtNDBmNy1iYTMxLTVhYjc0ODIwZmNkNQ.pdf",
"xbrlUrl": "http://regnskaber.virk.dk/02808543/amNsb3VkczovLzAzLzc4LzRhLzRmL2RjL2FlZjMtNGUzMS1iMDEyLWJhNjExZTViYzNhOA.xml",
"reportYear": 2020,
"currencies": [
"DKK"
],
"administrativeExpenses": null,
"assets": {
"unit": "DKK",
"value": 12964887,
"sources": [
"Assets"
],
"possibleError": false,
"error": false
},
"auditors": [
{
"companyName": "Baker Tilly Denmark",
"companyCVR": 35257691,
"id": "mne32172",
"name": "Morten Schwensen",
"title": "statsautoriseret revisor"
}
],
"auditorSignatureDate": {
"value": "2021-05-10T00:00:00",
"sources": [
"SignatureOfAuditorsDate"
],
"possibleError": false,
"error": false
},
"bankCVR": null,
"bankName": null,
"capital": {
"unit": "DKK",
"value": 1737691,
"sources": [
"ContributedCapital"
],
"possibleError": false,
"error": false
},
"cashHoldings": {
"unit": "DKK",
"value": 2310832,
"sources": [
"CashAndCashEquivalents"
],
"possibleError": false,
"error": false
},
"classOfReportingEntity": {
"value": "Regnskabsklasse B",
"sources": [
"ClassOfReportingEntity"
],
"possibleError": false,
"error": false
},
"coverage": null,
"currentAssets": {
"unit": "DKK",
"value": 5234250,
"sources": [
"CurrentAssets"
],
"possibleError": false,
"error": false
},
"debt": {
"unit": "DKK",
"value": 12876409,
"calculation": "LiabilitiesAndEquity - Equity",
"sources": [
"LiabilitiesAndEquity",
"Equity"
],
"possibleError": false,
"error": false
},
"deferredTaxAssets": {
"unit": "DKK",
"value": 303646,
"sources": [
"CurrentDeferredTaxAssets"
],
"possibleError": false,
"error": false
},
"depreciations": {
"unit": "DKK",
"value": -1600097,
"sources": [
"DepreciationAmortisationExpenseAndImpairmentLossesOfPropertyPlantAndEquipmentAndIntangibleAssetsRecognisedInProfitOrLoss"
],
"possibleError": false,
"error": false
},
"descriptionOfQualifications": null,
"dividend": null,
"ebitda": {
"unit": "DKK",
"value": 2234313,
"calculation": "ProfitLossFromOrdinaryOperatingActivities - DepreciationAmortisationExpenseAndImpairmentLossesOfPropertyPlantAndEquipmentAndIntangibleAssetsRecognisedInProfitOrLoss",
"sources": [
"ProfitLossFromOrdinaryOperatingActivities",
"DepreciationAmortisationExpenseAndImpairmentLossesOfPropertyPlantAndEquipmentAndIntangibleAssetsRecognisedInProfitOrLoss"
],
"possibleError": false,
"error": false
},
"employeeExpenses": {
"unit": "DKK",
"value": 4305096,
"sources": [
"EmployeeBenefitsExpense"
],
"possibleError": true,
"error": false
},
"employees": {
"unit": "pure",
"value": 12,
"sources": [
"AverageNumberOfEmployees"
],
"possibleError": false,
"error": false
},
"equityExcludingDividend": null,
"equity": {
"unit": "DKK",
"value": 88478,
"sources": [
"Equity"
],
"possibleError": false,
"error": false
},
"equityLoan": null,
"equityReturn": {
"unit": "Percentage",
"value": 118.93012952372341,
"calculation": "(ProfitLossFromOrdinaryActivitiesBeforeTax / Equity) * 100",
"sources": [
"ProfitLossFromOrdinaryActivitiesBeforeTax",
"Equity"
],
"possibleError": false,
"error": false
},
"externalExpenses": null,
"financialFixedAssets": {
"unit": "DKK",
"value": 122625,
"sources": [
"LongtermInvestmentsAndReceivables"
],
"possibleError": false,
"error": false
},
"goingConcern": null,
"grossResult": {
"unit": "DKK",
"value": 6539409,
"sources": [
"GrossProfitLoss"
],
"possibleError": false,
"error": false
},
"intangibleFixedAssets": {
"unit": "DKK",
"value": 7286236,
"sources": [
"IntangibleAssets"
],
"possibleError": false,
"error": false
},
"inventories": null,
"landAndBuildings": null,
"liabilitiesAndEquity": {
"unit": "DKK",
"value": 12964887,
"sources": [
"LiabilitiesAndEquity"
],
"possibleError": false,
"error": false
},
"liquidityRatio": {
"unit": "Percentage",
"value": 70.22733840903096,
"calculation": "(CurrentAssets / ShorttermLiabilitiesOtherThanProvisions) * 100",
"sources": [
"CurrentAssets",
"ShorttermLiabilitiesOtherThanProvisions"
],
"possibleError": false,
"error": false
},
"longtermInvestmentsInAssociates": null,
"longtermInvestmentsInGroupEnterprises": null,
"longtermLiabilities": {
"unit": "DKK",
"value": 5423115,
"sources": [
"LongtermLiabilitiesOtherThanProvisions"
],
"possibleError": false,
"error": false
},
"longtermPayablesToGroupEnterprises": null,
"longtermReceivablesFromGroupEnterprises": null,
"managementsReview": null,
"nonCurrentAssets": {
"unit": "DKK",
"value": 7730637,
"sources": [
"NoncurrentAssets"
],
"possibleError": false,
"error": false
},
"operatingMargin": null,
"opinionOnFinancialStatements": {
"value": "Vi har revideret...",
"sources": [
"OpinionOnAuditedFinancialStatements"
],
"possibleError": false,
"error": false
},
"otherFinanceExpenses": {
"unit": "DKK",
"value": 539178,
"sources": [
"OtherFinanceExpenses"
],
"possibleError": false,
"error": false
},
"otherFinanceIncome": {
"unit": "DKK",
"value": 10189,
"sources": [
"OtherFinanceIncome"
],
"possibleError": false,
"error": false
},
"pensions": {
"unit": "DKK",
"value": 502445,
"sources": [
"PostemploymentBenefitExpense"
],
"possibleError": false,
"error": false
},
"profitFromOrdinaryOperatingActivities": {
"unit": "DKK",
"value": 634216,
"sources": [
"ProfitLossFromOrdinaryOperatingActivities"
],
"possibleError": false,
"error": false
},
"propertyCost": null,
"provisions": null,
"reportingCompanyName": {
"value": "Lasso X A/S",
"sources": [
"NameOfReportingEntity"
],
"possibleError": false,
"error": false
},
"result": {
"unit": "DKK",
"value": 255267,
"sources": [
"ProfitLoss"
],
"possibleError": false,
"error": false
},
"resultBeforeTax": {
"unit": "DKK",
"value": 105227,
"sources": [
"ProfitLossFromOrdinaryActivitiesBeforeTax"
],
"possibleError": false,
"error": false
},
"revenue": null,
"roi": {
"unit": "Percentage",
"value": 4.891797360054121,
"calculation": "(ProfitLossFromOrdinaryOperatingActivities / Assets) * 100",
"sources": [
"ProfitLossFromOrdinaryOperatingActivities",
"Assets"
],
"possibleError": false,
"error": false
},
"salaries": {
"unit": "DKK",
"value": 7009831,
"sources": [
"WagesAndSalaries"
],
"possibleError": false,
"error": false
},
"shorttermInvestments": null,
"shorttermLiabilities": {
"unit": "DKK",
"value": 7453294,
"sources": [
"ShorttermLiabilitiesOtherThanProvisions"
],
"possibleError": false,
"error": false
},
"shorttermPayablesToGroupEnterprises": null,
"shorttermTaxPayablesToGroupEnterprises": null,
"shorttermReceivables": {
"unit": "DKK",
"value": 2923418,
"sources": [
"ShorttermReceivables"
],
"possibleError": false,
"error": false
},
"shorttermReceivablesFromGroupEnterprises": null,
"shorttermTaxReceivablesFromGroupEnterprises": null,
"shorttermReceivablesFromOwnersAndManagement": null,
"shorttermTradeReceivables": {
"unit": "DKK",
"value": 1563168,
"sources": [
"ShorttermTradeReceivables"
],
"possibleError": false,
"error": false
},
"shorttermTradePayables": {
"unit": "DKK",
"value": 68837,
"sources": [
"ShorttermTradePayables"
],
"possibleError": false,
"error": false
},
"socialSecurityExpenses": {
"unit": "DKK",
"value": 85819,
"sources": [
"SocialSecurityContributions"
],
"possibleError": false,
"error": false
},
"solvencyRatio": {
"unit": "Percentage",
"value": 0.6824432792973822,
"calculation": "(Equity / Assets) * 100",
"sources": [
"Equity",
"Assets"
],
"possibleError": false,
"error": false
},
"solvencyRatioExcludingDividend": null,
"submittingCompanyCVR": {
"unit": "CVR",
"value": 35257691,
"sources": [
"IdentificationNumberCvrOfSubmittingEnterprise"
],
"possibleError": false,
"error": false
},
"submittingCompanyName": {
"value": "Baker Tilly Denmark",
"sources": [
"NameOfSubmittingEnterprise"
],
"possibleError": false,
"error": false
},
"supplementaryInformation": [],
"tangibleFixedAssets": {
"unit": "DKK",
"value": 321776,
"sources": [
"PropertyPlantAndEquipment"
],
"possibleError": false,
"error": false
},
"taxExpense": {
"unit": "DKK",
"value": -150040,
"sources": [
"TaxExpense"
],
"possibleError": false,
"error": false
},
"typeOfAuditorAssistance": {
"value": "Revision",
"sources": [
"TypeOfAuditorAssistance"
],
"possibleError": false,
"error": false
},
"typeOfBasisForModifiedOpinion": null
}
}
Monthly Employee Count Change
{
"updated": true,
"year": 2020,
"month": 1,
"before": 12,
"after": 13
}
Quarterly Employee Count Change
{
"updated": true,
"year": 2020,
"quarter": 1,
"before": "2-4",
"after": "5-9"
}
Yearly Employee Count Change
{
"updated": true,
"year": 2019,
"before": "2-4",
"after": "5-9"
}
New Article
{
"updated": true,
"source": "Paqle",
"headline": "De offentlige data skal sættes fri",
"tagline": null,
"content": "Det gælder blandt andet Lasso X, der ved hjælp af data fra CVR, Tinglysningsretten og Ejerregisteret overvåger ændringer i virksomheders oplysninger og sammensætning. ",
"time": "2019-04-08T10:13:00Z",
"link": "http://entityapi.paqle.net/articles/1ddd8d139d56bd48439eb02f01988c0c53b178358e0d99e13f6badccce72276e4eb96a75ec7e3eaabc102990669cbcd5"
}
Monitor change
{
"updated": true,
"monitorId": "917d1ad9-f3f7-44fb-92f8-ea8bc875271c",
"monitorName": "Companies in Copenhagen"
}