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

# List transactions

> List transactions for the connected user with optional date filtering and pagination

<Info>
  Some Platform API capabilities must be enabled on your account by MoonPay
  before you can call them. If this endpoint returns an unexpected `404`, see
  [Capability
  enablement](/api-reference/platform/documentation/using-the-api#capability-enablement).
</Info>


## OpenAPI

````yaml GET /platform/v1/transactions
openapi: 3.1.0
info:
  title: MoonPay
  version: 1.0.0
servers:
  - url: https://api.moonpay.com
    description: Production Environment
    variables: {}
  - url: https://api.moonpay.dev
    description: Sandbox Environment
    variables: {}
security: []
tags:
  - name: Assets
  - name: Quote
  - name: Customer
  - name: Identity
  - name: Transactions
paths:
  /platform/v1/transactions:
    get:
      tags:
        - Transactions
      summary: List transactions
      description: >-
        Returns a paginated list of transactions. An access token returns
        transactions for that customer only. A secret API key with no
        `externalCustomerId` returns all transactions for the account in the key
        mode (live or test). A secret API key with `externalCustomerId` returns
        transactions for that customer only. Use `startDate` and `endDate` to
        select transactions by creation time.
      operationId: TransactionController.findAll
      parameters:
        - $ref: '#/components/parameters/TransactionPaginationQueryParams.startDate'
        - $ref: '#/components/parameters/TransactionPaginationQueryParams.endDate'
        - $ref: >-
            #/components/parameters/TransactionPaginationQueryParams.externalCustomerId
        - $ref: '#/components/parameters/MoonPay.Core.PaginationQueryParams.cursor'
        - $ref: '#/components/parameters/MoonPay.Core.PaginationQueryParams.limit'
      responses:
        '200':
          description: The request has succeeded.
          headers:
            X-Request-Id:
              required: true
              schema:
                type: string
          content:
            application/json:
              schema:
                type: object
                required:
                  - data
                  - pageInfo
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/Transaction'
                  pageInfo:
                    $ref: '#/components/schemas/MoonPay.Core.PaginationInfo'
                unevaluatedProperties:
                  not: {}
        '400':
          description: The server could not understand the request due to invalid syntax.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevPlatformApiErrorResponse'
        '401':
          description: Access is unauthorized.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthorizedError'
        '403':
          description: Access is forbidden.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenError'
        '404':
          description: The server cannot find the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DevPlatformApiErrorResponse'
      security:
        - AccessTokenAuth: []
        - SecretApiKeyInHeaderAuth: []
components:
  parameters:
    TransactionPaginationQueryParams.startDate:
      name: startDate
      in: query
      required: false
      description: >-
        Filter transactions created on or after this date. [ISO
        8601](https://en.wikipedia.org/wiki/ISO_8601) format.
      schema:
        type: string
        format: date-time
      explode: false
    TransactionPaginationQueryParams.endDate:
      name: endDate
      in: query
      required: false
      description: >-
        Filter transactions created on or before this date. [ISO
        8601](https://en.wikipedia.org/wiki/ISO_8601) format.
      schema:
        type: string
        format: date-time
      explode: false
    TransactionPaginationQueryParams.externalCustomerId:
      name: externalCustomerId
      in: query
      required: false
      description: >-
        The customer ID that the partner assigned. Send this parameter with a
        secret API key to return transactions for one customer. If you do not
        send it, the API returns all transactions for the account in the key
        mode (live or test). The list is paginated. An access token does not use
        this parameter. The token already selects one customer.
      schema:
        type: string
        minLength: 1
      explode: false
    MoonPay.Core.PaginationQueryParams.cursor:
      name: cursor
      in: query
      required: false
      description: >-
        Cursor for pagination. Use the `nextCursor` value from the previous
        response.
      schema:
        type: string
      explode: false
    MoonPay.Core.PaginationQueryParams.limit:
      name: limit
      in: query
      required: false
      description: Number of items to return per page.
      schema:
        type: integer
        format: int32
        minimum: 1
        maximum: 50
        default: 50
      explode: false
  schemas:
    Transaction:
      type: object
      required:
        - id
        - transactionHash
        - createdAt
        - updatedAt
        - status
        - source
        - destination
        - fees
        - wallet
        - customer
      properties:
        id:
          type: string
          description: The MoonPay ID of the transaction.
          examples:
            - fd43b900-593b-4125-9616-7d721ecbe875
        transactionHash:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The on-chain transaction hash for the cryptocurrency transfer.
            Populated only when `status` is `completed` and a hash is available.
          examples:
            - '0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef'
        createdAt:
          type: string
          format: date-time
          description: >-
            An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of
            when the transaction was created.
          examples:
            - '2026-01-29T14:30:50.000Z'
        updatedAt:
          type: string
          format: date-time
          description: >-
            An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp of
            when the transaction was last updated.
          examples:
            - '2026-01-29T15:30:50.000Z'
        status:
          $ref: '#/components/schemas/TransactionStatus'
        source:
          type: object
          required:
            - amount
            - asset
          properties:
            amount:
              type: string
              description: A stringified amount, which can include decimals.
              examples:
                - '100.02'
                - '10.22'
                - '1.00'
                - '10'
                - '1'
            asset:
              $ref: '#/components/schemas/AssetBase'
              description: The currency or token being spent
              examples:
                - code: USD
          unevaluatedProperties:
            not: {}
          description: >-
            Total source amount and asset (fiat currency) the customer pays,
            including all fees. Matches the quote's `source.amount`. For
            bank-transfer payment methods this is the exact amount the customer
            must transfer.
          examples:
            - amount: '100.02'
              asset:
                code: USD
        destination:
          type: object
          required:
            - amount
            - asset
          properties:
            amount:
              type: string
              description: A stringified amount, which can include decimals.
              examples:
                - '100.02'
                - '10.22'
                - '1.00'
                - '10'
                - '1'
            asset:
              $ref: '#/components/schemas/AssetBase'
          unevaluatedProperties:
            not: {}
          description: >-
            Destination amount and asset (cryptocurrency) the customer receives.
            For bank-transfer (floating) payment methods this is an estimate
            while the transaction is pending, consistent with the quote's
            `destination.amount`; the exact amount is set at settlement.
          examples:
            - amount: '100.02'
              asset:
                code: USDC
        fees:
          $ref: '#/components/schemas/Fees'
          description: Details of fees for the transaction.
        wallet:
          $ref: '#/components/schemas/Wallet'
          description: The wallet used for the transaction.
        customer:
          $ref: '#/components/schemas/TransactionCustomer'
        paymentMethod:
          $ref: '#/components/schemas/TransactionPaymentMethod'
        bankTransferDepositInfo:
          $ref: '#/components/schemas/BankTransferDepositInfo'
          description: >-
            Bank account details and payment reference for completing a bank
            transfer. Present only for bank-transfer payment methods such as
            SEPA and Faster Payments (FPS).
    MoonPay.Core.PaginationInfo:
      type: object
      required:
        - nextCursor
      properties:
        nextCursor:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The cursor to use as the starting point for the next page of
            results.
          default: null
      unevaluatedProperties:
        not: {}
    DevPlatformApiErrorResponse:
      type: object
      required:
        - code
        - message
      properties:
        code:
          $ref: '#/components/schemas/DevPlatformApiErrorCodes'
          description: Code identifying the error type.
          examples:
            - forbidden
            - unauthorized
            - invalid_request
        message:
          type: string
          description: Human-readable error message.
          examples:
            - Forbidden
            - Not authorized
            - One or more request parameters are invalid.
        errors:
          type: array
          items:
            $ref: '#/components/schemas/DevPlatformErrorDetail'
          description: Optional list of field-level error details.
          examples:
            - - field: source.amount
                message: >-
                  Source amount must be a numeric string. Example "100" or
                  "10.25".
      unevaluatedProperties:
        not: {}
      description: Response body returned when a request fails.
    UnauthorizedError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - unauthorized
        message:
          type: string
          enum:
            - Not authorized
      unevaluatedProperties:
        not: {}
      description: Missing or invalid credentials.
    ForbiddenError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - forbidden
        message:
          type: string
          enum:
            - Forbidden
      unevaluatedProperties:
        not: {}
      description: Insufficient permissions.
    TransactionStatus:
      type: string
      enum:
        - completed
        - failed
        - pending
      description: >-
        The status of a transaction.


        - `completed`: The transaction is finalized and assets were delivered.

        - `failed`: The transaction failed. No payment was executed and funds
        were not transferred.

        - `pending`: The transaction was created and payment is accepted. The
        transfer is in progress.
    AssetBase:
      type: object
      required:
        - code
      properties:
        code:
          type: string
          description: >-
            A fiat or crypto currency code.


            **Fiat**

            Fiat codes are represented as [ISO
            4217](https://en.wikipedia.org/wiki/ISO_4217) codes.


            **Crypto**

            For crypto currency codes, see [supported
            currencies](https://dev.moonpay.com/docs/list-of-supported-cryptocurrencies).


            Examples: `BTC` `SOL` `ETH` `USDC_BASE` `USDC_SOL`
      unevaluatedProperties:
        not: {}
    Fees:
      type: object
      properties:
        network:
          $ref: '#/components/schemas/MonetaryFeeAmount'
          description: Network fees (in fiat) for the transaction.
        moonpay:
          $ref: '#/components/schemas/MonetaryFeeAmount'
          description: MoonPay fees (in fiat) for the transaction.
        ecosystem:
          $ref: '#/components/schemas/MonetaryFeeAmount'
          description: Ecosystem fees (in fiat) for the transaction, if applicable.
        defi:
          $ref: '#/components/schemas/MonetaryFeeAmount'
          description: >-
            DeFi swap fee (in fiat) for the transaction, converted to the
            quote's base currency like the other fees. Present only for DeFi
            swaps that carry an itemized swap fee; when the fee is taken
            on-chain it is reflected in `destination.amount` instead.
        partner:
          $ref: '#/components/schemas/MonetaryFeeAmount'
          description: >-
            Partner fees (in fiat) for the transaction, if applicable.
            Deprecated: use `fees.ecosystem` instead. This field will be removed
            in a future release.
          deprecated: true
      unevaluatedProperties:
        not: {}
      examples:
        - network:
            amount: '2.39'
            asset:
              code: USD
          moonpay:
            amount: '4.99'
            asset:
              code: USD
          ecosystem:
            amount: '1.00'
            asset:
              code: USD
    Wallet:
      type: object
      required:
        - address
      properties:
        address:
          type: string
          description: The wallet address used for the transaction.
          examples:
            - '0x1234567890123456789012345678901234567890'
        tag:
          type: string
          description: >-
            An optional memo or destination tag (used by some blockchains such
            as XRP or XLM).
      unevaluatedProperties:
        not: {}
      examples:
        - address: '0x1234567890123456789012345678901234567890'
    TransactionCustomer:
      type: object
      required:
        - id
      properties:
        id:
          type: string
          description: The MoonPay ID of the customer associated with the transaction.
          examples:
            - e0dee0ac-4e62-4866-b044-f66c0e4046e9
      unevaluatedProperties:
        not: {}
    TransactionPaymentMethod:
      type: object
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/PaymentMethodType'
      unevaluatedProperties:
        not: {}
    BankTransferDepositInfo:
      type: object
      required:
        - reference
        - recipientName
        - recipientAddress
      properties:
        reference:
          type: string
          description: >-
            The payment reference the customer must include with the bank
            transfer so MoonPay can match the payment to the transaction. The
            customer must always include it - transfers sent without the
            reference are rejected.
        recipientName:
          type: string
          description: >-
            The name of the recipient account holder the customer should send
            the transfer to.
        recipientAddress:
          type: string
          description: >-
            The address of the recipient account holder the customer should send
            the transfer to.
        accountNumber:
          type: string
          description: >-
            The account number of the recipient account. Provided for domestic
            transfers such as Faster Payments (FPS); UK account numbers are 8
            digits.
        bankAddress:
          type: string
          description: The address of the recipient's bank.
        bankName:
          type: string
          description: The name of the recipient's bank.
        bic:
          type: string
          description: >-
            The BIC (SWIFT code) of the recipient account, 8 or 11 characters.
            Provided for SEPA transfers.
        iban:
          type: string
          description: >-
            The IBAN of the recipient account (up to 34 alphanumeric
            characters). Provided for SEPA transfers.
        sortCode:
          type: string
          description: >-
            The sort code of the recipient bank, 6 digits. Provided for domestic
            transfers such as Faster Payments (FPS).
      unevaluatedProperties:
        not: {}
      description: >-
        Bank account details and payment reference the customer uses to complete
        a bank transfer. Present only for bank-transfer payment methods such as
        SEPA and Faster Payments (FPS).
      examples:
        - reference: MP-8F3K2A
          recipientName: MoonPay Ltd
          recipientAddress: 1 Market Street, London, EC1A 1AA, United Kingdom
          iban: GB29NWBK60161331926819
          bic: NWBKGB2L
          bankName: MoonPay Bank
          bankAddress: 1 Market Street, London, EC1A 1AA, United Kingdom
    DevPlatformApiErrorCodes:
      type: string
      enum:
        - unknown_error
        - unauthorized
        - forbidden
        - not_found
        - invalid_request
        - not_implemented
        - too_many_requests
        - not_allowed
        - conflict
        - unprocessable_entity
        - sse_timeout
        - sse_error
        - service_unavailable
        - requirements_incomplete
        - requirement_not_pending
        - verification_rejected
        - country_mismatch
        - upload_expired
        - unsupported_country
        - verification_pending
        - kyc_not_approved
        - no_outstanding_requirements
        - terms_accepted_at_out_of_range
        - unsupported_combination
        - asset_not_available_in_region
    DevPlatformErrorDetail:
      type: object
      required:
        - message
      properties:
        field:
          type: string
          description: Field that caused the error.
        message:
          type: string
          description: Human-readable error message for this field.
        details:
          type: object
          unevaluatedProperties: {}
          description: >-
            Extra data that describes the error in more detail, useful when
            debugging or logging. Keys vary by error and are not part of the API
            contract. For example, an amount-limit error includes the limit
            value as "maxBuyAmount" or "minBuyAmount".
      unevaluatedProperties:
        not: {}
    MonetaryFeeAmount:
      type: object
      required:
        - amount
        - asset
      properties:
        amount:
          type: string
          description: The amount of fees in fiat.
          examples:
            - '1'
            - '1.00'
            - '10.22'
            - '100.02'
        asset:
          $ref: '#/components/schemas/AssetBase'
          description: The fiat currency used to pay the fees.
          examples:
            - code: USD
      unevaluatedProperties:
        not: {}
    PaymentMethodType:
      type: string
      enum:
        - apple_pay
        - card
        - ach
        - fps
        - fps_open_banking
        - google_pay
        - sepa
        - sepa_open_banking
        - pix
        - paypal
        - venmo
        - revolut_pay
        - moonpay_balance
        - interac
  securitySchemes:
    AccessTokenAuth:
      type: http
      scheme: bearer
      description: |-
        Bearer authentication header using an access token.

        Example: `Authorization: Bearer <accessToken>`
    SecretApiKeyInHeaderAuth:
      type: apiKey
      in: header
      name: X-Api-Key
      description: |-
        Secret key authentication via the `X-Api-Key` header.

        Example: `X-Api-Key: <secretKey>`

````