# KYC Module

#### Architecture Overview

City Protocol's KYC infrastructure is the compliance and activation layer of the neobank stack. It is designed to run identity verification workflows with a provider-agnostic abstraction, powered by `@cityprotocol/core`. The system supports pluggable verification providers, backend-first token issuance, and structured applicant lifecycle management. This create-then-verify workflow mirrors the onboarding and compliance cycles used in traditional banking, bridging the gap between regulated financial services and programmable access control.

> City Protocol's KYC layer is exposed through `CityKycClient`, configured with any supported provider implementation such as `SumsubKycProvider`. The architecture is entirely backend-driven and provider-agnostic.

***

#### Key Components

<table><thead><tr><th width="176.29296875">Component</th><th>Description</th></tr></thead><tbody><tr><td><strong>Provider Abstraction</strong></td><td><code>CityKycClient</code> accepts any provider that conforms to the KYC provider interface. Swapping vendors does not require changes to application logic.</td></tr><tr><td><strong>Applicant Lifecycle</strong></td><td>Applicants are created with fixed identity data, tracked by an external user ID, and moved through verification states by the provider.</td></tr><tr><td><strong>Token Issuance</strong></td><td>Short-lived SDK tokens are minted server-side and passed to the frontend, ensuring secret material never leaves the backend.</td></tr><tr><td><strong>Status Resolution</strong></td><td>Applicant verification status is resolved via polling or webhook, producing a structured result the backend uses to gate platform access.</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://city-protocol.gitbook.io/docs/neofinance-as-a-service/kyc-aml-module/kyc-module.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
