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

# List Bank Account Transactions

> Returns the transactions Bolta fetched from the bank, in the order they changed in Bolta. This is not transaction time order. Newly loaded or visible-again transactions come as `ACTIVE`. Transactions hidden from the dashboard come as `REMOVED` with only the `id`. The same `id` can arrive more than once, so apply items in the order you receive them: overwrite or delete by `id`.

`hasMore` can be `true` even when `items` is empty, so decide whether to continue from `hasMore`. The API fills `nextCursor` on the last page too. Save it and pass it on your next call to receive only the transactions that changed since then. Transactions changed in the last 5 minutes wait for a later call. You need a Standard plan or higher, and the call deducts no points. [Bank account transactions guide](/en/api-introduction/bank-account-transactions)




## OpenAPI

````yaml /openapi.en.yaml get /v1/bankAccounts/transactions
openapi: 3.1.0
info:
  title: Bolta API
  description: >
    The Bolta e-tax invoice API. [API Overview](/en/api-introduction/overview) |
    [Authentication guide](/en/api-introduction/authentication) | [Use
    cases](/en/api-introduction/usecase-b2b)
  version: 1.0.0
servers:
  - url: https://xapi.bolta.io
    description: Bolta API server
security:
  - basicAuth: []
tags:
  - name: Tax Invoice Issuance
    description: >
      Issue and amend e-tax invoices. [Calculating the issuance
      amount](/en/api-introduction/issuance-guide) | [Amendment
      types](/en/api-introduction/amendment-guide)
  - name: Tax Invoice Retrieval
    description: Retrieve e-tax invoice results and request processing status.
  - name: Reverse Issuance
    description: >
      Request and manage reverse issuance of e-tax invoices. [Email-approval
      reverse issuance](/en/api-introduction/usecase-reverse-email) |
      [Simple-approval reverse
      issuance](/en/api-introduction/usecase-reverse-simple)
  - name: Cash Receipt
    description: >
      Issue, cancel, and check the status of cash receipts. Check the final
      result via webhook or the status API. A live request that remains in
      progress or needs its issuance result confirmed can be finalized after
      17:00 KST on the day following the request. [Cash receipt
      guide](/en/api-introduction/cash-receipt-guide) | [Cash receipt
      webhooks](/en/api-introduction/webhook-cash-receipt)
  - name: Business Registration Status
    description: >
      Check the registration status and tax type of a business registration
      number. Look up one number or up to 100 numbers at once. This API requires
      no issuer registration and no certificate. [Business registration status
      guide](/en/api-introduction/business-registration-status)
  - name: Bank Account Transactions
    description: >
      Retrieve the bank accounts and transactions connected to your own business
      in Bolta, and request a sync. You need a Standard plan or higher, and the
      calls deduct no points. Connect bank accounts in the Bolta dashboard
      first. [Bank account transactions
      guide](/en/api-introduction/bank-account-transactions)
  - name: Issuer
    description: >
      Register and manage businesses that act as tax invoice issuers.
      Certificate requirements depend on the issuance type.
      [Glossary](/en/api-introduction/glossary) | [Delegated
      issuance](/en/api-introduction/usecase-delegated) | [Brokered Tax Invoice
      Issuance](/en/api-introduction/usecase-brokered)
  - name: Certificate
    description: >
      Register and manage issuer certificates. [Certificate
      registration](/en/api-introduction/certificate-registration)
paths:
  /v1/bankAccounts/transactions:
    get:
      tags:
        - Bank Account Transactions
      summary: List Bank Account Transactions
      description: >
        Returns the transactions Bolta fetched from the bank, in the order they
        changed in Bolta. This is not transaction time order. Newly loaded or
        visible-again transactions come as `ACTIVE`. Transactions hidden from
        the dashboard come as `REMOVED` with only the `id`. The same `id` can
        arrive more than once, so apply items in the order you receive them:
        overwrite or delete by `id`.


        `hasMore` can be `true` even when `items` is empty, so decide whether to
        continue from `hasMore`. The API fills `nextCursor` on the last page
        too. Save it and pass it on your next call to receive only the
        transactions that changed since then. Transactions changed in the last 5
        minutes wait for a later call. You need a Standard plan or higher, and
        the call deducts no points. [Bank account transactions
        guide](/en/api-introduction/bank-account-transactions)
      parameters:
        - name: from
          in: query
          description: >-
            Start of the transaction date range, inclusive. Use a `YYYY-MM-DD`
            date in KST.
          required: false
          example: '2026-09-01'
          schema:
            type: string
            format: date
        - name: to
          in: query
          description: >-
            End of the transaction date range, inclusive. Use a `YYYY-MM-DD`
            date in KST. The API rejects a `to` earlier than `from` with `400`.
          required: false
          example: '2026-09-30'
          schema:
            type: string
            format: date
        - name: bankAccountId
          in: query
          description: >-
            Account `id` from the account list response. The API rejects an
            unknown account or another business's account with `404`.
          required: false
          example: '1'
          schema:
            type: string
        - name: transactionType
          in: query
          description: Transaction type
          required: false
          schema:
            $ref: '#/components/schemas/BankAccountTransactionType'
        - name: cursor
          in: query
          description: >-
            `nextCursor` from the previous response. Send it exactly as
            received. If you change the filters, start over without a cursor.
          required: false
          schema:
            type: string
        - name: limit
          in: query
          description: Maximum number of items per call
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 500
            default: 100
      responses:
        '200':
          description: Lookup succeeded
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BankAccountTransactionListResponse'
              examples:
                First page:
                  x-parity-id: first-page
                  summary: First page for a test key with limit=3
                  value:
                    items:
                      - status: ACTIVE
                        id: '1'
                        bankAccountId: '1'
                        bank: KB_STAR
                        accountNumber: 123456-01-234567
                        transactionAt: '2026-09-01T00:30:00Z'
                        transactionType: DEPOSIT
                        amount: 1100000
                        balanceAfterTransaction: 5100000
                        description: 주식회사볼타
                        currencyCode: KRW
                      - status: ACTIVE
                        id: '2'
                        bankAccountId: '1'
                        bank: KB_STAR
                        accountNumber: 123456-01-234567
                        transactionAt: '2026-09-01T06:10:00Z'
                        transactionType: WITHDRAW
                        amount: 55000
                        balanceAfterTransaction: 5045000
                        description: 통신요금
                        currencyCode: KRW
                      - status: ACTIVE
                        id: '3'
                        bankAccountId: '2'
                        bank: SHINHAN
                        accountNumber: 110-123-456789
                        transactionAt: '2026-09-02T01:00:00Z'
                        transactionType: DEPOSIT
                        amount: 330000
                        balanceAfterTransaction: 1330000
                        description: 홍길동
                        currencyCode: KRW
                    nextCursor: djE6MTc4ODMzMjQwMDAwMDAwMDoz
                    hasMore: true
                Last page:
                  x-parity-id: last-page
                  summary: >-
                    Next page fetched with the first page's nextCursor. An
                    archived transaction comes as REMOVED
                  value:
                    items:
                      - status: ACTIVE
                        id: '4'
                        bankAccountId: '1'
                        bank: KB_STAR
                        accountNumber: 123456-01-234567
                        transactionAt: '2026-09-03T08:45:00Z'
                        transactionType: WITHDRAW
                        amount: 2200000
                        balanceAfterTransaction: 2845000
                        description: 급여이체
                        currencyCode: KRW
                      - status: ACTIVE
                        id: '5'
                        bankAccountId: '2'
                        bank: SHINHAN
                        accountNumber: 110-123-456789
                        transactionAt: '2026-09-04T02:20:00Z'
                        transactionType: DEPOSIT
                        amount: 770000
                        balanceAfterTransaction: 2100000
                        description: 주식회사볼타
                        currencyCode: KRW
                      - status: REMOVED
                        id: '6'
                    nextCursor: djE6MTc4ODU3MDAwMDAwMDAwMDo2
                    hasMore: false
                Range with no matching transactions:
                  x-parity-id: empty-page
                  summary: >-
                    When hasMore is true, keep calling with nextCursor even if
                    items is empty
                  value:
                    items: []
                    nextCursor: djE6MTc4ODQxODgwMDAwMDAwMDo0
                    hasMore: true
          headers: {}
        '400':
          description: >
            `from` or `to` is not a `YYYY-MM-DD` date, `from` is later than
            `to`, or `transactionType` or `limit` is out of range. The response
            `code` is `INVALID_REQUEST`. A modified or malformed `cursor`
            returns `INVALID_CURSOR`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: API key authentication failed. The response has no body.
        '402':
          description: >-
            Your subscription is below the Standard plan. The response `code` is
            `PLAN_UPGRADE_REQUIRED`. Upgrade your plan from the billing menu in
            the Bolta dashboard, then call again.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: >-
            No account matches `bankAccountId`, or the account belongs to
            another business. The response `code` is `BANK_ACCOUNT_NOT_FOUND`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: >-
            Internal server error. The response `code` is
            `INTERNAL_SERVER_ERROR`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: >-
            Temporary internal API communication error. The response `code` is
            `SERVICE_UNAVAILABLE`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      deprecated: false
components:
  schemas:
    BankAccountTransactionType:
      type: string
      enum:
        - DEPOSIT
        - WITHDRAW
        - OTHER
      description: >
        Transaction type. `DEPOSIT`: Deposit. `WITHDRAW`: Withdrawal. `OTHER`:
        Other. The bank reported zero for both the deposit and withdrawal
        amounts, so `amount` is 0.
    BankAccountTransactionListResponse:
      type: object
      description: Bank account transaction list result
      properties:
        items:
          type: array
          description: >-
            Transactions in the order they changed in Bolta, not in transaction
            time order.
          items:
            $ref: '#/components/schemas/BankAccountTransaction'
        nextCursor:
          type: string
          description: >-
            Cursor for the next call. The API fills it on the last page too, so
            save it and pass it on your next collection.
        hasMore:
          type: boolean
          description: >-
            Whether more items are available right now. Can be `true` even when
            `items` is empty.
      required:
        - items
        - nextCursor
        - hasMore
    ErrorResponse:
      type: object
      description: The error response returned when an API request fails
      properties:
        code:
          type: string
          description: Error type identifier
        message:
          type: string
          description: Error description
        traceId:
          type: string
          description: Request trace identifier
      required:
        - code
        - message
        - traceId
    BankAccountTransaction:
      description: >
        A transaction item whose shape depends on `status`. `ACTIVE` carries
        every field; `REMOVED` carries only `status` and `id`.
      oneOf:
        - $ref: '#/components/schemas/ActiveBankAccountTransaction'
        - $ref: '#/components/schemas/RemovedBankAccountTransaction'
      discriminator:
        propertyName: status
        mapping:
          ACTIVE:
            $ref: '#/components/schemas/ActiveBankAccountTransaction'
          REMOVED:
            $ref: '#/components/schemas/RemovedBankAccountTransaction'
    ActiveBankAccountTransaction:
      type: object
      description: >-
        A transaction visible in the Bolta dashboard. Overwrite the item with
        the same `id`, or add it if none exists.
      properties:
        status:
          type: string
          const: ACTIVE
          description: Transaction status
        id:
          type: string
          description: >-
            Transaction identifier. Treat it as a string even if it looks
            numeric.
        bankAccountId:
          type: string
          description: Account `id` from the account list response
        bank:
          type: string
          description: Bank code
          examples:
            - KB_STAR
        accountNumber:
          type: string
          description: Account number with hyphens
        transactionAt:
          type: string
          format: date-time
          description: Transaction time (UTC)
        transactionType:
          $ref: '#/components/schemas/BankAccountTransactionType'
        amount:
          type: number
          description: >-
            Transaction amount. Always zero or greater for both deposits and
            withdrawals; use `transactionType` for the direction. Trailing
            decimal zeros are omitted.
        balanceAfterTransaction:
          type: number
          description: Balance after the transaction, in the same notation as `amount`.
        description:
          type:
            - string
            - 'null'
          description: Bank memo (description). `null` when the bank provides none.
        currencyCode:
          type: string
          description: Currency code
          examples:
            - KRW
      required:
        - status
        - id
        - bankAccountId
        - bank
        - accountNumber
        - transactionAt
        - transactionType
        - amount
        - balanceAfterTransaction
        - description
        - currencyCode
    RemovedBankAccountTransaction:
      type: object
      description: >-
        A transaction hidden from the dashboard, for example by disconnecting
        the account or archiving it. Delete the item with the same `id`, or
        ignore it if none exists.
      properties:
        status:
          type: string
          const: REMOVED
          description: Transaction status
        id:
          type: string
          description: Transaction identifier
      required:
        - status
        - id
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Base64-encode your API key and pass it. Enter the API key as the
        username and leave the password empty.

````