For Developers

Build filing into your software.

Automate CT600 and Companies House filing with the WeFile CT600 API — a REST API that lets you focus on your product while we handle tax submissions.

Everything you need to automate filings

REST API

Predictable REST endpoints with standardized JSON responses and intuitive resource URLs.

API Key Auth

Secure authentication using an X-API-Key header. Generate live and test keys instantly.

CT600 & CH Filing

Submit to both HMRC and Companies House programmatically from the same filing.

Auto Tax Calculation

Corporation tax and relevant schedules are computed automatically from provided P&L data.

Document Generation

Retrieve generated PDF accounts, CT600 forms, and compliant iXBRL documents via API.

Status Polling

Track submission status reliably by polling comprehensive status endpoints.

Simple and predictable

1

Add Company (via CH number)

2

Get Filing Periods

3

Create & Save Filing

4

Submit to HMRC/CH

5

Poll & Download

Create a filing with one request

Our API is designed to be self-explanatory. Create a filing with a single request.

bash
curl -X POST https://wefile.co.uk/_api/v1/filing/create \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "companyId": 123,
    "periodStart": "2023-01-01",
    "periodEnd": "2023-12-31",
    "isDormant": true
  }'

Standalone developer package

For Developers

API Package

.../year + VAT
  • Up to 300 programmatic filings per year
  • REST API with API key authentication
  • CT600 & Companies House submissions
  • Full document generation & download
  • Reliable status polling for submissions
  • 12 months access

Frequently asked questions

The API package includes up to 300 successful filings per year via our REST API. You get access to live and test API keys, full document generation (CT600, accounts, iXBRL), and reliable status polling to track your submissions.
No, the API package is a standalone subscription designed specifically for software developers and platforms. It operates independently of our standard Accountant Membership plans.
Yes. The API lets you create and submit filings programmatically, so you can automate high-volume or batch filing from your own system, up to 300 filings per year on the API package. Each filing is still submitted and tracked individually. The WeFile web app itself does not offer bulk upload.
Yes, the CT600 API suits accountancy practices with developer resources that want to automate filings from their own systems. Practices filing manually for many clients can instead use the accountant membership.
Upon subscribing, you can generate API keys from your developer dashboard. We provide both sandbox keys for testing integration without submitting real data, and live keys for production filings. Pass your key in the X-API-Key header of your requests.
The API package allows for up to 300 successful filings per year. Rate limits for API requests are generous enough to support standard polling and submission workflows, but we recommend checking our API documentation for the exact endpoint limits to avoid throttling.
Our API supports joint filings to both HMRC (CT600) and Companies House. You provide the raw financial data, and our engine automatically calculates the tax, generates the required iXBRL documents, and handles the submission protocols for both agencies.
API subscribers receive priority technical support. You can reach out to our dedicated developer support team via email or through the support ticketing system in your dashboard. Our engineers are on hand to help with payload structuring, sandbox testing, and submission debugging.
Yes. You can generate sandbox API keys from your developer dashboard. Sandbox keys allow you to call all endpoints and validate your payloads without submitting anything to HMRC or Companies House. We recommend completing your full integration in sandbox mode before switching to live keys.
All requests and responses use JSON. Financial figures such as turnover, expenses, and balance sheet items are provided in whole pounds (for example, a turnover of £150,000 is sent as 150000) — not in pence. Dates must be in ISO 8601 format (YYYY-MM-DD). Full schema details and example payloads are available in our API documentation.
Absolutely. When creating a filing, simply indicate the company is dormant. The API will generate the appropriate dormant company accounts and CT600 return with zero figures, ready for submission to both HMRC and Companies House.
The API returns standard HTTP status codes along with descriptive error messages in the response body. If a submission is rejected by HMRC or Companies House, the rejection reason is included in the polling response so you can programmatically surface it to your users or retry after correcting the data.
Once you have used all 300 successful filings in your subscription period, further submission requests will be declined. You can monitor your usage from your developer dashboard at any time. To continue filing, you can renew or purchase a new API subscription.
Yes. After creating and saving a filing via the API, you can retrieve the generated PDF accounts, CT600 form, and iXBRL documents through dedicated download endpoints — all before triggering the actual submission to HMRC and Companies House.
Currently the API uses a polling model for tracking submission status. After submitting a filing, you poll the status endpoint until HMRC and Companies House return an acceptance or rejection. Our polling endpoints are designed to be efficient and return results promptly.
Credentials can either be saved against the filing, in which case the Gateway password and Companies House authentication code are encrypted at rest (AES-256) and are never readable back through the API (they return as [REDACTED]), or supplied per request in the optional credentials object on POST /v1/filing/submit, in which case they are used for that single transmission only and never written to our database. Either way, they can be removed afterwards with POST /v1/filing/credentials/delete.
Yes. You can skip saving credentials to the filing entirely and instead pass them in the optional credentials object when calling POST /v1/filing/submit. These per-request credentials override any stored ones in-memory for that transmission only and are never saved to the database. You can also explicitly remove any stored credentials using POST /v1/filing/credentials/delete (note that deletion is refused if a submission is currently in flight, because the credentials are needed to poll the status).
The exact XML envelope transmitted to HMRC or Companies House is retained with sensitive credential elements selectively redacted. The submission history includes a correlation ID, submission number, HMRC IRmark, and a SHA-256 digest of the transmitted GovTalk Body (requestBodySha256) returned by the status and submissions endpoints, so the payload can be independently verified after the event.
No. WeFile generates the CT600 XML, the iXBRL accounts, and the iXBRL tax computation from the structured JSON data supplied. The taxCalculation field is stored merely as an echo of your own figures but is never used for the submission, since the tax computation is always recomputed server-side. (Charity and CASC filings remain the exception, where a caller-supplied accounts PDF can be attached.)
No, all Companies House submissions go through WeFile's own presenter account. Per-firm presenter credentials are not currently supported.
The API package is a 12-month subscription. There is no auto-renewal — once your subscription period ends, you simply choose whether to purchase again. If you wish to stop using the service, no cancellation action is needed; your access will expire at the end of the paid period.

What you get with the WeFile API

WeFile's API lets you automate CT600 and Companies House filing without leaving your own product. Prefer a guided interface or an Xero/QuickBooks/FreeAgent import instead? Explore our accounting integrations, CT600 software for accountants, or white-label CT600 client portal. Read the full API documentation to get started.