Guide · Company risk · Registry-compliance signal
Strike-Off Risk API: find companies that have stopped filing
A company can stop trading and stop filing long before anyone strikes it off. Spain, the United Kingdom, Ireland and Norway publish a warning state on the way to a forced strike-off, and the API returns it as one flag, with the register's own word for it.
What the signal is
The registry-compliance signal marks a company that is still on the register but has stopped meeting its filing duties: the state that precedes a forced strike-off. It is served as one risk flag, registry_compliance, and signal carries the register's own vocabulary rather than a score.
It is a compliance signal, not an insolvency and not a dissolution. The company still exists and still has a status, so read the two together. It is also a warning rather than a verdict: the Spanish closure is lifted when the company complies, and a UK proposal is a notice that leads to strike-off unless it is objected to.
The signal values, by register
| Country | signal | What the register is saying | Also on the company record |
|---|---|---|---|
| Spain (BORME) | sheet_closed | A provisional closure of the registry sheet: annual accounts not filed, or the company struck from the tax-agency index. The closure stays until a reopening, or any later act that needs an open sheet, is published. | registry_sheet_closed_date |
| United Kingdom (Companies House) | strike_off_proposed | The company is listed as "Active - Proposal to strike off": a notice of compulsory strike-off is pending unless it is objected to. | status = active_strike_off_proposal |
| United Kingdom (Companies House) | accounts_overdue | An active company is past its next accounts due date. Persistent non-filing leads to compulsory strike-off. | next_accounts_due |
| Ireland (CRO) | strike_off_listed | The CRO has listed the company for involuntary strike-off, typically for annual returns not filed. | status = strike_off_listed |
| Norway (Brønnøysundregistrene) | forced_dissolution | The company is under compulsory liquidation or dissolution (tvangsavvikling, tvangsoppløsning), typically for missing annual accounts or an invalid board. | status = in_compulsory_liquidation |
France and Poland publish no equivalent pre-signal. A radiation or a wykreślenie is the removal itself, and it is served as status. Any country outside the table above answers a risk_flag_type=registry_compliance search with a 400 that says the filter is not supported there, so a filter that did not run never looks like an empty result.
Query 1: list the companies a register is flagging
risk_flag_type=registry_compliance works on its own: no name and no identifier is needed. Set country to ES, GB, IE or NO. limit takes 1 to 100 rows and the response pages with pagination.next_cursor.
# Companies House: every company with a strike-off proposal or overdue accounts curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?risk_flag_type=registry_compliance&country=GB&limit=20" # Ireland: the CRO strike-off list. Spain and Norway work the same way. curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/search?risk_flag_type=registry_compliance&country=IE&limit=20"
The rows are ordinary company records. A UK row carries status and next_accounts_due, a Spanish row carries registry_sheet_closed_date. The signal value itself comes from the second call.
Do not confuse it with has_risk_flag=true: that filter is Spain only and returns the AEAT tax-debtor entries, a different flag.
Query 2: read the signal on one company
Add include=risk_flags to the company detail. The id is the one the search returned.
curl -H "Authorization: Bearer $PROMETIAM_API_KEY" \ "https://api.prometiam.com/functions/v1/risk-api/companies/$COMPANY_ID?country=GB&include=risk_flags"
An illustrative, trimmed response for a fictional UK company:
{
"data": {
"id": 2000000012345,
"company_number": "01234567",
"company_name": "EXAMPLE TRADING LIMITED",
"status": "active_strike_off_proposal",
"risk_flags": [
{
"flag_type": "registry_compliance",
"signal": "strike_off_proposed",
"severity": "medium",
"as_of": "2026-09-28",
"is_point_in_time": false,
"source": "Companies House",
"source_url": "https://find-and-update.company-information.service.gov.uk/company/01234567",
"note": "…"
}
]
}
}risk_flags is an empty array when the company carries no signal. as_of dates the signal, and source_url points at the register. On a Spanish company the same array can also hold the Spain-only tax_debt entries, so pick the flag by flag_type, not by position.
Use it in code
Node: walk a register's whole list, and read the signal for one company.
const API = 'https://api.prometiam.com/functions/v1/risk-api'
const headers = { Authorization: 'Bearer ' + process.env.PROMETIAM_API_KEY }
// Every company a register currently flags (country: ES, GB, IE or NO)
export async function* flaggedCompanies(country) {
let cursor = null
do {
const params = new URLSearchParams({ risk_flag_type: 'registry_compliance', country, limit: '100' })
if (cursor) params.set('cursor', cursor)
const res = await fetch(API + '/companies/search?' + params, { headers })
if (!res.ok) throw new Error('search failed: ' + res.status)
const body = await res.json()
yield* body.data
cursor = body.pagination.has_more ? body.pagination.next_cursor : null
} while (cursor)
}
// The signal for one company, or null when the register shows none
export async function complianceSignal(country, id) {
const res = await fetch(API + '/companies/' + id + '?country=' + country + '&include=risk_flags', { headers })
if (!res.ok) throw new Error('detail failed: ' + res.status)
const { data } = await res.json()
const flag = (data.risk_flags || []).find((f) => f.flag_type === 'registry_compliance')
return flag ? { signal: flag.signal, as_of: flag.as_of, status: data.status, source_url: flag.source_url } : null
}Python: check a supplier by its registry number, for example before renewing a contract.
import os
import requests
API = 'https://api.prometiam.com/functions/v1/risk-api'
HEAD = {'Authorization': 'Bearer ' + os.environ['PROMETIAM_API_KEY']}
def strike_off_check(country, company_number):
"""country: ES, GB, IE or NO. company_number: NIF, Companies House, CRO or organisasjonsnummer."""
found = requests.get(API + '/companies/search',
params={'country': country, 'company_number': company_number},
headers=HEAD, timeout=30)
found.raise_for_status()
rows = found.json()['data']
if not rows:
return {'result': 'not_found'}
detail = requests.get(API + '/companies/' + str(rows[0]['id']),
params={'country': country, 'include': 'risk_flags'},
headers=HEAD, timeout=30)
detail.raise_for_status()
company = detail.json()['data']
flags = [f for f in company.get('risk_flags', []) if f['flag_type'] == 'registry_compliance']
if not flags:
return {'result': 'no_signal', 'status': company['status']}
return {'result': 'signal', 'signal': flags[0]['signal'], 'as_of': flags[0]['as_of'],
'status': company['status'], 'source_url': flags[0]['source_url']}To find the identifier first, the free lookups for Companies House numbers, CRO numbers, organisasjonsnummer and Spanish NIFs run the same search. The parameters are in the search and company detail sections of the docs.
Dormant company risk: what the signal covers
A company that has stopped trading often does not dissolve formally. It just stops filing, and a failure to file can be the only public trace it leaves. That is the case this signal is for: a supplier that still shows as active on a register but has stopped meeting its duties, a customer you are about to extend credit to, a counterparty in a KYB file.
- Onboarding and KYB. Route a flagged company to review and ask for its latest filed accounts, rather than declining automatically. The signal is a prompt to look.
- Supplier and customer files. Re-read
include=risk_flagson your own schedule and storeas_ofandsource_urlwith the decision. A register can lift the signal when the company files. - Credit and collections. It sits before a strike-off, so it is an early warning for a debtor who has gone quiet. Read it beside
status.
More on supplier due diligence, KYB onboarding and insolvency monitoring across Europe.
What the signal does not tell you
- It is not an insolvency. Corporate insolvency notices are a separate endpoint, corporate only, for sixteen markets (FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG).
- It is not a dissolution. The company is still on the register. Read
status. - It does not predict a strike-off. It says the register has flagged a failure to file. Some companies file late or object, and the register then lifts the signal.
- It is not a dormancy or trading flag. The API does not report whether a company is trading. A dormant company that files on time carries no signal.
- It exists for these registers only. Spain, the United Kingdom, Ireland and Norway. France and Poland publish no equivalent pre-signal, and any other country is refused with a 400.
- It is as fresh as the register. The signal is refreshed daily;
as_ofdates the signal itself.
Pricing
Starter begins with a 14-day trial: 500 credits in total, 10 requests/minute, card required, nothing charged for 14 days. Subscribing keeps the same key working. Then Starter at €9.99/month (1,000 credits), Professional at €29.99/month (10,000 credits) and Scale at €99.99/month (50,000 credits), monthly or annual. Every search and every company detail is one call. See pricing.
FAQ
What is a company strike-off check API?
An API that tells you whether a company that is still on its register has reached the state that precedes a forced strike-off: a closed registry sheet in Spain, a proposal to strike off or overdue accounts in the UK, a strike-off listing in Ireland, compulsory liquidation in Norway. Prometiam returns it as the registry_compliance risk flag, with the register's own word for it in signal.
Is a strike-off proposal the same as an insolvency?
No. The signal says the company has stopped meeting its filing duties while still on the register. It is not an insolvency and not a dissolution. Corporate insolvency notices are a separate endpoint covering sixteen markets (FR, DE, GB, AT, CH, NO, FI, US, NL, DK, HR, SE, ES, LV, EE, SG), and
Which countries return the signal?
Spain, the United Kingdom, Ireland and Norway. France and Poland publish no equivalent pre-signal; their removals from the register are served as status. Any other country answers a risk_flag_type=registry_compliance search with a 400.
Does it tell me whether a company is dormant?
No. The API does not report whether a company is trading. It reports that the register has flagged a failure to file, which is often what a company that has gone quiet leaves behind. A company that files on time carries no signal, whether or not it trades.
How do I list every flagged company in a country?
Call GET /companies/search with risk_flag_type=registry_compliance and country=ES, GB, IE or NO. No name is needed. Page with next_cursor. Read the signal itself with include=risk_flags on the company.
How current is the signal?
It is refreshed daily, and as_of dates the signal itself. A register can lift a signal when the company files, so re-read it before you act on an old result.