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

# List Withdrawal Transactions

> Returns withdrawal transactions for the authenticated merchant account. Supports pagination and filtering by state, chains, date range, and withdrawal config. Requires WITHDRAWS_READ.

<Info>
  **Note:** When using the production environment at [moonpay.hel.io](http://app.hel.io), set your API endpoint to `api.hel.io/v1` and generate API keys there. For the development environment, use `api.dev.hel.io/v1` and generate API keys from [moonpay.dev.hel.io](http://app.dev.hel.io).
</Info>

<Tip>
  Use `page` and `limit` for offset pagination, or `lastItemId` for cursor pagination. Default page size is 20 (max 100). Amounts are returned in atomic units.
</Tip>


## OpenAPI

````yaml GET /v1/withdrawal-transactions/api-key
openapi: 3.0.0
info:
  title: Helio Open API
  description: |-
    API schema and definitions for Helio API. <br/> 
          The API is using two types of Authentication, for dashboard endpoints we use <b>JSON Web Token (JWT)</b> that is generated by self custodial wallet signing a message from API.</br> 
          We also support authentication with <b>API Key and Secret</b> which can be generated on <a href='https://hel.io'>Helio dashboard</a>.
  version: 1.0.0
  contact: {}
servers:
  - description: Helio API (Mainnet)
    url: https://api.hel.io
  - description: Helio API (Devnet)
    url: https://api.dev.hel.io
security: []
tags:
  - name: Webhooks
  - name: Exports
  - name: Currencies
    description: >-
      Supported currencies endpoint, includes fiat and digital assets
      </br><i>Authentication: </i><b>None</b>
externalDocs:
  description: Helio product documentation
  url: https://docs.hel.io/
paths:
  /v1/withdrawal-transactions/api-key:
    get:
      tags:
        - Withdrawals
      summary: List Withdrawal Transactions
      description: >-
        Returns withdrawal transactions for the authenticated merchant account.
        Requires an API key with the `WITHDRAWS_READ` permission. Supports
        pagination and filtering by state, chains, date range, and withdrawal
        config.
      operationId: WithdrawalTransactionsController_getAllWithApiKey
      parameters:
        - name: apiKey
          in: query
          required: true
          description: >-
            Your API key, which can be generated from the Helio Dashboard
            settings page.
          schema:
            type: string
        - name: page
          in: query
          required: false
          schema:
            type: number
          description: Page number (1-based).
        - name: limit
          in: query
          required: false
          schema:
            type: number
            default: 20
            maximum: 100
          description: Page size. Defaults to 20, maximum 100.
        - name: lastItemId
          in: query
          required: false
          schema:
            type: string
          description: >-
            Cursor for pagination. Returns items with `_id` less than this
            value.
        - name: search
          in: query
          required: false
          schema:
            type: string
          description: >-
            Search by withdrawal detail ID, destination wallet (prefix), source
            token, or destination token.
        - name: sort
          in: query
          required: false
          schema:
            type: string
            default: createdAt
          description: Sort field. Defaults to `createdAt`.
        - name: order
          in: query
          required: false
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          description: Sort order. Defaults to `desc`.
        - name: startDate
          in: query
          required: false
          schema:
            type: string
          description: ISO 8601 start of `createdAt` range (inclusive).
        - name: endDate
          in: query
          required: false
          schema:
            type: string
          description: ISO 8601 end of `createdAt` range (inclusive).
        - name: state
          in: query
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/WithdrawalState'
          description: Filter by one or more withdrawal states.
          style: form
          explode: true
        - name: sourceChain
          in: query
          required: false
          schema:
            type: string
          description: Filter by source chain symbol (e.g. `SOL`, `ETH`).
        - name: destinationChain
          in: query
          required: false
          schema:
            type: string
          description: Filter by destination chain symbol.
        - name: withdrawalConfigId
          in: query
          required: false
          schema:
            type: string
          description: Filter by withdrawal config ID.
      responses:
        '200':
          description: Withdrawal transactions retrieved successfully.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WithdrawalDetailEnriched'
              examples:
                list:
                  summary: Successful list response
                  value:
                    - withdrawalDetailId: 68129f9cc81cc9397e012b3a
                      state: COMPLETED
                      sourceChain: SOL
                      sourceToken: USDC
                      sourceAmount: '1000000'
                      destinationChain: ETH
                      destinationToken: USDC
                      destinationAmount: '990000'
                      destinationWallet: '0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb0'
                      txHash: 0xabc123...
                      broadcastAck: acknowledged
                      errorReason: null
                      customerId: cust_123
                      createdAt: '2025-04-30T22:09:32.978Z'
                      updatedAt: '2025-04-30T22:10:01.120Z'
        '401':
          description: Provided API key has no access to the resource.
          content:
            application/json:
              examples:
                unauthorized:
                  summary: Invalid or missing API key
                  value:
                    message: Api key or token is invalid
                    code: 401
      security:
        - bearer: []
components:
  schemas:
    WithdrawalState:
      type: string
      enum:
        - QUOTED
        - SUBMITTING
        - SUBMITTED
        - BRIDGING
        - COMPLETED
        - FAILED
        - FAILED_EXPIRED
        - EXPIRED
        - REFUNDED_BY_PROVIDER
    WithdrawalDetailEnriched:
      type: object
      properties:
        withdrawalDetailId:
          type: string
          description: Withdrawal detail ID.
        state:
          $ref: '#/components/schemas/WithdrawalState'
        sourceChain:
          type: string
          description: Source chain symbol.
        sourceToken:
          type: string
          description: Source token symbol.
        sourceAmount:
          type: string
          description: Source amount in atomic units.
        destinationChain:
          type: string
          description: Destination chain symbol.
        destinationToken:
          type: string
          description: Destination token symbol.
        destinationAmount:
          type: string
          description: Destination amount in atomic units.
        destinationWallet:
          type: string
          description: Destination wallet address.
        txHash:
          type: string
          nullable: true
          description: Most recent transaction hash associated with the withdrawal.
        broadcastAck:
          $ref: '#/components/schemas/BroadcastAck'
        errorReason:
          type: string
          nullable: true
          description: Human-readable error when the withdrawal failed.
        customerId:
          type: string
          nullable: true
          description: >-
            Merchant-defined customer identifier set at prepare time, or null
            when omitted.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
    BroadcastAck:
      type: string
      nullable: true
      enum:
        - acknowledged
        - unacknowledged
        - rejected
      description: >-
        `acknowledged` = confirmed; `unacknowledged` = sent, keep polling;
        `rejected` = terminal failure.
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Authentication using JWT token

````