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

> ## Agent Instructions
> Money amounts are always major-unit decimal strings (e.g. "1000.00"), never floats and never minor units, in every request, response, and webhook payload.
> Authentication is OAuth 2.0 client credentials: exchange the Client ID and Client Secret at the Token URL for a 24-hour JWT and cache it; do not request a token per call.
> Set a unique clientRef on every money-moving request; it is the idempotency key, and retries return the original resource.
> Quotes are single-use, intent-locked, and expire fast: always read expiresAt, consume the quote with the executor matching its intent, and re-quote on expiry instead of retrying.
> Prefer webhooks over polling for payout, order, application, and virtual-account status tracking.
> Use the sandbox (api.sandbox.zuba.com) with its deterministic magic values before touching production.

# Read the identity verification of the applicant and each director and shareholder

> The applicant's outcome on record and current attempt. While an attempt is pending, its decision is read (at most every 15 seconds) and applied, so the state does not wait on the webhook alone. `persons` lists every director and every shareholder at or above the ownership threshold with the state of their own verification; a pending person's decision is read at most once a minute. The applicant's `verified` or `waived` outcome satisfies the identity requirement of POST /v2/applications/{id}/submit. The hosted link is not returned here; POST /v2/applications/{id}/identity-verification/session starts an attempt with a new one.



## OpenAPI

````yaml /openapi.json get /v2/applications/{id}/identity-verification
openapi: 3.0.0
info:
  contact: {}
  description: >-
    Comprehensive payment platform API supporting fiat and crypto payments,
    currency conversion, and compliance management
  title: Zuba Payment Platform API
  version: '1.0'
servers: []
security: []
tags:
  - description: Manage M2M API keys and credentials
    name: API Keys
  - description: Per-country bank directories and bank-account enquiries
    name: Banks
  - description: Internal ledger accounts and transactions
    name: Ledger
  - description: Handle incoming payments and deposits
    name: Pay-ins
  - description: Manage payouts, beneficiaries, and SEPA transfers
    name: Payouts
  - description: Manage outbound webhook endpoints and deliveries
    name: Webhooks
paths:
  /v2/applications/{id}/identity-verification:
    get:
      tags:
        - Applications (v2)
      summary: >-
        Read the identity verification of the applicant and each director and
        shareholder
      description: >-
        The applicant's outcome on record and current attempt. While an attempt
        is pending, its decision is read (at most every 15 seconds) and applied,
        so the state does not wait on the webhook alone. `persons` lists every
        director and every shareholder at or above the ownership threshold with
        the state of their own verification; a pending person's decision is read
        at most once a minute. The applicant's `verified` or `waived` outcome
        satisfies the identity requirement of POST /v2/applications/{id}/submit.
        The hosted link is not returned here; POST
        /v2/applications/{id}/identity-verification/session starts an attempt
        with a new one.
      operationId: ApplicationV2Controller_getIdentityVerification
      parameters:
        - in: path
          name: id
          required: true
          schema:
            format: uuid
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApplicationIdentityVerificationDto'
          description: ''
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericErrorResponseDto'
          description: The application id is not a UUID
        '403':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericErrorResponseDto'
          description: >-
            The application belongs to another account, which returns a generic
            body.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericErrorResponseDto'
          description: Not found
      security:
        - bearer: []
components:
  schemas:
    ApplicationIdentityVerificationDto:
      properties:
        persons:
          description: >-
            Each director's and large shareholder's own identity verification.
            Empty for an individual application.
          items:
            $ref: '#/components/schemas/ApplicationPersonIdentityVerificationDto'
          type: array
        sessionId:
          description: >-
            The current attempt's session id; null for a waive, before any
            attempt, and in the sandbox, where starting a session verifies the
            applicant at once.
          nullable: true
          type: string
        status:
          description: >-
            The outcome on record. `pending` while an attempt is open;
            `verified` or `waived` satisfies the identity requirement of POST
            /v2/applications/{id}/submit; `rejected` ends an attempt without a
            pass, and a new session may be started. Null until an attempt is
            started or the step is waived, and after a change to the applicant’s
            identity details withdraws a pass.
          enum:
            - pending
            - verified
            - rejected
            - waived
          nullable: true
          type: string
        submittedAt:
          description: When the attempt reached its outcome or was waived.
          format: date-time
          nullable: true
          type: string
      required:
        - status
        - sessionId
        - submittedAt
        - persons
      type: object
    GenericErrorResponseDto:
      properties:
        error:
          description: Error type identifier
          example: BAD_REQUEST
          type: string
        message:
          description: Error message
          example: Bad Request
          type: string
        path:
          description: Request path that generated the error
          example: /v1/resource
          type: string
        statusCode:
          description: HTTP status code
          example: 400
          type: number
        timestamp:
          description: ISO timestamp when the error occurred
          example: '2024-01-15T10:30:00.000Z'
          type: string
      required:
        - statusCode
        - message
        - error
        - timestamp
        - path
      type: object
    ApplicationPersonIdentityVerificationDto:
      properties:
        linkEmailedAt:
          description: When the person was last emailed their link.
          format: date-time
          nullable: true
          type: string
        personId:
          description: The person on the application.
          format: uuid
          type: string
        status:
          description: >-
            For a person sent their own link (`verifiesByLink`): `not_started`
            until they have one; `pending` while it is open; `verified` once
            they pass; `rejected` when an attempt ended without a pass, and a
            new link can be sent. For the applicant, their own outcome in the
            application: `not_started` before an attempt, then `pending`,
            `rejected`, or `verified` (also when waived). Submission does not
            wait for persons sent a link.
          enum:
            - not_started
            - pending
            - verified
            - rejected
          type: string
        verifiesByLink:
          description: >-
            Zuba emails this person their own verification link when the
            application is submitted or resubmitted. False for the applicant,
            who verifies through the application itself.
          type: boolean
      required:
        - personId
        - verifiesByLink
        - status
        - linkEmailedAt
      type: object
  securitySchemes:
    bearer:
      bearerFormat: JWT
      description: Enter Auth0 JWT token
      scheme: bearer
      type: http

````

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