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

# Capture Authorized Transaction

> **Captures Funds from a Previously Authorized Transaction**

This endpoint finalizes a payment by capturing funds that were previously authorized (locked). 

- Provide the **`transactionId`** from the original authorization
- Specify the **`amount`** to capture (can be equal to or less than the authorized amount)
- Upon success, the transaction status will change to **`captured`**
- Captured funds will be transferred to the merchant's account

Note: Captures must be performed before the authorization expires.




## OpenAPI

````yaml /merchant/partner-connect/partner-connect.yaml post /partner-connect/transactions/capture
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/transactions/capture:
    post:
      tags:
        - Transactions
      summary: Capture Authorized Transaction
      description: >
        **Captures Funds from a Previously Authorized Transaction**


        This endpoint finalizes a payment by capturing funds that were
        previously authorized (locked). 


        - Provide the **`transactionId`** from the original authorization

        - Specify the **`amount`** to capture (can be equal to or less than the
        authorized amount)

        - Upon success, the transaction status will change to **`captured`**

        - Captured funds will be transferred to the merchant's account


        Note: Captures must be performed before the authorization expires.
      requestBody:
        required: true
        description: >-
          Requires the `transactionId` of the locked transaction and the
          `amount` to capture in the request body.
        content:
          application/json:
            schema:
              type: object
              required:
                - transactionId
                - amount
              properties:
                transactionId:
                  type: string
                  format: uuid
                  description: Unique transaction identifier.
                amount:
                  type: number
                  format: float
                  minimum: 0.01
                  multipleOf: 0.01
                  description: >-
                    Amount to capture. Can be equal or less than authorized
                    amount.
                  example: 100
      responses:
        '200':
          description: >
            Transaction successfully captured. Funds have been transferred from
            the customer's account to the merchant's account. The transaction
            status has been updated to `captured`.


            This confirms that the payment has been finalized and the merchant
            can now fulfill the order or provide the service.
          content:
            application/json:
              schema:
                type: object
                properties:
                  transactionId:
                    description: >-
                      The unique identifier (UUID) of the captured transaction
                      (same as the authorization ID).
                    type: string
                    format: uuid
                  status:
                    $ref: '#/components/schemas/PartnerConnectTransactionStatus'
                    description: >-
                      The updated status of the transaction, which will be
                      `captured`.
                  amountCaptured:
                    description: >-
                      The actual amount that was successfully captured,
                      formatted to 2 decimal places.
                    type: number
                    format: float
                    minimum: 0.01
                    multipleOf: 0.01
                    example: 100
                  currency:
                    description: Currency code (ISO 4217) of the captured amount.
                    type: string
                    minLength: 3
                    maxLength: 3
                    example: USD
                  captureDate:
                    description: >-
                      The timestamp (ISO 8601 format) when the transaction
                      capture was successfully processed.
                    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})?)$
                  cardId:
                    description: >-
                      The unique identifier (UUID) assigned to the successfully
                      bound card. **Store this `cardId` securely**, as it is
                      required to reference this card in all subsequent
                      transaction requests (`/verify`, `/purchase`, etc.).
                    type: string
                    format: uuid
                  refId:
                    description: >-
                      A unique transaction identifier provided for the client’s
                      reference. It can be used to track or correlate
                      transactions
                    type: string
                    example: CT6KQDDEC2
                example:
                  transactionId: 3fa85f64-5717-4562-b3fc-2c963f66afa6
                  status: captured
                  amountCaptured: 100
                  currency: USD
                  captureDate: '2025-03-19T09:51:17.009Z'
                required:
                  - transactionId
                  - status
                  - amountCaptured
                  - currency
                  - captureDate
        '400':
          description: >-
            Bad Request. Invalid `transactionId` format, invalid `amount` (e.g.,
            non-positive, too many decimals), or decryption failed.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
        '404':
          description: >-
            Transaction Not Found or Invalid State. The `transactionId` does not
            exist, or the transaction is not in the `locked` state (e.g.,
            already captured/voided, authorization expired)
            (`TRANSACTION_NOT_FOUND`).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorPartnerConnectTransactionNotFound'
        '406':
          description: >-
            Capture Failed. The capture could not be completed. This might be
            because the requested `amount` exceeds the authorized limit
            (`AMOUNT_EXCEEDS_LIMIT`), or due to a downstream processing failure
            (`CAPTURE_FAILED`).
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: '#/components/schemas/ErrorPartnerConnectAmountExceedsLimit'
                  - $ref: '#/components/schemas/ErrorPartnerConnectCaptureFailed'
        '500':
          $ref: '#/components/responses/InternalServerError'
components:
  schemas:
    PartnerConnectTransactionStatus:
      type: string
      enum:
        - locked
        - captured
        - void
        - refunded
      description: >
        Enum representing the lifecycle status of a Partner Connect transaction:

        * `locked` - An authorization request was successful. Funds are reserved
        on the cardholder's account but not yet transferred. This transaction
        can be captured or released (voided).

        * `captured` - The previously locked funds have been successfully
        transferred from the cardholder to the merchant. This transaction can
        potentially be refunded.

        * `void` - The previously locked funds have been released back to the
        cardholder before capture. The authorization is cancelled.

        * `refunded` - Funds for a previously captured transaction have been
        returned to the cardholder.
    ErrorPartnerConnectTransactionNotFound:
      description: >
        The transaction was not found or is in an invalid state for the
        requested operation.

        Please verify the **transaction ID** and its current status.
      type: object
      properties:
        code:
          type: string
          description: Error code, i.e. `TRANSACTION_NOT_FOUND`.
          default: TRANSACTION_NOT_FOUND
        message:
          type: string
          description: Human-readable error explanation.
          default: >-
            No transaction found with the provided transaction ID, or the
            transaction's current status prevents the requested operation (e.g.,
            trying to capture a non-locked transaction, refunding a non-captured
            transaction).
    ErrorPartnerConnectAmountExceedsLimit:
      description: >
        The requested amount exceeds the allowable limit.

        For captures, it must not exceed the **authorized amount**.

        For refunds, it must be within the **refundable range** after previous
        transactions.
      type: object
      properties:
        code:
          type: string
          description: Error code, i.e. `AMOUNT_EXCEEDS_LIMIT`.
          default: AMOUNT_EXCEEDS_LIMIT
        message:
          type: string
          description: Human-readable error explanation.
          default: >-
            The requested amount exceeds the allowable limit. For captures, it
            cannot exceed the authorized amount. For refunds, it cannot exceed
            the net captured amount (captured minus previous refunds).
    ErrorPartnerConnectCaptureFailed:
      description: >
        The capture operation failed, potentially due to expired authorization
        or a processor error.

        Please retry the capture or cancel the transaction.
      type: object
      properties:
        code:
          type: string
          description: Error code, i.e. `CAPTURE_FAILED`.
          default: CAPTURE_FAILED
        message:
          type: string
          description: Human-readable error explanation.
          default: >-
            Unable to capture the funds for this authorized transaction. The
            authorization may have expired, or a downstream processing error
            occurred. Consider retrying or releasing the authorization.
  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

````