# Initiate KYC verification

The following API is the final step of passing a KYC - it initiates verification of all provided data. It should be used only within [SEPA Secure host-to-host flow](https://docs.xgateway.tech/integration-guides/sepa-secure-payments-using-host-to-host) and only after a merchant provides all required data for a customer.

{% hint style="warning" %}
The endpoint always returns 204 status code.&#x20;

The Verification results are delivered asynchronously via [**callbacks**](https://docs.xgateway.tech/miscellaneous/how-to-process-the-callback/kyc-callback)**.**&#x20;

An additional way to confirm the KYC status is using this [API](https://docs.xgateway.tech/miscellaneous/sepa-secure-service-api/check-kyc-status).&#x20;
{% endhint %}

{% hint style="danger" %}
The response for this API may take several minutes in some cases.
{% endhint %}

## Start a KYC verification for a customer.

> Starts a KYC (Know Your Customer) verification process for the specified customer.\
> \
> This endpoint starts SumSub KYC verification using the\
> customer’s uploaded documents and profile data. It should be called after the customer\
> has uploaded all required KYC documents and accepted the necessary compliance agreements.\
> \
> Access to this endpoint requires a valid API key, provided via the \`x-api-key\` header.\
> \
> Preconditions for successful verification:\
> \- The customer must have a user profile (see POST /customer/{id}/bank-transfer/user).\
> \- The customer must have a KYC applicant (see POST /customer/{id}/bank-transfer/kyc/applicant).\
> \- The customer must have uploaded all required KYC documents.\
> \- The customer must have accepted compliance agreements (Privacy Policy, Terms of Service, etc.).\
> \- The customer must currently have a KYC status of \`KYC\_PENDING\`, \`PENDING\_KYC\_DATA\`, or \`SOFT\_KYC\_FAILED\`.

```json
{"openapi":"3.0.0","info":{"title":"x-gateway-external-api","version":"0.0.1"},"servers":[{"url":"https://api.xgateway.tech/api/v2"}],"security":[{"api_key":[]}],"components":{"securitySchemes":{"api_key":{"in":"header","name":"x-api-key","type":"apiKey"}},"schemas":{"AppSuccessResponse_string_":{"description":"The AppSuccessResponse object contains general information about the success execution.","properties":{"success":{"type":"boolean","default":true},"data":{"type":"string"}},"required":["success","data"],"type":"object","additionalProperties":false},"AppErrorResponse":{"description":"The AppErrorResponse object contains general information about the error message.","properties":{"success":{"type":"boolean","default":false},"errors":{"items":{"$ref":"#/components/schemas/IAppError"},"type":"array"}},"required":["success","errors"],"type":"object","additionalProperties":false},"IAppError":{"description":"The IAppError interface represents an application error message.","properties":{"code":{"anyOf":[{"$ref":"#/components/schemas/AppClientErrorResponseCode"},{"$ref":"#/components/schemas/AppServerErrorResponseCode"}]},"message":{"type":"string"}},"required":["code","message"],"type":"object","additionalProperties":false},"AppClientErrorResponseCode":{"type":"string","enum":["bad_request","db_violation","unauthorized","payment_required","forbidden","not_found","method_not_allowed","not_acceptable","proxy_authentication_required","request_timeout","conflict","db_unique_violation","gone","length_required","precondition_failed","payload_too_large","uri_too_long","unsupported_media_type","range_not_satisfiable","expectation_failed","misdirected_request","unprocessable_content","db_non_null_violation","locked","failed_dependency","upgrade_required","precondition_required","too_many_requests","request_header_fields_too_large","unavailable_for_legal_reasons"],"nullable":false,"description":"The AppClientErrorResponseCode object contains all client error response codes."},"AppServerErrorResponseCode":{"type":"string","enum":["internal_server_error","not_implemented","bad_gateway","service_unavailable","gateway_timeout","http_version_not_supported","variant_also_negotiates","insufficient_storage","loop_detected","not_extended","network_authentication_required"],"nullable":false,"description":"The AppServerErrorResponseCode object contains all server error response codes."},"AppAuthenticationErrorResponse":{"description":"The AppAuthenticationErrorResponse object contains general information about the authentication\nerror.","properties":{"success":{"type":"boolean","default":false},"errors":{"items":{"$ref":"#/components/schemas/IAppError"},"type":"array","default":[{"code":"unauthorized","message":"You do not have permission to access this resource."}]}},"required":["success","errors"],"type":"object","additionalProperties":false}}},"paths":{"/customer/{id}/bank-transfer/kyc/verification":{"post":{"operationId":"StartKycVerification","responses":{"204":{"description":"KYC verification started","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppSuccessResponse_string_"}}}},"400":{"description":"Database violation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppAuthenticationErrorResponse"}}}},"500":{"description":"Internal server error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AppErrorResponse"}}}}},"description":"Starts a KYC (Know Your Customer) verification process for the specified customer.\n\nThis endpoint starts SumSub KYC verification using the\ncustomer’s uploaded documents and profile data. It should be called after the customer\nhas uploaded all required KYC documents and accepted the necessary compliance agreements.\n\nAccess to this endpoint requires a valid API key, provided via the `x-api-key` header.\n\nPreconditions for successful verification:\n- The customer must have a user profile (see POST /customer/{id}/bank-transfer/user).\n- The customer must have a KYC applicant (see POST /customer/{id}/bank-transfer/kyc/applicant).\n- The customer must have uploaded all required KYC documents.\n- The customer must have accepted compliance agreements (Privacy Policy, Terms of Service, etc.).\n- The customer must currently have a KYC status of `KYC_PENDING`, `PENDING_KYC_DATA`, or `SOFT_KYC_FAILED`.","summary":"Start a KYC verification for a customer.","tags":["Customer"],"parameters":[{"description":"- The external identifier of the customer for whom KYC verification is being started.","in":"path","name":"id","required":true,"schema":{"type":"string"}}]}}}}
```
