> ## Documentation Index
> Fetch the complete documentation index at: https://developer.utgl.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Initiate Card Binding Process

> **Initiates Card Binding.**
To initiate the card binding process, send the customer's full **PAN** within the payload.
The response will include:
  - **`verificationId`**: A unique identifier for this binding attempt.
  - **`code`**: The verification code for confirmation.
Ensure that the verification code is securely transmitted and not logged.




## OpenAPI

````yaml /merchant/partner-connect/partner-connect.yaml post /partner-connect/card-binding/initiate
openapi: 3.0.2
info:
  title: Partner Connect API Reference
  description: >
    # Partner Connect API Documentation


    Welcome to the Partner Connect API documentation. This API allows external
    partners (merchants, service providers) to integrate with our card services
    for binding customer cards and processing transactions.


    ## Key Features:

    - Secure Card Binding: Link customer payment cards to your system securely.

    - Transaction Processing: Authorize, capture, void, and refund payments
    using bound cards.


    ## Notes for API Integration

    - **Authentication:** Requests must be authenticated using either HTTP Basic
    Auth or Bearer Token (JWT), as specified in the `securitySchemes`.

    - **Error Handling:** The API uses standard HTTP status codes. Specific
    error details are provided in the response body with `code` and `message`
    fields. Refer to the `components/schemas/ErrorPartnerConnect...` definitions
    and the specific endpoint `responses` for details on possible errors.

    - **Idempotency:** Where applicable (e.g., transaction initiation), consider
    implementing idempotency checks on your side using unique request
    identifiers if needed, although the API itself may handle idempotency for
    certain operations like binding initiation.
  version: '1.0'
servers:
  - url: tbc
security:
  - Basic: []
  - Bearer: []
tags:
  - name: Partner Connect
    description: >-
      Endpoints for integrating partner systems with card services, including
      card binding and transaction processing.
paths:
  /partner-connect/card-binding/initiate:
    post:
      tags:
        - Card Binding
      summary: Initiate Card Binding Process
      description: >
        **Initiates Card Binding.**

        To initiate the card binding process, send the customer's full **PAN**
        within the payload.

        The response will include:
          - **`verificationId`**: A unique identifier for this binding attempt.
          - **`code`**: The verification code for confirmation.
        Ensure that the verification code is securely transmitted and not
        logged.
      requestBody:
        required: true
        description: The request body MUST contain the customer's full PAN.
        content:
          application/json:
            schema:
              type: object
              required:
                - fullPan
              properties:
                fullPan:
                  type: string
                  description: Full primary account number.
                  example: '5123888812341234'
      responses:
        '200':
          description: >-
            Card binding process initiated successfully. The response contains
            the `verificationId` and `code` required to complete the binding via
            the `/confirm` endpoint, along with card metadata.
          content:
            application/json:
              schema:
                type: object
                properties:
                  verificationId:
                    description: >-
                      A unique identifier (UUID) representing this specific
                      binding attempt. Store this ID and use it in the
                      `/confirm` request.
                    type: string
                    format: uuid
                  code:
                    description: >-
                      The verification code generated for the cardholder. This
                      code MUST be securely obtained from the cardholder (e.g.,
                      they enter it into your interface after receiving it via
                      SMS/email) and sent in the `/confirm` request. **Do not
                      log or store this code.**
                    type: string
                  codeExpiry:
                    description: >-
                      The timestamp (ISO 8601 format) when the `verificationId`
                      and `code` expire. The confirmation step must be completed
                      before this time.
                    type: string
                    format: date-time
                    pattern: >-
                      ^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}(?::?\d{2})?)$
                  maskedPan:
                    description: >-
                      The card's PAN, masked for display purposes (e.g., showing
                      only the first 6 and last 4 digits). Useful for showing
                      the customer which card is being bound.
                    type: string
                    example: 545188******0110
                  contactNumber:
                    description: >-
                      The cardholder's registered contact number (partially
                      masked or full, depending on configuration), typically
                      where the verification code is sent.
                    type: string
                    example: 85260001235
                  cardFace:
                    description: >-
                      A URL pointing to an image representing the card's brand
                      (e.g., Visa, Mastercard logo).
                    type: string
                    format: url
                required:
                  - verificationId
                  - code
                  - codeExpiry
                  - maskedPan
                  - contactNumber
                  - cardFace
        '400':
          description: >-
            Bad Request. Could be due to an invalid PAN format (`INVALID_PAN`)
            within the payload, or other issues like malformed JSON or failed
            decryption.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorPartnerConnectInvalidPanFormat'
        '404':
          description: >-
            Card Not Found. The PAN provided in the payload does not correspond
            to a known card eligible for binding in the system
            (`CARD_NOT_FOUND`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorPartnerConnectCardNotFound'
        '409':
          description: >-
            Conflict. A binding request for this PAN is already in progress
            (`BINDING_REQUEST_ALREADY_EXISTS`). Wait for the existing request to
            be confirmed or expire.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/ErrorPartnerConnectBindingRequestAlreadyExists
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    ErrorPartnerConnectInvalidPanFormat:
      description: >
        The provided **PAN** is not in the expected format.

        Confirm that it contains the correct number of digits and meets the
        required length.
      type: object
      properties:
        code:
          type: string
          description: Error code, i.e. `INVALID_PAN`.
          default: INVALID_PAN
        message:
          type: string
          description: Human-readable error explanation.
          default: Invalid PAN format.
    ErrorPartnerConnectCardNotFound:
      description: >
        **The specified card was not found.**

        The provided **PAN** or **Card ID** does not match any record eligible
        for binding.
      type: object
      properties:
        code:
          type: string
          description: Error code, i.e. `CARD_NOT_FOUND`.
          default: CARD_NOT_FOUND
        message:
          type: string
          description: Human-readable error explanation.
          default: Card not found. Verify the PAN or Card ID.
    ErrorPartnerConnectBindingRequestAlreadyExists:
      description: >
        A binding request for this **PAN** is already in progress.

        Use the existing **`verificationId`** to confirm, or wait until the
        current request expires.
      type: object
      properties:
        code:
          type: string
          default: BINDING_REQUEST_ALREADY_EXISTS
          description: Error code, i.e. `BINDING_REQUEST_ALREADY_EXISTS`.
        message:
          type: string
          default: >-
            A card binding request for this PAN has already been initiated and
            is currently pending confirmation. Use the existing verification ID
            to confirm, or wait for it to expire.
          description: Human-readable error explanation.
  responses:
    InternalServerError:
      description: >-
        Internal Server Error. A server error occurred. Please try again later;
        if the problem persists, contact support.
      content:
        application/json:
          schema:
            type: object
            properties:
              code:
                type: string
                description: Error code, i.e. `INTERNAL_SERVER_ERROR`.
                default: INTERNAL_SERVER_ERROR
              message:
                type: string
                description: A brief message indicating a server-side error.
                default: Your request could not be processed due to a server error.
  securitySchemes:
    Basic:
      type: http
      scheme: basic
    Bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT

````