This is a courtesy translation. The Portuguese version is the authoritative text and prevails in the event of any divergence.
XIP onboarding has four layers: the application collects, the API orchestrates and forwards, the contracted provider verifies and performs the screening, and the administrative panel allows monitoring. Eligibility to transact is decided in the API, on every operation, and cannot be bypassed by the client.
Purpose and scope
This document provides a technical description of the systems that carry out the verification record, the identity verification and the screening of XIP users. It serves as reference material for technical due diligence by partners, auditors and authorities.
At the implementation level, it complements the rules established in:
- KYC and EDD Policies and Procedures — what is required and why;
- AML/CFT Policy and Internal Procedures — the prevention controls and the division of responsibilities;
- Evidence of KYC Records — the verifiable proof of what is recorded and of the transaction block.
Architecture overview
| Layer | Component | Technology | Responsibility in onboarding |
|---|---|---|---|
| 1 | Mobile application | Native Android (Kotlin, Jetpack Compose) | Collection of data and images, local validation, compression, presentation of the state of the verification record. |
| 2 | API | Go, layered architecture (controller → service → repository), PostgreSQL, Redis | Authentication, server-side validation, creation of the verification record, forwarding of the images, recording of the result and eligibility decision. |
| 3 | Contracted provider | Authorized institution, integrated by API | Document analysis, liveness check, screening against restrictive and sanctions lists and for politically exposed person status, verification decision, custody of the documents. |
| 4 | Administrative panel | Web application (React/Next), with roles and permissions | Lookup of users and operations for customer support and compliance, under granular access control. |
Communication between all layers is encrypted in transit by TLS. Layer 2 is the only point through which verification data passes, and it delegates no control decision to the client.
Layer 1 — Mobile application
The application's verification module is organized as a navigation state machine, with a view model that holds the form and the status of the verification record, and dedicated screens for each step.
Screens of the flow
| Step | Screen | Function |
|---|---|---|
| Requirement notice | Pending verification notice | States that the intended operation requires verification and leads to the flow. Presented in the settings, on the deposit screen and on the withdrawal screen. |
| 1 | Personal data | Collection of full name, CPF (Brazilian individual taxpayer number), telephone and e-mail, with input masks and real-time validation. |
| 2 | Identification document | Choice between RG (Brazilian identity card) and CNH (Brazilian driver's license) and capture of the corresponding images, with preview and replacement. |
| 3 | Facial image | Capture of the selfie with framing guidance, for the liveness check. |
| 4 | Review | Consolidated check of data and images before final submission. |
| — | Submitted / Under review | Confirms receipt and states that the analysis is in progress. |
| — | Approved | States the eligibility and releases access to the operations. |
| — | Rejected | Presents the reason recorded by the contracted provider and offers resubmission. |
| — | Error | Reports communication failures in a readable form, without losing the data already entered in the form. |
Controls performed in the application
- Structural validation of the CPF by the modulo 11 algorithm, with rejection of repeated sequences — an invalid CPF is never transmitted;
- Telephone validation for area code and national format, and e-mail validation for format;
- Blocking of advance on an incomplete step: each step requires its validations to pass;
- Consistency of the document set: changing the document type discards incompatible document images, preserving the facial image;
- Image compression on the device to JPEG, with a size budget distributed across the images and a minimum floor per image to preserve legibility;
- Masking in diagnostic logs: sensitive identifiers appear truncated in the application's technical logs — the CPF, for example, is logged only by its last digits;
- Automatic filling of the e-mail from the already confirmed account, reducing discrepancies in the verification record.
The application's validations exist to give the user immediate feedback and to reduce useless submissions. None of them is treated as a guarantee. All rules are reapplied on the server, which is the sole authority over the acceptance of the data and over eligibility to transact.
Layer 2 — API
The API exposes four verification operations, all authenticated and subject to the platform's security controls:
| Operation | Endpoint | Function |
|---|---|---|
| Start verification | POST /api/kyc |
Creates the user's verification record with the contracted provider, from the name, CPF, account e-mail and wallet address. Idempotent. |
| Submit documents | POST /api/kyc/documents |
Receives the images as multipart/form-data and forwards them to the contracted provider. Nothing is stored. |
| Update identification | PATCH /api/kyc |
Updates name, e-mail and telephone. Refused after approval. The CPF is not updatable by this route. |
| Query status | GET /api/kyc |
Returns the state of the verification, the state of the verification record and the rejection reason. Refreshes against the provider when the state is non-terminal. |
Relevant behaviors of the service layer
| Behavior | Implementation | Risk mitigated |
|---|---|---|
| Idempotency of creation | Prior lookup of the existing verification record; where absent, creation occurs under a mutual exclusion lock in the database, with a re-check inside the lock. | A double tap in the application or concurrent requests would create duplicate verification records at the provider and would violate the local uniqueness constraint. |
| Sealing after approval | Attempts to update the identification or to resubmit documents on an approved verification record are refused with a specific error. | Alteration of verified data without a new analysis. |
| Conditional refresh of the state | The query to the provider only occurs when the state is pending, submitted or under review. Terminal states generate no query. | Unnecessary traffic to the provider and improper reopening of final decisions. |
| Safe degradation | A failure in the query to the provider is logged and the known state is returned, unchanged. | A momentary unavailability improperly altering the state of the user's verification record. |
| Audit trail | The provider's complete response is retained in structured form at each event of the life cycle. | Inability to reconcile, subsequently, what the provider reported. |
| Eligibility decision | Verification of the conjunction "verification approved and verification record active" before any quotation or operation. | Operation by an unverified, suspended or blocked user. |
Layer 3 — Contracted provider
Identity verification proper and the screening are performed by the contracted provider, an authorized institution subject to the competent regulation and supervision. The integration takes place through an API authenticated by XIP's own credentials, transmitted in headers and kept in protected configuration, outside the source code.
The contracted provider is responsible, as established by contract, for:
- the analysis of the identification document images, as to authenticity, legibility and integrity;
- the liveness check and the comparison between the facial image and the photograph on the document;
- the validation of the CPF and the checking of the identification data against official databases;
- the screening against restrictive and sanctions lists — United Nations sanctions, applicable international sanctions and national restriction lists;
- the classification as a politically exposed person (PEP), including representatives, family members and close associates;
- the verification decision, with the reason recorded in the event of rejection;
- the custody of the identification documents for the legally required periods;
- the monitoring of settled operations and the analysis of alerts;
- the reporting of suspicious operations to the competent authorities.
XIP receives from the provider the result of these checks, not their inputs: neither the analyzed images nor the detail of the queries against the lists come back for storage at XIP.
Layer 4 — Administrative panel
The administrative panel is used by authorized XIP personnel for customer support and compliance. Its control characteristics:
- its own authentication, distinct from that of end users, with password reset through a dedicated flow;
- granular roles and permissions: access is assigned by function, applying the principle of least privilege, and is checked on the server on every request;
- lookup of users and of operations for customer support purposes, without the ability to alter the result of an identity verification;
- absence of access to identification documents: as the images are not stored by XIP, there is no screen, export or query that displays them to internal operators.
No XIP employee — at any access level — can view a user's document image or facial image. The risk of improper internal access to this data is eliminated at the source, not mitigated by permission controls.
End-to-end flow
Account creation
The user creates the account with e-mail, username and password, and confirms the e-mail. The non-custodial wallet is generated on the device, with keys that never leave it. There is no identity verification at this step.
Application · APIVerification requirement
On attempting to deposit or withdraw, the user encounters the pending verification notice and is led to the flow.
ApplicationCollection and local validation
Progression through the four steps, with validation at each advance and image compression on the device.
ApplicationCreation of the verification record
The API validates the data, creates the verification record at the contracted provider under a concurrency lock and persists the local record with the external identifier returned.
API · contracted providerForwarding of the images
The images reach the API, remain only in memory for the duration of the request and are reassembled and transmitted to the contracted provider. No storage occurs.
APIAnalysis and screening
The contracted provider analyzes the documents, performs the liveness check and the screening against restrictive and sanctions lists and for politically exposed person status, and decides.
Contracted providerRecording of the result
The API records the state of the verification, the state of the verification record, the reason in the event of rejection, the date of the analysis and the raw response as an audit trail.
APIEligibility or rejection
Approved and active, the verification record then permits operations. In any other state, the API refuses every quotation and every operation, without exception.
APIContinuous monitoring
The contracted provider monitors the settled operations; the API records the events received, verified by cryptographic signature, maintaining the complete trail.
Contracted provider · APIScreening: what is checked and where
| Check | Performed by | Timing | Effect at XIP |
|---|---|---|---|
| Authenticity and legibility of the document | Contracted provider | In the analysis, after submission | Rejection with the reason recorded and displayed to the user. |
| Liveness check and facial comparison | Contracted provider | In the analysis | Rejection with the reason recorded. |
| Validation of the CPF against an official database | Contracted provider | In the analysis | Rejection with the reason recorded. |
| Structure of the CPF (modulo 11) | XIP | At collection, before any submission | Advance in step 1 is blocked. |
| United Nations sanctions lists | Contracted provider | Before approval and in reassessments | Verification record not approved or blocked; immediate suspension on the platform. |
| Applicable international sanctions and national restriction lists | Contracted provider | Before approval and in reassessments | Verification record not approved or blocked. |
| Classification as a politically exposed person | Contracted provider | Before approval and in reassessments | High risk classification, with enhanced due diligence and approval at a higher level. |
| Monitoring of operations and generation of alerts | Contracted provider | Continuous, after eligibility | Suspension or blocking of the verification record, with immediate effect on new operations. |
| Eligibility check on every operation | XIP | On every quotation and every operation | Refusal of the operation before any external effect. |
Security controls of the pipeline
| Control | Application |
|---|---|
| Authentication by signed token | All verification operations require a valid user session; an invalid credential invalidates the session on the client. |
| Two-step authentication | Available through an authenticator application, with single-use recovery codes. |
| Layered rate limiting | Global cap per origin for the entire API, cap per authenticated account and specific caps on the credential and operation endpoints. |
| Request filters | Detection of header anomalies, of SQL injection attempts and of malicious content, applied to the entire API surface. |
| Encryption in transit | TLS between application, API and contracted provider. |
| Verification of notification signatures | HMAC-SHA256 over the raw body of the messages received from the provider; unsigned messages are rejected, with no bypass mode. |
| Concurrency locks | Mutual exclusion in the database on the operations of verification record creation and of operation creation. |
| Integrity constraints in the database | Uniqueness of the verification record per user and per provider, uniqueness of the external identifier, mandatory foreign key to the account, prohibition of deletion of financial records. |
| Minimization in technical logs | Sensitive identifiers masked in the application logs, on the client and on the server. |
| Credentials outside the code | Integration credentials kept in protected environment configuration, never committed to version control. |
| Environment segregation | Distinct development, staging and production environments, with separate credentials and databases. |
| Automated tests | Suite executed on every change, covering the verification flow, the idempotency of creation, the sealing after approval and the refusal of operations for verification records that are not enabled. |
Screens of the onboarding process
The screenshots below document the screens actually presented to the user during the verification flow. The data shown is from a demonstration environment.
Video demonstration
The recordings below demonstrate the actual end-to-end process, in a demonstration environment, allowing the behavior of the system to be verified without requiring access to the platform.
Available at: https://xip.cash/media/onboarding/register.mp4
Available at: https://xip.cash/media/onboarding/kyc.mp4
Available at: https://xip.cash/media/onboarding/block.mp4
Additional recordings and guided demonstrations in a controlled environment may be requested at compliance@xip.cash.
Environments and availability
| Item | Status |
|---|---|
| Application platform | Android. Distribution through the official application channel. |
| Language of the verification flow | Brazilian Portuguese. |
| Type of user accepted | Natural person, resident in Brazil, aged 18 or over. Legal entity registration is not currently accepted. |
| Accepted documents | RG (front and back) or CNH, always accompanied by a facial image. |
| Environments | Segregated development, staging and production, with independent credentials and databases. |
| Technical documentation of the API | OpenAPI specification maintained in the project repository, available to partners upon request. |
Version history
| Version | Date | Changes |
|---|---|---|
| 1.0 | July 29, 2026 | Initial publication. Screenshots and videos pending inclusion. |