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

# Get Transactions For Account

> Obtain transactions for a specific account.

Some general notes that apply to all end points that retrieve transactions:

- Where multiple transactions are returned, transactions should be ordered according to effective date in descending order
- As the date and time for a transaction can alter depending on status and transaction type two separate date/times are included in the payload. There are still some scenarios where neither of these time stamps is available. For the purpose of filtering and ordering it is expected that the data holder will use the "effective" date/time which will be defined as:
  - Posted date/time if available, then
  - Execution date/time if available, then
  - A reasonable date/time nominated by the data holder using internal data structures
- For transaction amounts it should be assumed that a negative value indicates a reduction of the available balance on the account while a positive value indicates an increase in the available balance on the account
- For aggregated transactions (ie. groups of sub transactions reported as a single entry for the account) only the aggregated information, with as much consistent information across the subsidiary transactions as possible, is required to be shared



## OpenAPI

````yaml /openapi/cdr.yml get /v1/banking/customer/{customerId}/accounts/{accountId}/transactions
openapi: 3.0.3
info:
  description: Fiskil Data Holder as a Service (DHaaS) endpoints for the Energy sector
  title: Fiskil Data APIs
  version: 1.5.0
servers:
  - url: https://api.provider.fiskil.com
security:
  - bearerAuth: []
paths:
  /v1/banking/customer/{customerId}/accounts/{accountId}/transactions:
    get:
      tags:
        - Banking
        - Accounts
      summary: Get Transactions For Account
      description: >-
        Obtain transactions for a specific account.


        Some general notes that apply to all end points that retrieve
        transactions:


        - Where multiple transactions are returned, transactions should be
        ordered according to effective date in descending order

        - As the date and time for a transaction can alter depending on status
        and transaction type two separate date/times are included in the
        payload. There are still some scenarios where neither of these time
        stamps is available. For the purpose of filtering and ordering it is
        expected that the data holder will use the "effective" date/time which
        will be defined as:
          - Posted date/time if available, then
          - Execution date/time if available, then
          - A reasonable date/time nominated by the data holder using internal data structures
        - For transaction amounts it should be assumed that a negative value
        indicates a reduction of the available balance on the account while a
        positive value indicates an increase in the available balance on the
        account

        - For aggregated transactions (ie. groups of sub transactions reported
        as a single entry for the account) only the aggregated information, with
        as much consistent information across the subsidiary transactions as
        possible, is required to be shared
      operationId: getTransactions
      parameters:
        - $ref: '#/components/parameters/customerId'
        - $ref: '#/components/parameters/accountId'
        - $ref: '#/components/parameters/oldest-time'
        - $ref: '#/components/parameters/newest-time'
        - description: >-
            Filter transactions to only transactions with amounts higher than or
            equal to this amount
          explode: true
          in: query
          name: min-amount
          required: false
          schema:
            type: string
            x-cds-type: AmountString
          style: form
          x-cds-type: AmountString
        - description: >-
            Filter transactions to only transactions with amounts less than or
            equal to this amount
          explode: true
          in: query
          name: max-amount
          required: false
          schema:
            type: string
            x-cds-type: AmountString
          style: form
          x-cds-type: AmountString
        - description: >-
            Filter transactions to only transactions where this string value is
            found as a substring of either the reference or description fields.
            Format is arbitrary ASCII string. This parameter is optionally
            implemented by data holders. If it is not implemented then a
            response should be provided as normal without text filtering applied
            and an additional boolean field named isQueryParamUnsupported should
            be included in the meta object and set to true (whether the text
            parameter is supplied or not)
          explode: true
          in: query
          name: text
          required: false
          schema:
            type: string
          style: form
        - $ref: '#/components/parameters/page'
        - $ref: '#/components/parameters/page-size'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseBankingTransactionList'
          description: >-
            List of transactions for the account in descending order of
            effective timestamp
        '404':
          $ref: '#/components/responses/responseErrorCustomerIdNotFound'
components:
  parameters:
    customerId:
      description: >-
        Unique ID of a customer. This ID must not change for the lifecycle of
        the customer
      explode: false
      in: path
      name: customerId
      required: true
      schema:
        type: string
      style: simple
    accountId:
      description: ID of a specific account to obtain data for.
      explode: false
      in: path
      name: accountId
      required: true
      schema:
        type: string
      style: simple
    oldest-time:
      description: >-
        Constrain the request to records with effective time at or after this
        date/time. If absent defaults to newest-time minus 12 months. Format is
        an RFC3339 Datetime string.
      explode: true
      in: query
      name: oldest-time
      required: false
      schema:
        type: string
      style: form
      x-cds-type: DateTimeString
    newest-time:
      description: >-
        Constrain the request to records with effective time at or before this
        date/time.  If absent defaults to current date/time. Format is an
        RFC3339 Datetime string.
      explode: true
      in: query
      name: newest-time
      required: false
      schema:
        type: string
      style: form
      x-cds-type: DateTimeString
    page:
      description: Page of results to request (standard pagination)
      explode: true
      in: query
      name: page
      required: false
      schema:
        type: integer
      style: form
      x-cds-type: PositiveInteger
    page-size:
      description: Page size to request.  Default is 25 (standard pagination)
      explode: true
      in: query
      name: page-size
      required: false
      schema:
        type: integer
      style: form
      x-cds-type: PositiveInteger
  schemas:
    ResponseBankingTransactionList:
      example:
        data:
          transactions:
            - accountId: dda64346-b4aa-4896-a3c8-f549f2f43c67
              transactionId: 38ff0ec6-dbb5-44ce-a1d9-50f48048c8c4
              isDetailAvailable: true
              type: PAYMENT
              status: POSTED
              description: Netflix Subscription
              postingDateTime: '2025-10-01T05:45:00.000Z'
              amount: '21.00'
              reference: PAYMENT2025101NETFL
        links:
          first: page=1&page-size=25&oldest-date=2023-04-24
          last: page=4&page-size=25&oldest-date=2023-04-24
          next: page=3&page-size=25&oldest-date=2023-04-24
          prev: page=1&page-size=25&oldest-date=2023-04-24
        meta:
          totalRecords: 1
          totalPages: 1
      properties:
        data:
          $ref: '#/components/schemas/ResponseBankingTransactionList_data'
        links:
          $ref: '#/components/schemas/LinksPaginated'
        meta:
          $ref: '#/components/schemas/MetaPaginatedTransaction'
      required:
        - data
        - links
        - meta
      type: object
    ResponseBankingTransactionList_data:
      properties:
        transactions:
          items:
            $ref: '#/components/schemas/BankingTransaction'
          type: array
      required:
        - transactions
      type: object
    LinksPaginated:
      description: >-
        URL Query parameters to obtain different pages of the response. Fiskil
        will combine these with the rest of the request URL to build full link
        URLs in the final response.
      example:
        first: page=1&page-size=25&oldest-date=2023-04-24
        last: page=4&page-size=25&oldest-date=2023-04-24
        next: page=3&page-size=25&oldest-date=2023-04-24
        prev: page=1&page-size=25&oldest-date=2023-04-24
      properties:
        first:
          description: >-
            A url-encoded query for the first page of this result set. Mandatory
            if this response is not the first page.
          type: string
        prev:
          description: >-
            A url-encoded query for the previous page. Mandatory if this
            response is not the first page
          type: string
        next:
          description: >-
            A url-encoded query for the next page. Mandatory if this response is
            not the last page.
          type: string
        last:
          description: >-
            A url-encoded query for the last page. Mandatory if this response is
            not the last page.
          type: string
      type: object
    MetaPaginatedTransaction:
      allOf:
        - $ref: '#/components/schemas/MetaPaginated'
        - $ref: '#/components/schemas/MetaPaginatedTransaction_allOf'
    GenericError:
      example:
        error: An error message
      type: object
      properties:
        error:
          type: string
          description: A message describing what caused the error
      required:
        - error
    BankingTransaction:
      properties:
        accountId:
          description: ID of the account for which transactions are provided
          type: string
          x-cds-type: ASCIIString
        transactionId:
          description: >-
            A unique ID of the transaction adhering to the standards for ID
            permanence.  This is mandatory (through hashing if necessary) unless
            there are specific and justifiable technical reasons why a
            transaction cannot be uniquely identified for a particular account
            type. It is mandatory if `isDetailAvailable` is set to true.
          type: string
          x-cds-type: ASCIIString
        isDetailAvailable:
          description: >-
            True if extended information is available using the transaction
            detail end point. False if extended data is not available
          type: boolean
          x-cds-type: Boolean
        type:
          description: The type of the transaction
          enum:
            - DIRECT_DEBIT
            - FEE
            - INTEREST_CHARGED
            - INTEREST_PAID
            - OTHER
            - PAYMENT
            - TRANSFER_INCOMING
            - TRANSFER_OUTGOING
          type: string
        status:
          description: >-
            Status of the transaction whether pending or posted. Note that there
            is currently no provision in the standards to guarantee the ability
            to correlate a pending transaction with an associated posted
            transaction
          enum:
            - PENDING
            - POSTED
          type: string
        description:
          description: The transaction description as applied by the financial institution
          type: string
        postingDateTime:
          description: >-
            The time the transaction was posted. This field is Mandatory if the
            transaction has status POSTED.  This is the time that appears on a
            standard statement
          type: string
          x-cds-type: DateTimeString
        valueDateTime:
          description: >-
            Date and time at which assets become available to the account owner
            in case of a credit entry, or cease to be available to the account
            owner in case of a debit transaction entry
          type: string
          x-cds-type: DateTimeString
        executionDateTime:
          description: >-
            The time the transaction was executed by the originating customer,
            if available
          type: string
          x-cds-type: DateTimeString
        amount:
          description: >-
            The value of the transaction. Negative values mean money was
            outgoing from the account
          type: string
          x-cds-type: AmountString
        currency:
          description: The currency for the transaction amount. AUD assumed if not present
          type: string
          x-cds-type: CurrencyString
        reference:
          description: >-
            The reference for the transaction provided by the originating
            institution. Empty string if no data provided
          type: string
        merchantName:
          description: Name of the merchant for an outgoing payment to a merchant
          type: string
        merchantCategoryCode:
          description: >-
            The merchant category code (or MCC) for an outgoing payment to a
            merchant
          type: string
        billerCode:
          description: BPAY Biller Code for the transaction (if available)
          type: string
        billerName:
          description: Name of the BPAY biller for the transaction (if available)
          type: string
        crn:
          description: >-
            BPAY CRN for the transaction (if available).<br/>Where the CRN
            contains sensitive information, it should be masked in line with how
            the Data Holder currently displays account identifiers in their
            existing online banking channels. If the contents of the CRN match
            the format of a Credit Card PAN they should be masked according to
            the rules applicable for MaskedPANString. If the contents are
            otherwise sensitive, then it should be masked using the rules
            applicable for the MaskedAccountString common type.
          type: string
        apcaNumber:
          description: >-
            6 Digit APCA number for the initiating institution. The field is
            fixed-width and padded with leading zeros if applicable.
          type: string
      required:
        - accountId
        - amount
        - description
        - isDetailAvailable
        - reference
        - status
        - type
      type: object
      x-conditional:
        - transactionId
        - postingDateTime
        - crn
    MetaPaginated:
      example:
        totalRecords: 150
        totalPages: 6
      properties:
        totalRecords:
          description: >-
            The total number of records in the full set. See
            [pagination](#pagination).
          type: integer
          x-cds-type: NaturalNumber
        totalPages:
          description: >-
            The total number of pages in the full set. See
            [pagination](#pagination).
          type: integer
          x-cds-type: NaturalNumber
      required:
        - totalPages
        - totalRecords
      type: object
    MetaPaginatedTransaction_allOf:
      properties:
        isQueryParamUnsupported:
          default: false
          description: '**true** if *"text"* query parameter is not supported'
          type: boolean
          x-cds-type: Boolean
      type: object
  responses:
    responseErrorCustomerIdNotFound:
      description: The customer ID in the URL path is invalid or not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericError'
            example:
              error: Customer not found
  securitySchemes:
    bearerAuth:
      description: >
        The Fiskil Data Provider will include a self-signed JWT as a Bearer
        token in the `Authorization` header.

        You should verify this JWT using the JWKS URL you can find for your Data
        Provider instance in the Fiskil

        Console. To verify the JWT you **must**:
          * Verify the signature
          * Ensure the token has not expired by checking the `exp` claim
          * The `sub` and `iss` claims are your data provider subdomain
          * The `aud` claim is the URI of the resource being requested (excluding any query parameters)
          * The `jti` value is unique
        For further detail on security and authentication refer to our
        [Authentication](/docs/get-started/authentication) documentation
      type: http
      scheme: bearer
      bearerFormat: JWT

````