Due

Due KYC API

The KYC API from Due — 15 operation(s) for kyc.

OpenAPI Specification

due-kyc-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Due Account KYC API
  version: v1
  description: 'Due provides borderless payment infrastructure: cross-border transfers, fiat<->stablecoin on/off-ramps, virtual accounts, FX rates, KYC/KYB onboarding, non-custodial MPC wallets (Vault), and webhooks. Assembled by API Evangelist from Due''s per-operation OpenAPI fragments published on due.readme.io.'
  contact:
    email: demo@due.network
    url: https://www.opendue.com
servers:
- url: https://api.due.network
  description: Production
- url: https://api.sandbox.due.network
  description: Sandbox
security:
- BearerAuth: []
tags:
- name: KYC
paths:
  /v1/kyc/submissions:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    get:
      summary: List open submissions
      tags:
      - KYC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: get_v1-kyc-submissions
  /v1/kyc:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    get:
      summary: Get standard KYC/KYB link
      description: Retrieve standard KYC/KYB details and link.
      tags:
      - KYC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transfers_models.SumsubKYC'
      operationId: get_v1-kyc
    post:
      summary: Initiate standard KYC/KYB
      description: Initiate standard KYC/KYB for an account.
      tags:
      - KYC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc
  /v1/kyc/session:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Create a KYC/KYB access session
      description: Creates a session to access KYC/KYB access token and link
      tags:
      - KYC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transfers_models_v2.KYCSession'
      operationId: post_v1-kyc-session
  /v1/kyc/sharing/sumsub:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Share Sumsub KYC
      description: Share an existing Sumsub applicant
      tags:
      - KYC
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/transfers_dto.ShareSumsubKYCRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/transfers_models_v2.SumsubSharedKYC'
      operationId: post_v1-kyc-sharing-sumsub
  /v1/kyc/submissions/documents/{token}:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Upload verification documents
      tags:
      - KYC
      parameters:
      - in: path
        name: token
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-documents-token
  /v1/kyc/submissions/{submissionId}/applicants:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Create child applicant
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kyc_dto.CreateChildApplicantRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-submissionid-applicants
  /v1/kyc/submissions/{submissionId}/complete:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Complete applicant submission
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-submissionid-complete
  /v1/kyc/submissions/{submissionId}/documents:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Request verification document upload token
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kyc_dto.KYCDocumentUploadTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_dto.DocumentUploadToken'
      operationId: post_v1-kyc-submissions-submissionid-documents
  /v1/kyc/submissions/{submissionId}/info:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Provide applicant information
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kyc_entities.ApplicantInfo'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-submissionid-info
  /v1/kyc/submissions/{submissionId}/questionnaires:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Add questionnaire answers
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kyc_questionnaire.QuestionnaireAnswered'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-submissionid-questionnaires
  /v1/kyc/submissions/{submissionId}/relations:
    parameters:
    - $ref: '#/components/parameters/DueAccountIdHeader'
    post:
      summary: Set submission relations
      tags:
      - KYC
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/kyc_entities.Beneficiary'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      operationId: post_v1-kyc-submissions-submissionid-relations
  /v1/kyc/endorsements/{code}:
    get:
      parameters:
      - in: path
        name: code
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Endorsement'
      operationId: get_v1-kyc-endorsements-code
      tags:
      - KYC
    post:
      parameters:
      - in: path
        name: code
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Endorsement'
      operationId: post_v1-kyc-endorsements-code
      tags:
      - KYC
  /v1/kyc/endorsements:
    get:
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/kyc_entities.Endorsement'
      operationId: get_v1-kyc-endorsements
      tags:
      - KYC
  /v1/kyc/submissions/{submissionId}:
    get:
      parameters:
      - in: path
        name: submissionId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kyc_entities.Submission'
      summary: Get submission
      operationId: get_v1-kyc-submissions-submissionid
      tags:
      - KYC
  /v1/kyc/sessions:
    post:
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kyc_dto.KYCSessionCreateRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/due_jwt.JwtToken'
      summary: Create KYC session
      operationId: post_v1-kyc-sessions
      tags:
      - KYC
components:
  schemas:
    kyc_required_info.Address:
      type: object
      properties:
        country:
          type: string
        postCode:
          type: string
        town:
          type: string
        street:
          type: string
        subStreet:
          type: string
        state:
          type: string
        stateCode:
          type: string
        buildingName:
          type: string
        flatNumber:
          type: string
        buildingNumber:
          type: string
      required:
      - postCode
      - town
      - street
    kyc_questionnaire.Question:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        description:
          type: string
        requiredWhen:
          $ref: '#/components/schemas/kyc_questionnaire.RequiredCondition'
        schema:
          oneOf:
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionDateTime'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionFiles'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionBoolean'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionText'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionDate'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionTime'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoice'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionAccountCategory'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionMultipleChoice'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionMultipleCountries'
          - $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionNumber'
          discriminator:
            propertyName: type
            mapping:
              account_category: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionAccountCategory'
              boolean: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionBoolean'
              choice: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoice'
              date: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionDate'
              datetime: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionDateTime'
              files: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionFiles'
              multiple_choice: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionMultipleChoice'
              multiple_countries: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionMultipleCountries'
              number: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionNumber'
              text: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionText'
              time: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionTime'
    kyc_questionnaire.Answer:
      type: object
      properties:
        id:
          type: string
        value:
          type: array
          items:
            type: string
    kyc_questionnaire.KYCQuestionnaireQuestionTime:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
        type:
          type: string
      required:
      - type
    transfers_models_v2.SumsubSharedKYC:
      type: object
      properties:
        status:
          type: string
        submissionId:
          type: string
    kyc_questionnaire.KYCQuestionnaireQuestionAccountCategory:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoiceOption'
        resourceURL:
          type: string
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionChoice:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoiceOption'
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionDate:
      type: object
      properties:
        from:
          type: string
        to:
          type: string
        type:
          type: string
      required:
      - type
    kyc_document.KYCDocumentRequirementSet:
      type: object
      properties:
        category:
          type: string
        oneOf:
          type: array
          items:
            $ref: '#/components/schemas/kyc_document.KYCDocumentRequirement'
    kyc_entities.RequirementsSchemaConditional:
      type: object
      properties:
        if:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
            discriminator:
              propertyName: kind
              mapping:
                conditional: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
                oneOf: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
                static: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
        then:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
            discriminator:
              propertyName: kind
              mapping:
                conditional: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
                oneOf: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
                static: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
        kind:
          type: string
      required:
      - kind
    transfers_models.SumsubKYC:
      type: object
      properties:
        id:
          type: string
        type:
          type: string
        email:
          type: string
        applicantId:
          type: string
        externalLink:
          type: string
        status:
          type: string
          enum:
          - pending
          - resubmission_required
          - passed
          - failed
        country:
          type: string
        token:
          type: string
        primaryEntity:
          $ref: '#/components/schemas/transfers_models.LegalEntity'
    kyc_questionnaire.KYCQuestionnaireQuestionDateTime:
      type: object
      properties:
        from:
          type: string
          format: date-time
        to:
          type: string
          format: date-time
        type:
          type: string
      required:
      - type
    kyc_required_info.Location:
      type: object
      properties:
        latitude:
          type: string
        longitude:
          type: string
      required:
      - latitude
      - longitude
    transfers_dto.ShareSumsubKYCRequest:
      type: object
      properties:
        shareToken:
          type: string
        applicantInfo:
          $ref: '#/components/schemas/kyc_entities.ApplicantInfo'
        questionnaire:
          $ref: '#/components/schemas/kyc_questionnaire.QuestionnaireAnswered'
    kyc_document.KYCDocumentRequirement:
      type: object
      properties:
        type:
          type: string
        variants:
          type: array
          items:
            type: string
    kyc_entities.Endorsement:
      type: object
      properties:
        ownerId:
          type: string
        code:
          type: string
        status:
          type: string
        submission:
          $ref: '#/components/schemas/kyc_entities.Submission'
    kyc_questionnaire.QuestionnaireAnswered:
      type: object
      properties:
        id:
          type: string
        templateId:
          type: string
        answers:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.Answer'
    due_reflect.FieldDescriptor:
      type: object
      properties:
        key:
          type: string
        type:
          type: string
        oneOf:
          type: array
          items:
            type: string
        required:
          type: boolean
        requiredIf:
          type: string
        excludedUnless:
          type: string
        fields:
          type: array
          items:
            $ref: '#/components/schemas/due_reflect.FieldDescriptor'
    transfers_models.LegalEntity:
      type: object
      properties:
        name:
          type: string
        tosLink:
          type: string
        privacyPolicyLink:
          type: string
        country2:
          type: string
    kyc_document.KYCDocument:
      type: object
      properties:
        filename:
          type: string
        type:
          type: string
        variant:
          type: string
        issuingCountry:
          type: string
    kyc_entities.Beneficiary:
      type: object
      properties:
        applicantId:
          type: string
        roles:
          type: array
          items:
            type: string
        shareSize:
          type: string
    kyc_dto.DocumentUploadToken:
      type: object
      properties:
        token:
          type: string
    kyc_questionnaire.RequiredCondition:
      type: object
      properties:
        id:
          type: string
        value:
          type: string
    kyc_questionnaire.QuestionnaireTemplate:
      type: object
      properties:
        templateId:
          type: string
        questions:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.Question'
    kyc_dto.KYCDocumentUploadTokenRequest:
      type: object
      properties:
        type:
          type: string
        variant:
          type: string
        issuingCountry:
          type: string
        filename:
          type: string
        extractedData:
          type: object
          properties:
            number:
              type: string
            serialNumber:
              type: string
            issuedAt:
              type: string
              format: date
            expiresAt:
              type: string
              format: date
            mrz:
              type: array
              items:
                type: string
      required:
      - type
      - issuingCountry
      - filename
    kyc_questionnaire.KYCQuestionnaireQuestionMultipleCountries:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoiceOption'
        min:
          type: integer
          format: int32
        max:
          type: integer
          format: int32
        resourceURL:
          type: string
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionChoiceOption:
      type: object
      properties:
        id:
          type: string
        label:
          type: string
    kyc_entities.Submission:
      type: object
      properties:
        id:
          type: string
        ownerId:
          type: string
        applicantId:
          type: string
        status:
          type: string
        info:
          $ref: '#/components/schemas/kyc_entities.ApplicantInfo'
        requirements:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
            discriminator:
              propertyName: kind
              mapping:
                conditional: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
                oneOf: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
                static: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
        documents:
          type: array
          items:
            $ref: '#/components/schemas/kyc_document.KYCDocument'
        questionnaires:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.QuestionnaireAnswered'
        presetCode:
          type: string
    kyc_dto.KYCSessionCreateRequest:
      type: object
      properties:
        submissionId:
          type: string
    kyc_entities.RequirementsSchemaOneOf:
      type: object
      properties:
        oneOf:
          type: array
          items:
            oneOf:
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
            - $ref: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
            discriminator:
              propertyName: kind
              mapping:
                conditional: '#/components/schemas/kyc_entities.RequirementsSchemaConditional'
                oneOf: '#/components/schemas/kyc_entities.RequirementsSchemaOneOf'
                static: '#/components/schemas/kyc_entities.RequirementsSchemaStatic'
        kind:
          type: string
      required:
      - kind
    kyc_dto.CreateChildApplicantRequest:
      type: object
      properties:
        type:
          type: string
        roles:
          type: array
          items:
            type: string
    kyc_entities.RequirementsSchemaStatic:
      type: object
      properties:
        info:
          type: array
          items:
            $ref: '#/components/schemas/due_reflect.FieldDescriptor'
        documents:
          type: array
          items:
            $ref: '#/components/schemas/kyc_document.KYCDocumentRequirementSet'
        questionnaires:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.QuestionnaireTemplate'
        kind:
          type: string
      required:
      - kind
    kyc_entities.ApplicantInfo:
      type: object
      properties:
        firstName:
          type: string
        lastName:
          type: string
        dob:
          type: string
        companyName:
          type: string
        registrationNumber:
          type: string
        address:
          $ref: '#/components/schemas/kyc_required_info.Address'
        bvn:
          type: string
        entityType:
          type: string
        nationality:
          type: string
        phone:
          type: string
        postalAddress:
          type: string
        ssn:
          type: string
        tin:
          type: string
        cpf:
          type: string
        website:
          type: string
        location:
          $ref: '#/components/schemas/kyc_required_info.Location'
      required:
      - firstName
      - lastName
      - dob
      - companyName
      - registrationNumber
      - address
      - bvn
      - entityType
      - nationality
      - phone
      - postalAddress
      - ssn
      - tin
      - cpf
      - website
    transfers_models_v2.KYCSession:
      type: object
      properties:
        link:
          type: string
        accessToken:
          type: string
    kyc_questionnaire.KYCQuestionnaireQuestionBoolean:
      type: object
      properties:
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionMultipleChoice:
      type: object
      properties:
        options:
          type: array
          items:
            $ref: '#/components/schemas/kyc_questionnaire.KYCQuestionnaireQuestionChoiceOption'
        min:
          type: integer
          format: int32
        max:
          type: integer
          format: int32
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionFiles:
      type: object
      properties:
        max:
          type: integer
          format: int32
        type:
          type: string
      required:
      - type
    due_jwt.JwtToken:
      type: object
      properties:
        token:
          type: string
    kyc_questionnaire.KYCQuestionnaireQuestionNumber:
      type: object
      properties:
        min:
          type: number
          format: double
        max:
          type: number
          format: double
        type:
          type: string
      required:
      - type
    kyc_questionnaire.KYCQuestionnaireQuestionText:
      type: object
      properties:
        format:
          type: string
        type:
          type: string
      required:
      - type
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer