> ## 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.

# Create Contact

> When processing a `Payin` or `Payout` transaction, if the `require_contact` parameter is `true`, you need to create a new contact before proceeding with the transaction. Each contact will have a unique email associated with it, ensuring that the user’s information is complete before continuing with the payment process. This email will be used during the process of calling the API to create a `Payin` or `Payout` transaction.

After successfully creating the contact, you need to perform `KYC (Know Your Customer)` verification for this contact if the `Payin` or `Payout` methods require KYC(`require_kyc == true`). This will be done through the `Submit KYC API` provided below. If KYC is not required, you can proceed with the transaction process without further verification. Ensure that these steps are completed thoroughly and accurately to maintain security and compliance. Wishing you success in carrying out this process!



## OpenAPI

````yaml /api/openapi/v2-reference.yaml post /v2/contacts
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:
    post:
      tags:
        - Contact
      summary: Create Contact
      description: >-
        When processing a `Payin` or `Payout` transaction, if the
        `require_contact` parameter is `true`, you need to create a new contact
        before proceeding with the transaction. Each contact will have a unique
        email associated with it, ensuring that the user’s information is
        complete before continuing with the payment process. This email will be
        used during the process of calling the API to create a `Payin` or
        `Payout` transaction.


        After successfully creating the contact, you need to perform `KYC (Know
        Your Customer)` verification for this contact if the `Payin` or `Payout`
        methods require KYC(`require_kyc == true`). This will be done through
        the `Submit KYC API` provided below. If KYC is not required, you can
        proceed with the transaction process without further verification.
        Ensure that these steps are completed thoroughly and accurately to
        maintain security and compliance. Wishing you success in carrying out
        this process!
      operationId: createContact
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - email
                - first_name
                - last_name
                - phone
                - dob
                - type
                - reg_no
                - gender
                - street
                - city
                - postal_code
                - state
                - country
              properties:
                email:
                  type: string
                  description: >-
                    Contact's email. This email will be used during the process
                    of calling the API to create a `Payin` or `Payout`
                    transaction. A new contact must be created to continue the
                    payment process.
                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's date of birth, format 'yyyy-mm-dd'
                reg_no:
                  type: string
                  description: >-
                    Contact registration number, required if `type` is
                    `organization`
                phone:
                  type: string
                  description: Contact's phone number
                  example: '+1234567890'
                gender:
                  type: string
                  example: male
                  description: Contact's gender
                  enum:
                    - male
                    - female
                street:
                  type: string
                  description: The primary name of an address's street for the contact.
                city:
                  type: string
                  description: Name of an address's city or town for the contact.
                postal_code:
                  type: string
                  description: The contact's address's postcode
                state:
                  type: string
                  description: The contact's address's state / province / county.
                country:
                  type: string
                  description: ISO 3166-1 alpha-2 country code of the contact's country.
              example:
                email: test@example.com
                first_name: Luxy
                last_name: Tran
                type: individual
                dob: '1991-12-24'
                reg_no: '123456789'
                phone: '+6123224242'
                gender: male
                street: 338 George Street
                city: Sydney
                postal_code: '2000'
                state: New South Wales
                country: AU
      responses:
        '200':
          description: Created
          content:
            application/json:
              schema:
                type: object
                properties:
                  email:
                    type: string
              example:
                email: test@example.com
        '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: Email can't be blank
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 Contact Verification](/api/contact/resend-contact-verification.md)
- [Create a Payin](/api/payin/create-a-payin.md)
- [Create a Payout](/api/payout/create-a-payout.md)
