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

# Submit deposit verification

> Submit originator information for a deposit pending travel rule verification via the V4 API.

## Overview

When a deposit is detected as Travel Rule-eligible, it enters a "ready for verification" state. Use this endpoint to submit the required originator data.

For detailed information about wallet types, party types, and field requirements, see [Travel Rule](/concepts/travel-rule).

***

## Required fields by scenario

| Scenario                     | `walletType` | `originator.type` | VASP                   | Name fields             |
| ---------------------------- | ------------ | ----------------- | ---------------------- | ----------------------- |
| Individual from exchange     | `hosted`     | `individual`      | `vaspId` or `vaspName` | `firstName`, `lastName` |
| Entity from exchange         | `hosted`     | `entity`          | `vaspId` or `vaspName` | `fullName`              |
| Individual from self-custody | `unhosted`   | `individual`      | Not required           | `firstName`, `lastName` |
| Entity from self-custody     | `unhosted`   | `entity`          | Not required           | `fullName`              |

<Note>
  Get the list of available VASPs via the [Get VASPs endpoint](/api-reference/travel-rule/get-vasps). Use `vaspId` if the originating VASP is in the list, otherwise use `vaspName`.
</Note>

***

## Verification status

After successful submission, the response contains a `status` field:

| Status      | Description                                |
| ----------- | ------------------------------------------ |
| `submitted` | Data submitted, awaiting compliance review |
| `approved`  | Immediately approved (rare)                |

Monitor deposit status via [deposit/withdraw history](/api-reference/account-wallet/get-deposit-withdraw-history).

***

## Common errors

<Warning>
  **Transaction Not Found**: Ensure the `uniqueId` matches a transaction in the deposit history. The transaction must exist and belong to the authenticated account.
</Warning>

**Missing VASP for hosted wallet:**
When `walletType` is `"hosted"`, provide either `vaspId` or `vaspName`.

***

## Related

* [Get available VASPs](/api-reference/travel-rule/get-vasps) — Fetch VASPs list before submission
* [Travel Rule](/concepts/travel-rule) — Detailed requirements and workflows


## OpenAPI

````yaml openapi/private/main_api_v4.yaml POST /api/v4/travel-rule/deposit/verification
openapi: 3.0.3
info:
  title: WhiteBIT Private HTTP API V4
  description: |
    WhiteBIT Private HTTP API V4 for Main balance changes.

    Base URL: https://whitebit.com

    All endpoints return time in Unix-time format.
    All endpoints return either a JSON object or array.
    For receiving responses from API calls please use http method POST.
  version: 4.0.0
  contact:
    name: WhiteBIT Support
    email: support@whitebit.com
    url: https://whitebit.com
servers:
  - url: https://whitebit.com
    description: WhiteBIT Global Server
  - url: https://whitebit.eu
    description: WhiteBIT EU Server
security:
  - ApiKeyAuth: []
    PayloadAuth: []
    SignatureAuth: []
tags:
  - name: Main Account
    description: Main account balance and operations
  - name: Deposit
    description: Cryptocurrency and fiat deposit operations
  - name: Withdraw
    description: Cryptocurrency and fiat withdrawal operations
  - name: Transfer
    description: Balance transfer operations
  - name: Codes
    description: WhiteBIT codes operations
  - name: Crypto Lending - Fixed
    description: Fixed crypto lending plans
  - name: Crypto Lending - Flex
    description: Flexible crypto lending plans
  - name: Fees
    description: Fee information
  - name: Sub-Account
    description: Sub-account management
  - name: Sub-Account API Keys
    description: Sub-account API key management
  - name: Mining Pool
    description: Mining pool operations
  - name: Credit Line
    description: Credit line information
  - name: JWT
    description: JWT token management
  - name: Travel Rule
    description: Travel Rule compliance endpoints for deposits and withdrawals
paths:
  /api/v4/travel-rule/deposit/verification:
    post:
      tags:
        - Travel Rule
      summary: Submit deposit originator data
      description: >
        Submits originator information for a deposit that is ready for the
        travel rule verification.


        **Wallet types:**

        - `hosted` - VASP-hosted wallet (exchange, custodian). Requires
        `vaspData` object.

        - `unhosted` - Self-custody wallet (hardware wallet, software wallet).
        No VASP required.


        **Party types:**

        - `individual` - Natural person. Requires `firstName` and `lastName`.

        - `entity` - Legal entity. Requires `fullName`.


        <Accordion title="Errors">

        **Validation failed (400):**

        ```json

        {
          "code": 0,
          "message": "Validation failed",
          "errors": {
            "originator.firstName": ["The first name field is required for individual."],
            "originator.address": ["The originator address field is required."]
          }
        }

        ```


        **Transaction not found (422):**

        ```json

        {
          "code": 0,
          "message": "Something went wrong",
          "errors": {
            "uniqueId": ["Transaction not found"]
          }
        }

        ```


        **Transaction must be deposit (422):**

        ```json

        {
          "code": 0,
          "message": "Something went wrong",
          "errors": {
            "uniqueId": ["Transaction must be a deposit"]
          }
        }

        ```


        **Transaction not ready for verification (422):**

        ```json

        {
          "code": 0,
          "message": "Something went wrong",
          "errors": {
            "uniqueId": ["Transaction is not ready for verification"]
          }
        }

        ```


        **API disabled for region (422):**

        ```json

        {
          "code": 0,
          "message": "Something went wrong",
          "errors": {
            "error": ["This endpoint is disabled for your region"]
          }
        }

        ```


        **Missing VASP for hosted wallet (400):**

        ```json

        {
          "code": 0,
          "message": "Validation failed",
          "errors": {
            "vaspData": ["Either vaspId or vaspName is required for hosted wallets"]
          }
        }

        ```

        </Accordion>


        Beyond the errors above, this endpoint can return only the [common
        authentication errors](/api-reference/authentication).


        <Warning>

        Rate limit: 1000 requests/10 sec.

        </Warning>


        <Note>

        The API does not cache the response.

        </Note>
      operationId: submitTravelRuleDepositVerification
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelRuleDepositVerificationRequest'
            examples:
              individualHostedVaspInList:
                summary: Individual from hosted wallet (VASP in list)
                value:
                  uniqueId: 550e8400-e29b-41d4-a716-446655440000
                  walletType: hosted
                  originator:
                    type: individual
                    firstName: Alice
                    lastName: Johnson
                    residenceCountry: NLD
                    walletAddress: '0x9876543210fedcba9876543210fedcba98765432'
                    address:
                      country: NLD
                      city: Amsterdam
                      addressLine1: Damrak 1
                  vaspData:
                    vaspId: vasp-002
                  request: '{{request}}'
                  nonce: 1594297865000
              entityHostedVaspNotInList:
                summary: Entity from hosted wallet (VASP not in list)
                value:
                  uniqueId: 550e8400-e29b-41d4-a716-446655440000
                  walletType: hosted
                  originator:
                    type: entity
                    fullName: Acme Corporation Ltd
                    residenceCountry: GBR
                    walletAddress: '0xabcdef1234567890abcdef1234567890abcdef12'
                    address:
                      country: GBR
                      city: London
                      postCode: EC2A 4BX
                      addressLine1: 123 Finsbury Square
                  vaspData:
                    vaspName: Famous Vasp Inc
                  request: '{{request}}'
                  nonce: 1594297865000
              individualUnhosted:
                summary: Individual from unhosted wallet
                value:
                  uniqueId: 550e8400-e29b-41d4-a716-446655440000
                  walletType: unhosted
                  originator:
                    type: individual
                    firstName: Bob
                    lastName: Smith
                    residenceCountry: DEU
                    walletAddress: bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh
                    address:
                      country: DEU
                      city: Berlin
                      addressLine1: Alexanderplatz 1
                  request: '{{request}}'
                  nonce: 1594297865000
      responses:
        '200':
          description: Successful submission
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      uniqueId:
                        type: string
                        description: Transaction external ID
                        example: 550e8400-e29b-41d4-a716-446655440000
                      status:
                        type: string
                        description: >
                          Verification status:

                          - `submitted` - Data submitted successfully, awaiting
                          review

                          - `approved` - Immediately approved (rare)

                          - Other SumSub review statuses
                        example: submitted
              example:
                data:
                  uniqueId: 550e8400-e29b-41d4-a716-446655440000
                  status: submitted
        '400':
          description: Validation failed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                code: 0
                message: Validation failed
                errors:
                  originator.firstName:
                    - The first name field is required for individual.
        '422':
          description: Business logic error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                transactionNotFound:
                  summary: Transaction not found
                  value:
                    code: 0
                    message: Something went wrong
                    errors:
                      uniqueId:
                        - Transaction not found
                notDeposit:
                  summary: Transaction must be deposit
                  value:
                    code: 0
                    message: Something went wrong
                    errors:
                      uniqueId:
                        - Transaction must be a deposit
                notReady:
                  summary: Transaction not ready for verification
                  value:
                    code: 0
                    message: Something went wrong
                    errors:
                      uniqueId:
                        - Transaction is not ready for verification
components:
  schemas:
    TravelRuleDepositVerificationRequest:
      type: object
      required:
        - uniqueId
        - walletType
        - originator
        - request
        - nonce
      properties:
        uniqueId:
          type: string
          maxLength: 100
          description: Transaction external ID (from deposit/withdraw history)
          example: 550e8400-e29b-41d4-a716-446655440000
        walletType:
          type: string
          enum:
            - hosted
            - unhosted
          description: >
            Wallet type:

            - `hosted` - VASP-hosted wallet (exchange, custodian). Requires
            `vaspData` object.

            - `unhosted` - Self-custody wallet (hardware wallet, software
            wallet).
          example: hosted
        originator:
          $ref: '#/components/schemas/TravelRuleOriginator'
        vaspData:
          $ref: '#/components/schemas/TravelRuleVasp'
        request:
          type: string
          description: Request signature
          example: '{{request}}'
        nonce:
          type: integer
          description: Unique request identifier
          example: 1594297865000
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
        errors:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
    TravelRuleOriginator:
      type: object
      required:
        - type
        - residenceCountry
        - walletAddress
        - address
      description: Originator information for travel rule compliance
      properties:
        type:
          type: string
          enum:
            - individual
            - entity
          description: >
            Party type:

            - `individual` - Natural person. Requires `firstName` and
            `lastName`.

            - `entity` - Legal entity. Requires `fullName`.
          example: individual
        firstName:
          type: string
          maxLength: 100
          description: First name. Required if type = `individual`.
          example: Alice
        lastName:
          type: string
          maxLength: 100
          description: Last name. Required if type = `individual`.
          example: Johnson
        fullName:
          type: string
          maxLength: 200
          description: Full legal name. Required if type = `entity`.
          example: Acme Corporation Ltd
        residenceCountry:
          type: string
          minLength: 3
          maxLength: 3
          description: >-
            ISO 3166-1 alpha-3 country code (3 letters, e.g., `NLD`, `DEU`,
            `GBR`)
          example: NLD
        walletAddress:
          type: string
          maxLength: 200
          description: Source wallet address
          example: '0x9876543210fedcba9876543210fedcba98765432'
        address:
          $ref: '#/components/schemas/TravelRuleAddress'
    TravelRuleVasp:
      type: object
      description: >
        VASP (Virtual Asset Service Provider) information. Required when
        `walletType` is `hosted`.

        Provide either `vaspId` (if VASP is in the list from
        `/travel-rule/vasps`) or `vaspName` (if not in list).
      properties:
        vaspId:
          type: string
          maxLength: 100
          description: >-
            VASP ID from `/travel-rule/vasps` endpoint. Use this if the VASP is
            in the list.
          example: vasp-002
        vaspName:
          type: string
          maxLength: 200
          description: VASP name as fallback if not in the list.
          example: Famous Vasp Inc
    TravelRuleAddress:
      type: object
      required:
        - country
        - city
        - addressLine1
      description: Physical address for travel rule compliance
      properties:
        country:
          type: string
          minLength: 3
          maxLength: 3
          description: ISO 3166-1 alpha-3 country code (3 letters)
          example: NLD
        city:
          type: string
          maxLength: 100
          description: City name
          example: Amsterdam
        postCode:
          type: string
          maxLength: 20
          description: Postal code (optional)
          example: '1012'
        addressLine1:
          type: string
          maxLength: 200
          description: Street address
          example: Damrak 1
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-TXC-APIKEY
      description: The public WhiteBIT API key.
    PayloadAuth:
      type: apiKey
      in: header
      name: X-TXC-PAYLOAD
      description: Base64-encoded JSON request body.
    SignatureAuth:
      type: apiKey
      in: header
      name: X-TXC-SIGNATURE
      description: >-
        HMAC-SHA512 signature of the payload, hex-encoded. Computed as
        hex(HMAC-SHA512(payload, api_secret)).

````