Based on the latest API specifications and the rollout of the Economic Crime and Corporate Transparency Act (ECCT Act) measures as of late 2025, here is a draft article tailored for the Companies House Developer Forum.
It specifically addresses the “pain points” developers are likely facing right now regarding the mandatory Identity Verification (IDV) rollout that began on November 18, 2025.
Hi everyone,
With the mandatory Identity Verification (IDV) rollout now live (as of Nov 18), many of us are deep in the weeds of updating our integrations. While the policy intent is clear, the API behavior for “unverified” edge cases has been a bit of a moving target.
I wanted to share what we’re seeing regarding the new JSON fields and VS01 schemas, and ask how you are handling the “pending” limbo states in your software.
1. The New Status Fields (It’s not just a boolean)
If you haven’t updated your object models yet, watch out for the new date fields in the officers and psc endpoints. We are seeing that simple “is verified?” logic isn’t enough. You need to handle:
appointment_verification_start_on: This seems to be the primary indicator that a verification statement has been successfully linked.appointment_verification_statement_due_on: Critical for existing directors who are in the 12-month transition period.identity_verified_on: Note: This appears to be populated specifically when verification is done via an ACSP (Authorised Corporate Service Provider). If your user verified directly via GOV.UK One Login, this might behave differently or be absent.
The Gotcha: We’ve noticed cases where appointment_verification_start_on is null even after a user claims they’ve verified. There seems to be a propagation lag between the IDV service and the public data API.
2. Handling Rejections (New Appointments)
For those submitting new AP01 filings via the XML Gateway or REST API:
Are you receiving specific 4xx validation errors when the appointee’s Personal Code is invalid or unlinked?
- We are trying to distinguish between a Generic 400 (bad data) and a specific “Unverified Officer” rejection.
- Tip: Ensure your UI collects the 11-character Personal Code for new appointments, as the API now strictly enforces this link before the appointment is registered.
3. The VS01 Schema for Existing PSCs
For existing PSCs, the new PSCVerificationStatement-v1-0.xsd (VS01) is the standard.
Question for the group: Has anyone successfully automated the VS01 submission for a batch of existing PSCs? We are debating whether to build this into our software or instruct clients to use the WebFiling interface for this one-off “catch-up” task to avoid the development overhead.
Open Discussion: The “Lag”
How are you handling the data consistency lag?
- Option A: Trust the user’s word that they verified and allow them to proceed in your UI (risking a failed filing).
- Option B: Poll the
officersendpoint untilappointment_verification_start_onappears (risking user frustration).
If anyone has found a reliable way to “force” a status refresh or has a mapping of the new specific error codes, I’d love to hear it.
(And a big thanks to the team for the updated Swagger docs—they’ve been essential!)
Why this topic works:
- Technical Specificity: It references actual field names (
appointment_verification_start_on) and schemas (VS01), showing you know what you are talking about. - Timely Problem: It addresses the “lag” issue and the distinction between ACSP verification vs. One Login, which is a common source of confusion right now.
- Strategic Question: The question about building vs. skipping the
VS01integration is a genuine business logic problem that other product managers/developers will want to discuss.
source: United Kingdom - Mandatory Identity Verification at Companies House Now in Effect - BDO Local