Changelog
What changed in the TrustWix API, webhooks, verification flow and console, newest first
Every change that affects your integration or your team lands here, newest first. Changes are additive unless an entry says otherwise: a new field or event never removes an old one, so an integration that ignores what it does not recognise keeps working. Check back from time to time, or before you upgrade anything that reads our payloads.
24 September 2026
Documents missing a field their kind always prints go to review
Every document we read now records which of its fields were present. For each country and document
type, we learn from documents approved in manual review which fields a genuine one always carries,
and a document that lacks one of them, or carries one that fails its own check, goes to manual
review with INCOMPLETE_DOCUMENT instead of being approved automatically. Hiding a field is how an
edited real document conceals who it belongs to. A field only becomes expected once enough approved
documents of that kind show it nearly every time, so a field that is simply hard to read never
triggers this, and the set grows on its own as more documents are reviewed. It never rejects
anyone.
INCOMPLETE_DOCUMENT can be waived in your findings policy like any other document finding. Before
this, a document the reader sent to review with this finding could still be approved by the
sensitivity setting; it now holds at every sensitivity.
The machine-readable zone is compared with the printed page more often
A passport's machine-readable zone is now found in more of the documents we read, including when
the page is read as one block of text. Where it is found, it is compared with the printed page as
before, and a printed passport number or date of birth that disagrees with it is refused with
ID_INVALID.
Uploaded files are kept as they were sent
When an applicant uploads a document photo instead of taking one in the flow, the original file is now kept alongside the photo we read, and whether each document photo came from the camera or from an upload is recorded. It is evidence kept with the verification for our document checks. It changes no decision, and the applicant sees nothing new.
23 September 2026
The document types your flow accepts are now enforced
A flow has always been able to say which documents it takes, and that setting never did anything: whatever the applicant picked in the widget was accepted. It is now enforced when the document is captured, so a flow restricted to passports refuses an ID card on the spot and tells the applicant what it takes. A flow that lists nothing is unrestricted, exactly as before, so nothing changes unless you had narrowed the list and expected it to hold. See Flows.
Groundwork: checking that a document is the type it was said to be
The verification flow now has a way to measure a captured card against the printed designs it is supposed to match, on the applicant's device and again on our side, before the document is read. It is inactive for every country today and reports nothing; the designs it compares against have to be measured against real documents first, and each one is turned on separately. Nothing about your integration changes, and no applicant sees anything new yet. We will say here when the first country goes live.
Your team can edit applicant data, and every edit is versioned
Owners, managers and reviewers can now correct the identity data on a verification, in manual review and after it has been approved or rejected. Every edit is kept as a new version and nothing is ever deleted: version 1 is always what was read from the document, and any version can be restored. An edit never changes the status or the verdict. See Verifications and Roles in the console guide.
New webhook event: verification.data_updated
Sent once for every edit, carrying the names of the fields that changed and the new version number,
never the values. Fetch the verification again with include=applicant for the new values. Every
existing endpoint was subscribed to it automatically, and new endpoints receive it by default. See
Webhook events.
identity_version and identity_edited_at on the verification
The verification resource now says whether its applicant data was edited (identity_version is 0
when it never was) and when. The applicant expansion carries its own version, read together with the
values beside it. See Applicant data.
Blurry documents and selfies are retaken before they are sent
The verification flow now checks that a document photo is sharp and large enough to read, and that a selfie shows a clear, frontal, well-lit face, and asks the applicant to retake it on the spot. After two retakes the flow lets them continue, so an older phone can never block anyone.
Documents that print dates day first are read correctly
A document printing its expiry as 25/05/2028 used to be recorded as having no readable expiry,
which sent it to manual review. Day-first dates are now read; when a date could be read two ways that
disagree on whether the document has expired, it is still sent to a person rather than guessed.
22 September 2026
Allow a repeat verification from your backend
POST /v1/verifications/{id}/reverification lets one person verify again after an approval that
would otherwise refuse them with ALREADY_VERIFIED, and DELETE withdraws that permission while it
is unused. Until now this was only possible from the console. See
Check existing applicants.
21 September 2026
change_reason on the verification
GET /v1/verifications/{id} now says who settled the outcome: engine, reviewer or
auto_policy, and null until the verification is final. Webhook outcome payloads carry the same fact
as changeReason.
Reopening a decided verification needs its own permission
Sending a decided verification back to review through the API now requires the verification:reopen
permission, which no key has by default. Approving or rejecting is unchanged.
An unreadable expiry date is never approved automatically
When the expiry date on a document cannot be read, the verification now goes to manual review with
EXPIRY_UNREADABLE, whatever your review sensitivity, instead of being approved without that
evidence. See Reason codes.
16 September 2026
One person, one open question
A new verification is refused while the same person already has one waiting in manual review, with
VERIFICATION_IN_REVIEW at creation and REVIEW_IN_PROGRESS later in the flow. When one of their
verifications is approved, their other open cases are closed. A person is now also recognised by their
national ID number, so a driving licence and an ID card for the same person match. See
Webhook events and Errors.
14 September 2026
Create keys that can read applicant data yourself
When you create an API key in the console, you can now choose whether it reads outcomes only or full
data (applicant:read), which include=applicant,documents needs. A 403 for a missing permission now
names the keys on your account that already have it, and a key's last-used time is shown correctly.
See Applicant data.