> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proofage.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# October 2026

> What changed in ProofAge in October 2026.

<Update label="October 8" description="Dashboard and MCP">
  * **Resubmission insights count people, not verifications.** The dashboard card and the `resubmission` part of the MCP `get-verification-stats` now merge a person's verifications by `external_id` within a workspace, and count each person once, on the day of their final outcome. Someone declined on one link and approved on the next is one approval on the 2nd attempt, on the day of the approval, and no longer a decline plus a first-attempt approval. A new verification after an approval starts a new count of its own, and verifications without an `external_id` are counted one by one. The response keys are unchanged, `volume` stays per verification, and the MCP `legend` has a new `person` entry.
</Update>

<Update label="October 3" description="API">
  * **`DOCUMENT_PORTRAIT_NOT_FOUND` on a document front upload.** A front image with no photo of the holder on it, such as a closed passport cover or the back of a card, is now refused at upload with `422` and this code, instead of failing later in the verification. Ask the person to retake the document photo. Not sent for every workspace; handle it like the other upload codes in [Error handling](/integration/error-handling).
</Update>

<Update label="October 2" description="Billing">
  * **The 500 free verifications no longer expire after 15 days.** They are used before your card is charged, and there is no monthly minimum while any are left or in a month that used them. Your administrators get an email when 100, 30 and 0 are left. See [Pricing](/getting-started/pricing#trial).
</Update>

<Update label="October 2" description="API">
  * **`issuing_subdivision` in the document result.** `issuing_subdivision` in `document` is the state or province that issued the document, as a bare code right after `issuing_country` (for example `FL` with `US`), or `null`. Today it is filled for US driving licences and ID cards. It is on every workspace, in `GET /v1/verifications/{id}/document`, in the webhook `document` and in the MCP `list-verifications` document, and it is kept after erasure. See [Reading results](/integration/retrieving-results).
  * SDK releases to match: `@proofage/node` 0.11.0, `proofage` (Python) 0.6.0, `proofage/php-sdk` 0.6.0 and `proofage/laravel-client` 0.9.6.
</Update>

<Update label="October 1" description="API">
  * **`address` in the document result, on identity (KYC) workspaces only.** `GET /v1/verifications/{id}/document` now returns `address` in `fields`: the printed text as read, trimmed, `null` when empty, not parsed and not normalised. It may contain line breaks. `fields` carries eleven keys on KYC workspaces, seven of them KYC-only. Age workspaces do not receive `address`.
  * **The decision webhook carries `document`.** Every decision webhook now has the same `document` object as `GET /v1/verifications/{id}/document`, without the images: `type`, `issuing_country` and `fields`, with eleven fields on identity (KYC) workspaces and four on age workspaces. It is present on every status and is all `null` when nothing was read, and on test workspaces. A resend or a manual retry carries the document as it is now; an automatic retry carries the body as first sent. Stored webhook bodies in your logs now hold the person's name and birth date until erasure. If your handler validates the body with a strict schema, allow the new key. See [Webhooks](/integration/webhooks#payload).
  * **`nationality`** is published only when the document itself states it.
  * **MCP `list-webhook-deliveries`** returns the last attempt's `request_body` only with `include_payload: true`, like `payload`.
  * **Erasure covers every stored copy of a webhook body.** The copy of the body kept with each delivery attempt, and what a receiver answered, are now erased with the rest of the person's data, and an erasure that lands while a delivery is in flight is no longer undone.
  * **`gender` can be `X`.** `F`, `M` or `X`, where `X` means the document states that the sex is unspecified.
  * SDK releases to match: `@proofage/node` 0.10.0, `proofage` (Python) 0.5.0, `proofage/php-sdk` 0.5.0 and `proofage/laravel-client` 0.9.5. They type `address` and the webhook `document`, both optional.
    See [Reading results](/integration/retrieving-results) and [Data models](/api-reference/data-models#document-result).
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.