---
title: "Submit KYC verification for a client"
method: POST
path: "/clients/{externalTenantId}/kyc-verification"
tags: ["Clients"]
---

# Submit KYC verification for a client

`POST /clients/{externalTenantId}/kyc-verification`

Submits KYC/AML director verification data for an existing client. Multiple submissions are allowed; the latest record is used for verification checks. When sendChatNotification is true (default), a system message is posted on all active cases for this client to notify the collection partner.

## Path parameters

- `externalTenantId` string, required

## Query parameters

- `sendChatNotification` boolean

## Headers

- `Idempotency-Key` string

## Request body

- DebituraWebReferralPartnerApiModelsClientsSubmitKycVerificationRequest
  - `directorFullName` string, required
  - `directorHomeAddress` string, required
  - `directorDateOfBirth` string, date, required

## Response `201`

KYC verification submitted

- DebituraWebReferralPartnerApiModelsClientsKycVerificationDto
  - `directorFullName` string, nullable
  - `directorHomeAddress` string, nullable
  - `directorDateOfBirth` string, date
  - `dateCreated` string, date-time
  - `verificationStatus` 'Processing' | 'Completed' — Partner/staff-settable review status for a Debitura.Domain.Model.Creditors.CreditorKycVerifications.CreditorKycVerification record. Distinct from the ReferralPartnerApi `KycStatus` enum, which describes whether a client has submitted KYC data at all — this enum describes whether data that has already been submitted has since been reviewed by the collection partner or Debitura staff. The unset/not-yet-reviewed state is represented by a null Debitura.Domain.Model.Creditors.CreditorKycVerifications.CreditorKycVerification.VerificationStatus column, not a third enum value here. A fresh KYC resubmission (a new row via `CreditorKycVerificationService.CreateAsync`) naturally leaves this column unset, resetting review status by design. Wire format is locked to named string values ("Processing", "Completed") via Newtonsoft.Json StringEnumConverter — every host this enum is exposed on (CollectionPartnerApi, CoreApi, ReferralPartnerApi) uses Newtonsoft (AddNewtonsoftJson in Program.cs), so a System.Text.Json JsonStringEnumConverter attribute alone would be silently ignored; both are declared so STJ-based consumers (and our own tests) can also deserialize the string form.
  - `verificationStatusUpdatedAt` string, date-time, nullable — When Debitura.Web.ReferralPartnerApi.Models.Clients.KycVerificationDto.VerificationStatus was last set. Null until set.

## Other responses

- `404` — Client not found
- `500` — Internal server error

---

[API](https://skmtc.net/debitura/apis/debitura-referral-partner-api.md) · [All operations](https://skmtc.net/debitura/apis/debitura-referral-partner-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/debitura/debitura-referral-partner-api/revisions/8d237e9c6592/schema)
