> ## 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/docs/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/docs/api-introduction/overview) | [Authentication
    guide](/en/docs/api-introduction/authentication) | [Use
    cases](/en/docs/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/docs/api-introduction/issuance-guide) | [Amendment
      types](/en/docs/api-introduction/amendment-guide)
  - name: Tax Invoice Retrieval
    description: >
      Retrieve e-tax invoice results and request processing status, and download
      the PDF of an issued tax invoice. [Tax invoice PDF
      guide](/en/docs/api-introduction/tax-invoice-pdf)
  - name: Reverse Issuance
    description: >
      Request and manage reverse issuance of e-tax invoices. [Email-approval
      reverse issuance](/en/docs/api-introduction/usecase-reverse-email) |
      [Simple-approval reverse
      issuance](/en/docs/api-introduction/usecase-reverse-simple)
  - name: Cash Receipt
    description: >
      Issue, cancel, and check the status of cash receipts. [Cash receipt
      guide](/en/docs/api-introduction/cash-receipt-guide) | [Cash receipt
      webhooks](/en/docs/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/docs/api-introduction/business-registration-status)
  - name: Revenue and Expense
    description: >
      Retrieve the revenue and expense tax invoices of your own business in
      Bolta in the order they changed, and request a collection. Responses
      include documents issued through Bolta and documents collected from
      Hometax. You need a Standard plan or higher, and the calls deduct no
      points. Connect Hometax in the Bolta dashboard first. [Revenue and expense
      guide](/en/docs/api-introduction/revenue-expense)
  - 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/docs/api-introduction/bank-account-transactions)
  - name: Bank Account Holder
    description: >
      Look up account holder names with a bank code and an account number. One
      path takes a single account and the other takes up to 100 accounts at
      once. Each account that returns a holder name deducts 50 points. [Bank
      account holder guide](/en/docs/api-introduction/bank-account-holder)
  - name: Document Issuance
    description: >
      Issue National Tax Service certificates from Hometax or a certified copy
      of corporate registry, and download the original PDF. Hometax documents
      are issued only for the business that owns the API key, and you must
      register a joint certificate in the Bolta dashboard. A corporate registry
      is issued for the corporation in `corporationNumber` and needs no joint
      certificate. Supported corporation types are stock company, limited
      company, general partnership company, limited partnership company, limited
      liability company, incorporated association, incorporated foundation,
      medical corporation, cooperative (including social cooperative), and other
      corporate entity (such as a patent corporation). Each document deducts 500
      points for Hometax documents, 1,000 points for a corporate registry view
      copy, and 1,500 points for a submission copy. [Document issuance
      guide](/en/docs/api-introduction/document-issuance)
  - name: Issuer
    description: >
      Register and manage businesses that act as tax invoice issuers.
      Certificate requirements depend on the issuance type.
      [Glossary](/en/docs/api-introduction/glossary) | [Delegated
      issuance](/en/docs/api-introduction/usecase-delegated) | [Brokered Tax
      Invoice Issuance](/en/docs/api-introduction/usecase-brokered)
  - name: Certificate
    description: >
      Register and manage issuer certificates. [Certificate
      registration](/en/docs/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/docs/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.
          required: false
          example: '2026-09-30'
          schema:
            type: string
            format: date
        - name: bankAccountId
          in: query
          description: Account `id` from the account list response
          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. A cursor is bound to the filters (`from`, `to`,
            `bankAccountId`, `transactionType`) and the API key it was issued
            for. If you change either, 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'
                        bankCode: '004'
                        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'
                        bankCode: '004'
                        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'
                        bankCode: '088'
                        accountNumber: 110-123-456789
                        transactionAt: '2026-09-02T01:00:00Z'
                        transactionType: DEPOSIT
                        amount: 330000
                        balanceAfterTransaction: 1330000
                        description: 홍길동
                        currencyCode: KRW
                    nextCursor: djI6MTc4ODMzMjQwMDAwMDAwMDozOjJ6OWZiOA
                    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'
                        bankCode: '004'
                        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'
                        bankCode: '088'
                        accountNumber: 110-123-456789
                        transactionAt: '2026-09-04T02:20:00Z'
                        transactionType: DEPOSIT
                        amount: 770000
                        balanceAfterTransaction: 2100000
                        description: 주식회사볼타
                        currencyCode: KRW
                      - status: REMOVED
                        id: '6'
                    nextCursor: djI6MTc4ODU3MDAwMDAwMDAwMDo2OjJ6OWZiOA
                    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: djI6MTc4ODQxODgwMDAwMDAwMDo0OnB0cnY1eQ
                    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`, as does a cursor sent with different
            filters or a different API key than the one it was issued for.
          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
        bankAccountId:
          type: string
          description: Account `id` from the account list response
        bankCode:
          $ref: '#/components/schemas/BankAccountBankCode'
        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.
        balanceAfterTransaction:
          type: number
          description: Balance after the transaction
        description:
          type:
            - string
            - 'null'
          description: Bank memo (description). `null` when the bank provides none.
        currencyCode:
          $ref: '#/components/schemas/BankAccountCurrencyCode'
      required:
        - status
        - id
        - bankAccountId
        - bankCode
        - 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
    BankAccountBankCode:
      type: string
      enum:
        - '088'
        - '004'
        - '020'
        - '081'
        - '023'
        - '027'
        - '011'
        - '003'
        - '031'
        - '032'
        - '071'
        - '089'
        - '045'
        - '048'
        - '039'
        - '034'
        - '035'
        - '037'
        - '002'
        - '007'
      description: >
        Three-digit standard bank code assigned by the Korea Financial
        Telecommunications & Clearings Institute (KFTC). `088`: Shinhan Bank.
        `004`: KB Kookmin Bank. `020`: Woori Bank. `081`: Hana Bank. `023`: SC
        First Bank. `027`: Citibank Korea. `011`: NH NongHyup Bank. `003`: IBK
        Industrial Bank of Korea. `031`: iM Bank (formerly Daegu Bank). `032`:
        Busan Bank. `071`: Korea Post. `089`: K Bank. `045`: MG Community Credit
        Cooperatives. `048`: National Credit Union Federation of Korea. `039`:
        Kyongnam Bank. `034`: Kwangju Bank. `035`: Jeju Bank. `037`: Jeonbuk
        Bank. `002`: Korea Development Bank. `007`: Suhyup Bank. Local NongHyup
        cooperative accounts also use `011`.
    BankAccountCurrencyCode:
      type: string
      enum:
        - KRW
        - USD
        - JPY
      description: |
        ISO 4217 currency code.
  securitySchemes:
    basicAuth:
      type: http
      scheme: basic
      description: >-
        Append a colon to your API key, Base64-encode it, and put it in the
        header. Enter the API key as the username and leave the password empty.

````