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