> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rc.cleverhub.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Resend Contact Verification

> This API allows merchants to trigger a re-sending of the identity verification link to a previously created contact. This is useful when the original verification email or SMS was not received, has expired, or the contact needs to restart the verification flow.

The verification link is delivered to the channel specified by `resend_to`:
- `email`: the verification link is emailed to the contact's registered email address.
- `phone`: the verification link is sent via SMS to the contact's registered phone number.

The contact must already exist for the merchant (i.e. previously created via [Create contact](#tag/Contact/operation/create-contact)) before this API can be called.



## OpenAPI

````yaml /api/openapi/v2-reference.yaml post /v2/contacts/resend_verification
openapi: 3.0.2
info:
  title: Multi-currency Payment APIs
  description: >-
    ## Introduction

    The Multi-currency Payment API Solution provides developers with a unified
    API schema to support multiple currencies efficiently. These APIs enable
    seamless transactions for both payin and payout operations, ensuring a
    robust, reliable, and scalable payment infrastructure for businesses dealing
    with various currencies.

    ### Key Features

    - **Single API Schema**: A single schema supports all currencies in your
    account, simplifying integration and management.

    - **Payin and Payout Process**:
      - **Step 1**: Call the **Get payin method list** to retrieve the list of supported methods.
      - **Step 2**: Call the **Get payin required fields** to get specific required fields for each method.
      - **Step 3**: Create the payment using the method and required fields from the previous step.
      - **Step 4**: On the sandbox environment, you can call the **Simulate payin** to simulate the payment.

    <div class="gst-note-red">
      Please note: GST should only be set to <code>true</code> for AU Merchants for <b>AUD</b> currency only. For all other currencies, set GST to <code>false</code>.
    </div>

    This documentation provides detailed guidance for integrating these
    capabilities into your application.
  version: 2.0.0
  termsOfService: https://helloclever.co/terms
  contact:
    email: support@helloclever.co
servers:
  - url: https://api.cleverhub.co/api
    description: Sandbox Environment
  - url: https://api-merchant.helloclever.co/api
    description: Production Environment
security:
  - app-id: []
    secret-key: []
paths:
  /v2/contacts/resend_verification:
    post:
      tags:
        - Contact
      summary: Resend Contact Verification
      description: >-
        This API allows merchants to trigger a re-sending of the identity
        verification link to a previously created contact. This is useful when
        the original verification email or SMS was not received, has expired, or
        the contact needs to restart the verification flow.


        The verification link is delivered to the channel specified by
        `resend_to`:

        - `email`: the verification link is emailed to the contact's registered
        email address.

        - `phone`: the verification link is sent via SMS to the contact's
        registered phone number.


        The contact must already exist for the merchant (i.e. previously created
        via [Create contact](#tag/Contact/operation/create-contact)) before this
        API can be called.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - resend_to
              properties:
                email:
                  type: string
                  description: >-
                    The contact's email used to look up the record on the
                    merchant's account.
                resend_to:
                  type: string
                  description: >-
                    The delivery channel to resend the verification link to.

                    - `email`: send the verification link to the contact's
                    email.

                    - `phone`: send the verification link to the contact's
                    phone.
                  enum:
                    - email
                    - phone
            example:
              email: test@example.com
              resend_to: email
      responses:
        '200':
          description: Verification link or code sent successfully.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  data:
                    type: object
                    properties:
                      message:
                        type: string
                      code:
                        type: string
                        enum:
                          - LINK_SENT
                          - VALIDATION_SKIPPED
              examples:
                link_sent:
                  summary: Email Verification Link Sent
                  value:
                    status: Ok
                    data:
                      message: Email verification link sent
                      code: LINK_SENT
                validation_skipped:
                  summary: Validation skipped for email verification
                  value:
                    status: Ok
                    data:
                      message: Validation skipped for email verification
                      code: VALIDATION_SKIPPED
        '400':
          description: Bad Request
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      code:
                        type: string
                      message:
                        type: string
              example:
                errors:
                  code: REQUIRE_LOGIN
                  message: Not Authorised
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: object
                    properties:
                      message:
                        type: string
              example:
                errors:
                  message: Contact not found
      callbacks:
        KYCStatusChanged:
          '{$request.body#/endpoint_url}':
            post:
              summary: KYC Status Changed Event
              description: >
                When the KYC status changes, Hello Clever will call the
                `endpoint_url` provided in the Submit KYC request. 

                The call will be made using the HTTP POST method.


                The notification will include detailed KYC information for the
                contact, including the updated status (pending, approved,
                failed), and other relevant details.
              parameters:
                - in: header
                  name: Authorization
                  required: true
                  schema:
                    type: string
                    description: >-
                      The value of the `Authorization` header will be taken from
                      `authorization_header` in the Submit KYC payload.
              requestBody:
                required: true
                content:
                  application/json:
                    schema:
                      type: object
                      properties:
                        email:
                          type: string
                          description: Contact's email
                        first_name:
                          type: string
                          description: Contact's first name
                        last_name:
                          type: string
                          description: Contact's last name
                        type:
                          type: string
                          description: >-
                            The type of contact (e.g., individual or
                            organization)
                          example: individual
                          enum:
                            - individual
                            - organization
                        dob:
                          type: string
                          description: Contact date of birth format 'yyyy-mm-dd'
                        phone:
                          type: string
                          description: Contact's phone
                          example: +61-412345678
                        reg_no:
                          type: string
                          description: Contact registration number.
                        gender:
                          type: string
                          example: male
                          description: Contact's gender
                          enum:
                            - male
                            - female
                        street:
                          type: string
                          description: The primary name of an address's street.
                        city:
                          type: string
                          description: Name of an address's city or town.
                        postal_code:
                          type: string
                          description: The address's postcode
                        state:
                          type: string
                          description: The address's state / province / county.
                        country:
                          type: string
                          description: ISO 3166-1 alpha-2 country code.
                        identity:
                          type: object
                          description: >-
                            Contains the most recent KYC submission details for
                            the contact.
                          properties:
                            issue_country:
                              type: string
                              description: ISO 3166-1 alpha-2 country code.
                            id_doc_type:
                              type: string
                              description: Type of identification document
                              enum:
                                - passport
                                - id_card
                                - driving_license
                            document_number:
                              type: string
                              description: ID document number
                            issue_date:
                              type: string
                              description: Format 'yyyy-mm-dd'
                            expiry_date:
                              type: string
                              description: Format 'yyyy-mm-dd'
                        kyc_statuses:
                          type: array
                          description: >-
                            An array of KYC statuses for the contact, containing
                            multiple KYC instances with status and message.
                          items:
                            type: object
                            properties:
                              kyc_status:
                                type: string
                                description: >-
                                  - `pending`: KYC process has been initiated
                                  for the contact, but the verification is not
                                  yet completed. The contact is still in the
                                  process of submitting the necessary documents.

                                  - `failed`: contact was unable to verify the
                                  KYC documents due to invalid, incomplete, or
                                  unclear information. The contact may need to
                                  resubmit the documents.

                                  - `rejected`: KYC has been rejected for future
                                  transactions due to failure in meeting the
                                  required verification criteria. The contact
                                  cannot proceed with any further transactions
                                  until the issue is resolved.

                                  - `manual_review`: The KYC process is under
                                  review by the compliance team to approve or
                                  reject the documents. This status typically
                                  means that the submitted documents need
                                  further examination.

                                  - `blocked`: Contact's KYC has been blocked,
                                  preventing future transactions until further
                                  resolution. The block may be due to suspicious
                                  activity or a need for additional
                                  verification.

                                  - `approved`: Contact has successfully passed
                                  the KYC verification, and future transactions
                                  can proceed without issue. The contact's
                                  identity has been verified and is now
                                  compliant with the platform's standards.
                                enum:
                                  - pending
                                  - failed
                                  - rejected
                                  - manual_review
                                  - blocked
                                  - approved
                              message:
                                type: string
                                description: Message related to the KYC status
                      example:
                        email: test@example.com
                        first_name: Luyx
                        last_name: Tran
                        type: individual
                        dob: '1991-12-24'
                        phone: '+6123224242'
                        reg_no: '123456789'
                        gender: male
                        street: 338 George Street
                        city: Sydney
                        postal_code: '2000'
                        state: New South Wales
                        country: AU
                        identity:
                          issue_country: AU
                          document_number: '12345678'
                          issue_date: '2024-04-16'
                          expiry_date: '2024-04-16'
                          id_doc_type: Passport
                        kyc_statuses:
                          - kyc_status: approved
                            message: 'null'
                          - kyc_status: rejected
                            message: KYC is rejected.
              responses:
                '200':
                  description: The merchant's server should return this code
              method: post
              type: path
            path: '{$request.body#/endpoint_url}'
components:
  securitySchemes:
    app-id:
      type: apiKey
      in: header
      name: app-id
      description: |
        A unique identifier assigned to each application.
    secret-key:
      type: apiKey
      in: header
      name: secret-key
      description: |
        A secure token associated with the `app-id`.

````

## Related topics

- [Resend OTP](/api/mobile-money/resend-otp.md)
- [Create Contact](/api/contact/create-contact.md)
- [Get Contact Details](/api/contact/get-contact-details.md)
