---
title: "Can They Pay?"
method: GET
path: "/company/{number}/payment-risk"
tags: ["Report series"]
---

# Can They Pay?

`GET /company/{number}/payment-risk`

## Request

- Base URL: `https://api.companystack.co.uk`
- URL: `https://api.companystack.co.uk/company/{number}/payment-risk`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

The patterns creditors check that hold for the company, each with its evidence, rule, source and date; checked lists every rule looked at. Each pattern is a fact from a public record that creditors look for because such patterns can come before a company fails to pay. Each is shown only when it holds, with its source and date. They are not a score, a credit rating or a prediction about this company: many companies show one or more and carry on trading and paying. Figures are the company's own filings, shown as filed.

The rules:
- Net assets and cash at bank were both lower at the latest year end than a year earlier, each by 10% or more (or net assets fell further below zero). Figures that fail CompanyStack's plausibility checks are not used.
- Creditors due within a year rose by 10% or more between the last two year ends, and as a share of current assets they went up by 10 percentage points or more.
- The register's due date for the accounts or the confirmation statement had passed when we last held the register, and it recorded nothing newer.
- A later year's accounts restated an earlier year's net assets, profit, turnover, cash or current assets downward, or its creditors due within a year upward, by 5% or more (and at least £1,000), for a year end in the last 4 years.
- A current person with significant control is, or was, a PSC of 2 or more other companies now in liquidation, administration or insolvency proceedings, or facing strike-off, and those make up 25% or more of their other companies. People are matched across companies on the same name and month and year of birth: a possible match only, which may be a different person. Dissolved companies are not counted as failures (many close voluntarily).
- At least 10 companies are registered at the registered office's first line and postcode, and 40% or more of them are dissolved, facing strike-off or in liquidation (across the register as a whole, about 15% are, in October 2026). It says where the company is registered, not how it trades.
- In the last 12 months, two or more people with significant control ceased, or at least one ceased and another was notified (control changed hands). Notifications within 30 days of incorporation are not counted.
- The Gazette published a petition to wind the company up in the last 12 months, in a notice giving its company number, and no dismissal of it since.
- Companies House removed the company's registered office and put it at the registrar's default address (a PO Box in Cardiff, Edinburgh or Belfast): the company has no registered office of its own on the register.
- The registered office moved in the last 12 months (Companies House filing history) to an address whose first line and postcode the Gazette notices appointing liquidators or administrators gave as the registered office of 5 or more other companies since October 2021, and at least two-thirds of the companies registered there are in liquidation or administration. Such an address is typically an insolvency practitioner's office: practitioners usually move a company's registered office to their own on appointment, and sometimes before. The move is a fact from the filing history; it says nothing about the company's intentions.

accounts_quality holds the accounts-quality flags while they are switched on: restatements, repeated changes of accounting reference date, accounts type switches, dormant then trading, and a parent's section 479A guarantee (favourable). A company whose latest accounts were filed as dormant is not checked for the trading-figure patterns (dormant_note says so). Dissolved and closed companies get applies: false.

API Starter and above. With the accounts-quality flags on, one Companies House filing-history request per company, cached for 6 hours.

## Path parameters

- `number` string, required

## Response `200`

The patterns (level full), or applies: false

- object
  - `applies` boolean
  - `level` 'full' | 'summary'
  - `company_number` string
  - `company_name` string
  - `company_status` string, nullable
  - `situation` object: Which report the company gets (the situation router) and why.
    - `situation` 'new_company' | 'in_trouble' | 'dormant' | 'trading' | 'closed'
    - `report` 'company_report' | 'new_company_report' | 'creditor_pack'
    - `reasons` object[]
      - `code` string
      - `label` string
      - `source` 'register' | 'gazette'
      - `date` string, date, nullable
      - `notice` object, nullable
    - `dormant` boolean
    - `can_they_pay` boolean
    - `accounts_quality` boolean
    - `why` string
  - `dormant` boolean
  - `headline` string
  - `patterns` object[]
    - `code` 'net_assets_and_cash_falling' | 'creditors_rising' | 'filing_overdue' | 'restated_downward' | 'controllers_failed_companies' | 'high_failure_address' | 'psc_churn' | 'petition' | 'registrar_default_address' | 'insolvency_practitioner_address'
    - `name` string
    - `evidence` string[]
    - `rule` string
    - `source` string
    - `as_of` string, date, nullable
    - `links` object[]
      - `label` string
      - `url` string, uri
  - `checked` object[]
    - `code` string
    - `name` string
    - `held` boolean
    - `rule` string
    - `not_checked` string
  - `accounts_quality` object
    - `included` boolean
    - `flags` object[]
      - `code` string
      - `name` string
      - `tone` 'caution' | 'favourable'
      - `evidence` string[]
      - `rule` string
      - `source` string
      - `as_of` string, nullable
    - `checked` object[]
  - `disclaimer` string: Patterns, not verdicts
  - `dormant_note` string, nullable
  - `notice` string
  - `plan` object
    - `name` string
    - `product` 'api' | 'app'
    - `level` 'summary' | 'full'
  - `reported_payment_practices` object: The company's own reported payment practices: figures the company reported to the government, shown as reported. Not a credit rating, a score or CompanyStack's assessment. Present only when the company has filed a report: only large companies and limited liability partnerships have to, so its absence says nothing about how a company pays. Added 2026-11-14. It is not one of the patterns and is never counted as one.
    - `title` 'Reported payment practices'
    - `statement` string: One sentence: who reported what, for which period, filed when
    - `latest` object: The report for the period that ended most recently (where the company filed more than one for it, the one filed last)
      - `report_id` string: The government's id for the report
      - `period_start` string, date
      - `period_end` string, date
      - `filed_on` string, date, nullable: The date the company filed the report with the government
      - `dates_plausible` boolean: false: the period's dates cannot be right as entered in the report (a typing slip in the report); they are given as entered
      - `figures` 'reported' | 'no_payments' | 'no_qualifying_contracts' | 'not_given': reported: the report gives payment figures. no_payments and no_qualifying_contracts: the company reported that it made no payments, or had no qualifying contracts, in the period. not_given: the report gives no usable figures
      - `average_days_to_pay` number, nullable: Average number of days taken to pay, as reported. null when not reported, or when the report gives a figure above 365 days (a placeholder)
      - `pct_within_30_days` number, nullable: Percentage of invoices paid within 30 days
      - `pct_31_to_60_days` number, nullable: Percentage of invoices paid in 31 to 60 days
      - `pct_later_than_60_days` number, nullable: Percentage of invoices paid later than 60 days
      - `pct_not_within_terms` number, nullable: Percentage of invoices not paid within the agreed terms
      - `pct_not_paid_due_to_dispute` number, nullable: Percentage of invoices not paid within the agreed terms because of a dispute (reports from 2025)
      - `shortest_standard_payment_period` number, nullable: Days: the shortest (or only) standard payment period
      - `longest_standard_payment_period` number, nullable: Days: the longest standard payment period
      - `maximum_contractual_payment_period` number, nullable: Days: the longest payment period the company agreed in a contract
      - `standard_payment_terms` string, nullable: The company's description of its standard payment terms (cut at 2,000 characters)
      - `payment_codes` string, nullable: The payment codes the company says it follows; null when it says none
      - `e_invoicing_offered` boolean, nullable
      - `supply_chain_finance_offered` boolean, nullable
      - `company_name_reported` string, nullable: The company's name as the report gives it
      - `url` string, uri: The report on the government's Check payment practices service
      - `listed` boolean: false: the government's published data no longer lists the report; it is kept as it was
      - `not_listed_since` string, date, nullable
      - `reports_for_period` integer: How many reports the company filed for this same period, this one included. The government's data does not say which replaces which
    - `facts` object[]: The latest report as labels and values, in display order
      - `label` string
      - `value` string
    - `caveats` string[]
    - `reports_held` integer: Every report held for the company, the latest included
    - `first_period_start` string, date, nullable
    - `history` object[]: Level full only: every report, newest period first, the latest included. Reports are never removed: one the government no longer lists has listed: false
      - `report_id` string: The government's id for the report
      - `period_start` string, date
      - `period_end` string, date
      - `filed_on` string, date, nullable: The date the company filed the report with the government
      - `dates_plausible` boolean: false: the period's dates cannot be right as entered in the report (a typing slip in the report); they are given as entered
      - `figures` 'reported' | 'no_payments' | 'no_qualifying_contracts' | 'not_given': reported: the report gives payment figures. no_payments and no_qualifying_contracts: the company reported that it made no payments, or had no qualifying contracts, in the period. not_given: the report gives no usable figures
      - `average_days_to_pay` number, nullable: Average number of days taken to pay, as reported. null when not reported, or when the report gives a figure above 365 days (a placeholder)
      - `pct_within_30_days` number, nullable: Percentage of invoices paid within 30 days
      - `pct_31_to_60_days` number, nullable: Percentage of invoices paid in 31 to 60 days
      - `pct_later_than_60_days` number, nullable: Percentage of invoices paid later than 60 days
      - `pct_not_within_terms` number, nullable: Percentage of invoices not paid within the agreed terms
      - `pct_not_paid_due_to_dispute` number, nullable: Percentage of invoices not paid within the agreed terms because of a dispute (reports from 2025)
      - `shortest_standard_payment_period` number, nullable: Days: the shortest (or only) standard payment period
      - `longest_standard_payment_period` number, nullable: Days: the longest standard payment period
      - `maximum_contractual_payment_period` number, nullable: Days: the longest payment period the company agreed in a contract
      - `standard_payment_terms` string, nullable: The company's description of its standard payment terms (cut at 2,000 characters)
      - `payment_codes` string, nullable: The payment codes the company says it follows; null when it says none
      - `e_invoicing_offered` boolean, nullable
      - `supply_chain_finance_offered` boolean, nullable
      - `company_name_reported` string, nullable: The company's name as the report gives it
      - `url` string, uri: The report on the government's Check payment practices service
      - `listed` boolean: false: the government's published data no longer lists the report; it is kept as it was
      - `not_listed_since` string, date, nullable
      - `reports_for_period` integer: How many reports the company filed for this same period, this one included. The government's data does not say which replaces which
    - `history_on` string: Level summary only: what the full answer adds
    - `note` string: That these are the company's own figures
    - `report_source` object: Where the report is published, its licence and when CompanyStack last checked its copy
      - `name` string
      - `publisher` string
      - `url` string, uri
      - `licence` string
      - `licence_url` string, uri
      - `attribution` string
      - `checked_at` string, date-time, nullable: When CompanyStack's copy was last checked against the government's published data (weekly)
      - `line` string

## Other responses

- `401`: API key missing, malformed or revoked
- `403`: API Free: the endpoint needs Starter (code plan_upgrade_required)
- `404`: Not on the register held, or Can They Pay? is not switched on (code not_enabled)
- `429`: Per-minute or per-day limit reached (`code: rate_limited`, `window: minute|day`). Wait `Retry-After` seconds; when both windows are full the day is reported. A refused request does not count against either limit. A bulk lookup (`POST /company/bulk`) counts each company number in it as one request, so one that is more than you have left is refused whole, and the body adds `requested` and `fits`.

---

[API](https://skmtc.dev/companystack/apis/companystack-api.md) · [All operations](https://skmtc.dev/companystack/apis/companystack-api/llms.txt) · [OpenAPI document](https://skmtc.dev/companystack/apis/companystack-api/revisions/8f3234237d2d?raw)
