# KYC callback

During the KYC process within the SEPA Secure flow, the customer's status can change multiple times. To keep you informed, we will send you a callback whenever there is a status update, along with information about any missing documents or errors that occurred during the KYC.

{% hint style="warning" %}
For the time being, SEPA Secure is provided only within the Checkout flow. There is no need to receive this type of callbacks.&#x20;
{% endhint %}

### Sends the KYC details to you

<mark style="color:green;">`POST`</mark> `https://your-callback-url-here.com/endpoint-to-handle-kyc-status`

#### Request Body

<table><thead><tr><th width="252">Name</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td>callbackType</td><td>"kyc"</td><td>The type of callback</td></tr><tr><td>customerId</td><td>String</td><td>The unique customer ID in the merchant system</td></tr><tr><td>docsMissing</td><td>Array({docType: string}) | null</td><td>The array of missing docs.</td></tr><tr><td>hash</td><td>String</td><td><p>The base64-encoded hash is generated using the sha512 algorithm and includes the customer ID, and secret key.</p><p>The string that will be hashed: <code>{customer ID}.{secretKey}</code>.</p></td></tr><tr><td>kycRejectLabel</td><td>String | null</td><td>The message indicates the reason for rejecting KYC.</td></tr><tr><td>kycEndUserErrorMessage</td><td>String | null</td><td>The message provides a detailed description of the error that occurred during KYC.</td></tr><tr><td>status</td><td>String | null</td><td><p>Status of KYC:</p><ul><li><code>CREATED</code> : KYC user is created via POST /customer/{id}/bank-transfer/user</li><li><code>KYC_NEEDED</code>: KYC process required</li><li><code>PENDING_KYC_DATA</code>: Awaiting KYC data</li><li><code>KYC_PENDING</code>: KYC is in progress</li><li><code>SOFT_KYC_FAILED</code>: Non-critical KYC failure</li><li><code>HARD_KYC_FAILED</code>: Critical KYC failure</li><li><code>FULL_USER</code>: KYC completed successfully</li></ul></td></tr><tr><td>kycProcessingStatus</td><td>String | null</td><td><ul><li><code>null</code> – no request in progress</li><li><code>USER_CREATION_IN_PROGRESS</code></li><li><code>APPLICANT_CREATION_IN_PROGRESS</code></li><li><code>DOCUMENT_UPLOAD_IN_PROGRESS</code></li><li><code>VERIFICATION_IN_PROGRESS</code></li></ul></td></tr></tbody></table>

The callback URL is the URL you provide during the sign-up process.

The callback you get after a confirmed or failed transaction might look like this:

<pre class="language-json"><code class="lang-json">{
  "callbackType": "kyc",
  "customerId": "demo_customer_id",
<strong>  "docsMissing": ["SELFIE", "PASSPORT"],
</strong><strong>  "kycRejectLabel": "BAD_SELFIE, BAD_PASSPORT",
</strong><strong>  "kycEndUserErrorMessage": null,
</strong>  "status": "SOFT_KYC_FAILED",
  "kycProcessingStatus": null
}
</code></pre>

{% hint style="warning" %}
The callback data here is presented only for the demo purpose.
{% endhint %}

You may then handle this information as necessary. You don't need to send us anything back other than a success status so that we know the callback has been received and handled on your side.
