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

# Get Payment Link Transactions

Get the transactions collected through a specific payment link, filterable by status and payment method.

<Note>
  For card and crypto payments, check `requiresAction`/`redirectUrl`/`redirectMode` — some providers need an additional 3DS redirect before the payment completes. `redirectMode` tells you whether that redirect can be framed in-page (`iframe`) or must open the top-level window (`top`).
</Note>


## OpenAPI

````yaml GET /api/v3/payment-links/{id}/transactions
openapi: 3.0.0
info:
  title: KOTANI PAY API PLATFORM
  description: ''
  version: '3.0'
  contact: {}
servers:
  - url: https://sandbox-api.kotanipay.io
    description: Sandbox
security: []
tags: []
paths:
  /api/v3/payment-links/{id}/transactions:
    get:
      tags:
        - PAYMENT-LINKS
      summary: Get transactions for a payment link
      operationId: PaymentLinksController_getTransactions_api/v3
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
        - name: page
          required: false
          in: query
          schema:
            default: 1
            type: number
        - name: per_page
          required: false
          in: query
          schema:
            default: 20
            type: number
        - name: limit
          required: false
          in: query
          schema:
            default: 20
            type: number
        - name: offset
          required: false
          in: query
          schema:
            type: number
            default: 0
        - name: status
          required: false
          in: query
          schema:
            type: string
            enum:
              - pending
              - processing
              - successful
              - failed
              - cancelled
              - expired
        - name: paymentMethod
          required: false
          in: query
          schema:
            type: string
            enum:
              - mobile_money
              - bank
              - card
              - crypto
        - name: search
          required: false
          in: query
          description: Search by customer email/phone/name
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: true
                  message:
                    type: string
                    example: Transactions retrieved successfully
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PaymentLinkTransactionResponseDto'
                  total:
                    type: number
                    example: 1
                  limit:
                    type: number
                    example: 20
                  offset:
                    type: number
                    example: 0
        '401':
          description: ''
          content:
            application/json:
              schema:
                properties:
                  success:
                    type: boolean
                    example: false
                  message:
                    type: string
                    example: Invalid API Key
                  data:
                    type: object
                    example: {}
      security:
        - JWT: []
components:
  schemas:
    PaymentLinkTransactionResponseDto:
      type: object
      properties:
        id:
          type: string
        referenceId:
          type: string
        paymentLinkId:
          type: string
        customer:
          $ref: '#/components/schemas/CustomerDataDto'
        paymentMethod:
          type: string
          enum:
            - mobile_money
            - bank
            - card
            - crypto
        currency:
          type: string
        amount:
          type: number
        transactionCost:
          type: number
        transactionAmount:
          type: number
        packageId:
          type: string
        packageName:
          type: string
        status:
          type: string
          enum:
            - pending
            - processing
            - successful
            - failed
            - cancelled
            - expired
        providerReference:
          type: string
        transactionError:
          type: string
        createdAt:
          type: string
          format: date-time
        completedAt:
          type: string
          format: date-time
        deposit:
          $ref: '#/components/schemas/PaymentLinkTransactionDepositDto'
        redirectUrl:
          type: string
          description: Redirect URL for additional card authentication if required.
        requiresAction:
          type: boolean
          description: >-
            Whether the client must perform an additional action such as a 3DS
            redirect.
        redirectMode:
          type: string
          enum:
            - top
            - iframe
          description: >-
            How redirectUrl must be opened. iframe (the default) means the
            provider allows framing, so the checkout can be shown in an in-page
            modal. top means the provider sends X-Frame-Options: sameorigin, so
            framing it fails — the client must navigate the top-level window or
            open a new tab instead.
        type:
          type: string
          description: Payment type (crypto, bank, etc.).
        walletAddress:
          type: string
          description: Crypto wallet address for payment.
        network:
          type: string
          description: Blockchain network for crypto payment.
        token:
          type: string
          description: Crypto token (USDT, USDC, etc.).
      required:
        - id
        - referenceId
        - paymentLinkId
        - customer
        - paymentMethod
        - currency
        - amount
        - transactionAmount
        - status
        - createdAt
    CustomerDataDto:
      type: object
      properties:
        email:
          type: string
          example: you@example.com
        phone:
          type: string
          example: '+254712345678'
        name:
          type: string
          example: John Doe
        address:
          type: string
    PaymentLinkTransactionDepositDto:
      type: object
      properties:
        id:
          type: string
        status:
          type: string
          enum:
            - PENDING
            - INITIATED
            - SUCCESSFUL
            - FAILED
            - EXPIRED
            - CANCELLED
            - DECLINED
            - REVERSED
            - IN_PROGRESS
            - DUPLICATE
            - ERROR_OCCURRED
            - REQUIRE_REVIEW
            - SUCCESS
            - RETRY
            - PERMANENTLY_FAILED
        provider:
          type: string
          description: Downstream payment provider that processed this transaction.
        providerReference:
          type: string
        providerResponse:
          type: object
        callbackResponse:
          type: object
        callbackPayload:
          type: object
        callbackStatusCode:
          type: number
        transactionError:
          type: string
        referenceId:
          type: string
        referenceNumber:
          type: number
        amount:
          type: number
        transactionAmount:
          type: number
        transactionCost:
          type: number
        retries:
          type: number
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
      required:
        - id
        - referenceId
        - referenceNumber
        - amount
        - transactionAmount
        - transactionCost
  securitySchemes:
    JWT:
      scheme: bearer
      bearerFormat: JWT
      type: http

````