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

# Submit onboarding requirements

> Validates `data` against `requirements.schema` (400 with per-field `details.errors` on failure), forwards it to the banking partner server-to-server together with any uploaded documents, and returns the updated case. Valid while status is `collecting_information` or `action_required`. Identity numbers are masked in stored data; document images are wiped as soon as they are forwarded. Approval is usually asynchronous — listen for `customer_onboarding.approved` / `.rejected` / `.action_required` webhooks.



## OpenAPI

````yaml /api-reference/openapi.json post /v1/customers/{customerId}/onboarding-requests/{caseId}/submit
openapi: 3.0.3
info:
  title: XentFi API
  version: 1.0.0
  description: >-
    API documentation for XentFi.The XentFi API gives you access to pretty much
    all the features you can use on our dashboard and lets you extend them for
    use in your application. It strives to be RESTful and is organized around
    the main resources you would be interacting with - with a few notable
    exceptions.
servers:
  - url: https://api.xentfi.com
    description: Production server
security: []
tags: []
paths:
  /v1/customers/{customerId}/onboarding-requests/{caseId}/submit:
    post:
      tags:
        - Customer Onboarding
      summary: Submit onboarding requirements
      description: >-
        Validates `data` against `requirements.schema` (400 with per-field
        `details.errors` on failure), forwards it to the banking partner
        server-to-server together with any uploaded documents, and returns the
        updated case. Valid while status is `collecting_information` or
        `action_required`. Identity numbers are masked in stored data; document
        images are wiped as soon as they are forwarded. Approval is usually
        asynchronous — listen for `customer_onboarding.approved` / `.rejected` /
        `.action_required` webhooks.
      operationId: submitOnboardingRequest
      parameters:
        - name: customerId
          in: path
          required: true
          schema:
            type: string
            format: uuid
        - name: caseId
          in: path
          required: true
          schema:
            type: string
            format: uuid
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - data
              properties:
                data:
                  oneOf:
                    - type: object
                      required:
                        - firstName
                        - lastName
                        - birthDate
                        - residentialAddress
                        - identifyingInformation
                        - signedAgreementId
                      properties:
                        firstName:
                          type: string
                        lastName:
                          type: string
                        birthDate:
                          type: string
                          format: date
                        residentialAddress:
                          type: object
                          required:
                            - streetLine1
                            - city
                            - country
                          properties:
                            streetLine1:
                              type: string
                            streetLine2:
                              type: string
                            city:
                              type: string
                            subdivision:
                              type: string
                            postalCode:
                              type: string
                            country:
                              type: string
                              pattern: ^[A-Z]{3}$
                              example: USA
                        identifyingInformation:
                          type: array
                          minItems: 1
                          items:
                            type: object
                            required:
                              - type
                              - issuingCountry
                            description: Provide `number`, `documentFront`, or both.
                            properties:
                              type:
                                type: string
                                enum:
                                  - ssn
                                  - passport
                                  - drivers_license
                                  - national_id
                                  - tax_id
                              issuingCountry:
                                type: string
                                pattern: ^[A-Z]{3}$
                              number:
                                type: string
                              documentFront:
                                type: string
                                format: uuid
                                description: uploadId
                              documentBack:
                                type: string
                                format: uuid
                                description: uploadId
                        signedAgreementId:
                          type: string
                        employmentStatus:
                          type: string
                        mostRecentOccupation:
                          type: string
                        expectedMonthlyPayments:
                          type: string
                        sourceOfFunds:
                          type: string
                        accountPurpose:
                          type: string
                        accountPurposeOther:
                          type: string
                        actingAsIntermediary:
                          type: boolean
                    - type: object
                      required:
                        - businessLegalName
                        - businessType
                        - registeredAddress
                        - taxIdentification
                        - associatedPersons
                        - signedAgreementId
                      properties:
                        businessLegalName:
                          type: string
                        businessType:
                          type: string
                        businessDescription:
                          type: string
                        primaryWebsite:
                          type: string
                          format: uri
                        incorporationDate:
                          type: string
                          format: date
                        registeredAddress:
                          type: object
                          required:
                            - streetLine1
                            - city
                            - country
                          properties:
                            streetLine1:
                              type: string
                            streetLine2:
                              type: string
                            city:
                              type: string
                            subdivision:
                              type: string
                            postalCode:
                              type: string
                            country:
                              type: string
                              pattern: ^[A-Z]{3}$
                              example: USA
                        taxIdentification:
                          type: object
                          required:
                            - type
                            - issuingCountry
                            - number
                          properties:
                            type:
                              type: string
                              enum:
                                - ein
                                - tax_id
                            issuingCountry:
                              type: string
                            number:
                              type: string
                        associatedPersons:
                          type: array
                          minItems: 1
                          items:
                            type: object
                            required:
                              - firstName
                              - lastName
                              - birthDate
                              - residentialAddress
                              - identifyingInformation
                            properties:
                              firstName:
                                type: string
                              lastName:
                                type: string
                              birthDate:
                                type: string
                                format: date
                              title:
                                type: string
                              hasOwnership:
                                type: boolean
                              ownershipPercentage:
                                type: number
                              hasControl:
                                type: boolean
                              residentialAddress:
                                type: object
                                required:
                                  - streetLine1
                                  - city
                                  - country
                                properties:
                                  streetLine1:
                                    type: string
                                  streetLine2:
                                    type: string
                                  city:
                                    type: string
                                  subdivision:
                                    type: string
                                  postalCode:
                                    type: string
                                  country:
                                    type: string
                                    pattern: ^[A-Z]{3}$
                                    example: USA
                              identifyingInformation:
                                type: array
                                minItems: 1
                                items:
                                  type: object
                                  required:
                                    - type
                                    - issuingCountry
                                  description: Provide `number`, `documentFront`, or both.
                                  properties:
                                    type:
                                      type: string
                                      enum:
                                        - ssn
                                        - passport
                                        - drivers_license
                                        - national_id
                                        - tax_id
                                    issuingCountry:
                                      type: string
                                      pattern: ^[A-Z]{3}$
                                    number:
                                      type: string
                                    documentFront:
                                      type: string
                                      format: uuid
                                      description: uploadId
                                    documentBack:
                                      type: string
                                      format: uuid
                                      description: uploadId
                        signedAgreementId:
                          type: string
                  description: >-
                    Must satisfy the case's `requirements.schema` (which one
                    depends on the customer's `type`).
      responses:
        '200':
          description: Submission result
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      initiated:
                        type: boolean
                      case:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          customerId:
                            type: string
                            format: uuid
                          feature:
                            type: string
                            enum:
                              - WIRE
                              - SEPA
                            description: USD → WIRE, EUR → SEPA
                          currency:
                            type: string
                          mode:
                            type: string
                            enum:
                              - api_only
                          status:
                            type: string
                            enum:
                              - draft
                              - collecting_information
                              - submitted
                              - action_required
                              - in_review
                              - approved
                              - rejected
                              - failed
                              - expired
                          requirements:
                            type: object
                            properties:
                              mode:
                                type: string
                              status:
                                type: string
                                enum:
                                  - draft
                                  - collecting_information
                                  - submitted
                                  - action_required
                                  - in_review
                                  - approved
                                  - rejected
                                  - failed
                                  - expired
                              schema:
                                type: object
                                nullable: true
                                description: >-
                                  JSON Schema Draft 07 for the `data` you
                                  submit. Null once approved.
                          outstandingRequirements:
                            type: array
                            items:
                              type: string
                          rejectionReason:
                            type: string
                            nullable: true
                          submissionCount:
                            type: integer
                          submittedData:
                            type: object
                            nullable: true
                            description: >-
                              Echo of your submission with identity numbers
                              masked
                          createdAt:
                            type: string
                            format: date-time
                          updatedAt:
                            type: string
                            format: date-time
                      customer:
                        type: object
                        properties:
                          id:
                            type: string
                            format: uuid
                          name:
                            type: string
                            nullable: true
                          email:
                            type: string
                          phone:
                            type: string
                            nullable: true
                          type:
                            type: string
                            enum:
                              - individual
                              - business
                          status:
                            type: string
                            enum:
                              - ACTIVE
                              - INACTIVE
                          kycStatus:
                            type: string
                            enum:
                              - not_started
                              - incomplete
                              - in_review
                              - approved
                              - rejected
                              - restricted
                          capabilities:
                            type: object
                            description: What this customer is currently approved to do
                            properties:
                              wire:
                                type: boolean
                              sepa:
                                type: boolean
                          metadata:
                            type: object
                            nullable: true
                          createdAt:
                            type: string
                            format: date-time
                          updatedAt:
                            type: string
                            format: date-time
        '400':
          description: Schema validation failed or provider rejected the data
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: Wallet not found
                      timestamp:
                        type: string
                        format: date-time
                      requestId:
                        type: string
        '409':
          description: Case not accepting submissions
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: object
                    properties:
                      code:
                        type: string
                        example: NOT_FOUND
                      message:
                        type: string
                        example: Wallet not found
                      timestamp:
                        type: string
                        format: date-time
                      requestId:
                        type: string
      security:
        - ApiKeyAuth: []
          OrgIdAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apiKey
    OrgIdAuth:
      type: apiKey
      in: header
      name: orgId

````

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