# Filed Accounts

A company's latest filed accounts read into plain figures, this year and last, from Companies House's own tagged document.

Balance sheet and (where filed) profit and loss figures from the latest iXBRL accounts, current and prior year, audit status, what's not included; a current ratio and the net-assets change. PDF-only accounts said so and not charged.

Every company files accounts at Companies House, and nearly every small one files them electronically as a tagged document (iXBRL): every figure carries its name and its date. Read raw it's a web page; read properly it's the balance sheet and, where the accounts include one, the profit and loss, as numbers: net assets, current assets, cash, debtors, creditors due within and after a year, equity, turnover, profit, average employees, this year beside last. The services that sell this charge £25 to £39 a month per seat; this endpoint reads the document on demand for 2 credits and says plainly what the accounts leave out (micro-entity and small-company accounts needn't include a profit and loss, so no turnover is usually the law, not a gap) and whether they were audited. Large companies that upload a PDF can't be read as figures; the reply says so and the call isn't charged.

- Price: 2 credits
- Page: https://meetkatalis.com/apis/accounts
- OpenAPI: https://meetkatalis.com/openapi.yaml

## Endpoints

- `GET /api/v1/accounts?company=…` — A company number or name

## Call it

```bash
curl -H "x-api-key: $KATALIS_API_KEY" \
  "https://meetkatalis.com/api/v1/accounts?company=SC528258"
```

```javascript
const res = await fetch("https://meetkatalis.com/api/v1/accounts?company=SC528258", {
  headers: { "x-api-key": process.env.KATALIS_API_KEY },
});
if (!res.ok) throw new Error(`Katalis ${res.status}: ${await res.text()}`);
console.log(await res.json());
```

```python
import os, requests

r = requests.get(
    "https://meetkatalis.com/api/v1/accounts?company=SC528258",
    headers={"x-api-key": os.environ["KATALIS_API_KEY"]},
    timeout=60,
)
r.raise_for_status()
print(r.json())
```

## Example response (a real reply)

```json
{
  "company": { "name": "ACJ JOINERY LTD", "number": "SC528258", "status": "active", "incorporatedOn": "2016-03-01", "accountsNextDue": "2023-03-31" },
  "filed": true,
  "readable": true,
  "accounts": { "filedOn": "2022-03-31", "madeUpTo": "2021-03-31", "kind": "micro-entity", "period": { "start": "2020-04-01", "end": "2021-03-31" }, "priorPeriod": { "start": "2019-04-01", "end": "2020-03-31" }, "standards": "Micro-entities", "audited": "Audit Exempt, No Accountants Report", "auditExempt": true, "dormant": false, "preparedWith": "Companies House" },
  "figures": {
    "currentAssets": { "current": 6972, "prior": 8571 },
    "creditorsWithinOneYear": { "current": 4674, "prior": 5557 },
    "netCurrentAssets": { "current": 2298, "prior": 3014 },
    "totalAssetsLessCurrentLiabilities": { "current": 2298, "prior": 3014 },
    "creditorsAfterOneYear": { "current": 13000, "prior": 0 },
    "netAssets": { "current": 10702, "prior": 3014 },
    "equity": { "current": 10702, "prior": 3014 },
    "employees": { "current": 2, "prior": 2 }
  },
  "ratios": { "currentRatio": 1.49, "netAssetsChange": null },
  "notIncluded": ["turnover", "profit or loss", "cash at bank"],
  "warnings": ["The filed net assets figure (£10,702) is the right size but the wrong sign: total assets less current liabilities (£2,298) minus creditors after one year and provisions comes to -£10,702. The filing software likely dropped a minus sign; read it as -£10,702."],
  "reading": "ACJ JOINERY LTD's micro-entity accounts to 2021-03-31 show net assets of £10,702 (£3,014 the year before), current assets £6,972 (£8,571 the year before), creditors due within a year £4,674 (£5,557 the year before), 2 employees on average. No turnover or profit or loss figures are included: micro-entity and small-company accounts don't have to include a profit and loss account. Unaudited. The filed net assets figure (£10,702) is the right size but the wrong sign … read it as -£10,702."
}
```

## What you'd build with it

- **Credit control and supplier vetting.** Net assets, cash and creditors due within a year, with last year beside them, before you extend terms.
- **Lending and finance platforms.** The latest filed balance sheet by company number, in one call, as the application comes in.
- **Due diligence.** Audited or not, dormant or trading, the standards applied, and the year-on-year movement.

## Why this one

- **The document itself, on demand.** Read from Companies House's tagged accounts at the moment you ask, not from a copy made months ago.
- **Honest about what's missing.** No turnover in micro-entity accounts is the law, and the reply says so instead of showing a blank.
- **Pennies, by company number.** Two credits a company against £25–£39 a month per seat elsewhere.

## Conventions

- Auth: `x-api-key: kat_live_…` on every request (free key at https://meetkatalis.com/developers: a verified email and mobile, 100 credits a month, no card).
- One credit balance across every API; each endpoint's price is on its page and in `x-credits` in https://meetkatalis.com/openapi.yaml.
- Keys are camelCase everywhere. A registered company is `company: { name, number, status, statusDetail?, filingsOverdue? }` on the register endpoints; the enrichment family (enrich, score, assess, brand-kit, ai-visibility, tender-match) keeps `business` / `profile` with `companyNumber`.
- Every error has `code` and `requestId`; every reply an `x-request-id` header; a charged reply `x-credits-remaining`; a reply that gave credits back `x-credits-refunded`. Missing = 404 with `query`.
- Burst ceiling 60 requests a minute per key (429, `Retry-After`, no credits used). A failure on our side (5xx) gives the call's credits back.
- Company data contains public sector information licensed under the Open Government Licence v3.0.

Provided "as is"; results come from public sources and, in places, AI, and may be inaccurate or out of date; not legal, professional or credit advice. Terms: https://meetkatalis.com/apis/terms