> Toden documentation. For the full index fetch /llms.txt. Every page is available as Markdown by appending .md to its URL. Identity verification uses /api/kyc, Risk Intelligence uses /api/v1; they are separate contracts with different error shapes. Never invent an endpoint, field or enum value: read the API reference page for the operation first.

## Address presence controls and business premises

### Added

* **Extend a presence check.** `POST /api/identity/entities/:externalUserId/address/extend`
  with `{ days }` (1 to 14, up to 30 extra days in total) gives a running check
  more time. A check that has just ended `inconclusive` because its window ran
  out is reopened, and its verdict arrives again later on the same `watchId`.
  New webhook `entity.address_presence_extended` (`reopened`, `automatic`,
  `previousDeadlineAt`, `deadlineAt`, `extendedBy`).
* **Approve a presence check by hand.** `POST .../address/approve` with a
  `note` (10 characters or more) marks the check verified. The verdict arrives
  on `entity.address_verified` with `decidedBy: "reviewer"`; a check that passed
  on its own evidence carries `decidedBy: "evidence"`. A manual approval is not
  charged.
* **Decline a presence check.** `POST .../address/decline` with a `note` and
  `then`: `fail` (the default) ends the check, and a workflow waiting on it
  declines the verification; `restart` ends it and starts a fresh check in the
  same step, and the waiting workflow decides on the new one. New webhook
  `entity.address_presence_declined` (`restarted`, `restartedWatchId`,
  `declinedBy`, `previousStatus`, `progress`). The note is never sent. New
  decision field `address.presenceDeclined`.
* **Restart a declined check.** `POST .../address/restart` starts a fresh check
  on the same pin and settings. It arrives on `entity.address_presence_started`
  with `startedVia: "restart"`. Nothing the declined check gathered counts.
* **Stop presence monitoring.** `POST .../address/revoke` now ends both the
  check in progress and any always-on arrangement, so no further check starts.
  New webhook `entity.address_presence_stopped` (`wasMonitoring`, `stoppedBy`,
  `stoppedAt`). `GET /api/kyc/address/presence/:externalUserId` returns
  `stopped: true`, and the React Native and Flutter SDKs switch off background
  reporting and forget the stored pin on the next app open. There is no resume:
  start a new check instead.
* **Deadline warning.** New webhook `entity.address_presence_deadline_near`
  two days before a running check's deadline when it still lacks evidence
  (`hoursLeft`, `progress`, `needed`, `autoExtendAvailable`), so you can remind
  the customer while there is time.
* **Near misses and automatic extension.** A check that ends inconclusive having
  reached 60% of its days or nights, with no flagged days, carries
  `nearMiss: true` on its result webhook and the decision field
  `address.presenceNearMiss`. A workflow can set
  `addressCollection.presence.autoExtendDays` (1 to 14) to give such a check
  that many extra days once, instead of ending it.
* **Business premises checks.** On a business (KYB) workflow the address step
  checks the premises the way a business is shown to trade from an address:

  * the address read off a proof-of-address company document is compared with
    the register (`addressMatch` on the document, decision field
    `business.documentAddressMatch`, returned-data key `address_match`);
  * a public business listing for the registered name near the pin
    (`addressIntel.listing`, decision fields `address.listingMatch` and
    `address.listingOperational`, returned-data key `business_listing`). It is
    on by default with the step, `addressCollection.businessListing: false`
    turns it off, and it is charged as its own line only when it runs;
  * other businesses that gave the same spot (`businessesAtSamePin`, decision
    field `address.businessesAtSamePin`), a review signal, never a decline;
  * the premises entrance photo and Street View frame are now accepted on
    business submissions.

  See [Address Intelligence](/user-verification/checks/address-intelligence).
* **Key-people reminder webhooks.** On a business application,
  `key_people.reminder` fires 3, 7 and 11 days after the first invite while
  anyone is still to verify. It lists each person (`pending`) with their invite
  link, whether they opened it, and whether Toden also emails them, plus the
  application's key-people portal link. `key_person.invite_expiring` fires once
  per invite link in its last 48 hours (`hoursLeft`). Use them to chase people
  on your own channels. The links are left out (`linksIncluded: false`) when
  the workflow withholds key-people links (Returned data `portal_link`).
  Outside production the reminders arrive in minutes, not days. See
  [Business verification events](/integrate/webhooks/events/business-verification).

### Changed

* **Behaviour change:** a business premises presence check counts days only.
  A business is not expected at its premises overnight, so these checks are
  stored with `minNights: 0` and pass on days alone. Business customers can now
  report presence and read their check's status, and the evening reminder is not
  sent for premises checks.
* **Behaviour change:** the web, React Native and Flutter SDKs run the full
  address steps (search, pin, entrance, review) on a business premises, and send
  the premises pin and entrance photo with the business submission.
* Outside production a presence check waits 5 minutes before any verdict, so
  there is time to try extending, approving and declining it.
* The React Native and Flutter SDKs ask for "allow location all the time" on a
  short screen of their own, just before the system prompt. It tells the person
  what they gain (nothing more to do, with the real number of app opens
  otherwise needed for your workflow), that it finishes sooner, and that only
  this one address is checked. If they choose "Not now", the success screen
  says what is left and offers a button to turn automatic checks on from
  Settings. New customisable texts: `address.background.title`,
  `address.background.description` (each with a `.business` variant),
  `address.background.allow`, `address.background.later` and
  `address.presence.off.title`.
* On a tall phone, the map and Street View in the React Native and Flutter SDKs
  now fill the space down to the Continue button; on a short one they keep
  their usual height and the step scrolls.

### Fixed

* Flutter SDK: going back from the address entrance step and returning to it
  showed a grey screen in release builds. It now opens normally.