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

# List loan accounts

> Returns one page of the loan book, newest first, for an operator holding no account identifier. Filters narrow the page; omitting one does not narrow. By default only live accounts are returned — set includeClosed to also see the ones a terminal lifecycle fact closed, each carrying the lifecycleStatus that says whether it was settled, ceded, ported, reversed or renegotiated. An operator restricted to their own book sees only the accounts they borrow or service; a request carrying no authenticated identity is refused rather than served the whole book.



## OpenAPI

````yaml /es/openapi/v3-current/lender.yaml get /api/v1/loan-accounts
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    Code-first OpenAPI 3.1 surface for the Lender service. Routes that move
    money are at-most-once per X-Idempotency: when one answers 5xx, the
    X-Idempotency-Fenced response header says whether that key is now refusing
    resends (true) or free to retry (false or absent). See
    docs/contracts/money-route-idempotency.md.
  license:
    name: Lerian Studio General License
  title: Lender API
  version: 1.0.0
servers:
  - url: https://lender.sandbox.lerian.net
security:
  - BearerAuth: []
tags:
  - description: >-
      Caller session projection: validated subject and effective permissions for
      the presented token.
    name: Session
  - description: >-
      Ledger accounting operations: journal entries and accrual postings for
      loan accounts.
    name: Accounting
  - description: >-
      Loan application intake and lifecycle: submission, decisioning, and
      status.
    name: LoanApplications
  - description: >-
      Loan product catalog: definition, versioning, and activation of lending
      products.
    name: LoanProducts
  - description: >-
      Loan account servicing operations: balances, schedules, and account-level
      actions.
    name: Loan Accounts
  - description: >-
      Portfolio dashboard read operations: aggregated portfolio and performance
      views.
    name: Dashboard
  - description: >-
      Jurisdiction registry: supported jurisdiction profiles and their
      capabilities.
    name: Jurisdictions
  - description: >-
      Jurisdiction-specific loan application operations (Brazil origination
      surface).
    name: Loan Applications
  - description: >-
      Tax computation operations for jurisdiction-specific lending (e.g. Brazil
      IOF).
    name: Tax
  - description: >-
      Brazil consignado privado operations: contract lifecycle, exclusion
      repair, and compensating adjustments.
    name: Consignado
  - description: >-
      Credit-instrument document template registry: versioned drafting and
      publication of CCB clausulado.
    name: DocumentTemplates
paths:
  /api/v1/loan-accounts:
    get:
      tags:
        - Loan Accounts
      summary: List loan accounts
      description: >-
        Returns one page of the loan book, newest first, for an operator holding
        no account identifier. Filters narrow the page; omitting one does not
        narrow. By default only live accounts are returned — set includeClosed
        to also see the ones a terminal lifecycle fact closed, each carrying the
        lifecycleStatus that says whether it was settled, ceded, ported,
        reversed or renegotiated. An operator restricted to their own book sees
        only the accounts they borrow or service; a request carrying no
        authenticated identity is refused rather than served the whole book.
      operationId: listLoanAccounts
      parameters:
        - description: >-
            Narrow to one originating application status. Only these two
            statuses ever carry a loan account.
          explode: false
          in: query
          name: status
          schema:
            description: >-
              Narrow to one originating application status. Only these two
              statuses ever carry a loan account.
            enum:
              - disbursed
              - active
            examples:
              - active
            type: string
        - description: >-
            Narrow to one borrower's book. The borrower identifier is a UUID —
            the same identity origination stored on the contract.
          explode: false
          in: query
          name: borrowerId
          schema:
            description: >-
              Narrow to one borrower's book. The borrower identifier is a UUID —
              the same identity origination stored on the contract.
            examples:
              - 550e8400-e29b-41d4-a716-446655440002
            format: uuid
            type: string
        - description: >-
            Narrow to one loan officer's book. Free-form authenticated identity
            subject, not necessarily a UUID, at most 255 characters; a
            system-originated contract carries the empty officer.
          explode: false
          in: query
          name: assignedOfficerId
          schema:
            description: >-
              Narrow to one loan officer's book. Free-form authenticated
              identity subject, not necessarily a UUID, at most 255 characters;
              a system-originated contract carries the empty officer.
            examples:
              - officer-xyz
            maxLength: 255
            type: string
        - description: Narrow to the contracts booked under one loan product version.
          explode: false
          in: query
          name: loanProductVersionId
          schema:
            description: Narrow to the contracts booked under one loan product version.
            examples:
              - 550e8400-e29b-41d4-a716-446655440001
            format: uuid
            type: string
        - description: Narrow to one ISO-4217 denomination.
          explode: false
          in: query
          name: currency
          schema:
            description: Narrow to one ISO-4217 denomination.
            examples:
              - BRL
            pattern: ^[A-Z]{3}$
            type: string
        - description: >-
            Include accounts a terminal lifecycle fact closed — settled, ceded,
            ported, reversed or renegotiated. Default false: the live book only.
            Included rows carry lifecycleStatus saying which of the five closed
            them.
          explode: false
          in: query
          name: includeClosed
          schema:
            default: false
            description: >-
              Include accounts a terminal lifecycle fact closed — settled,
              ceded, ported, reversed or renegotiated. Default false: the live
              book only. Included rows carry lifecycleStatus saying which of the
              five closed them.
            type: boolean
        - description: Page size.
          explode: false
          in: query
          name: limit
          schema:
            default: 25
            description: Page size.
            format: int64
            maximum: 100
            minimum: 1
            type: integer
        - description: Page offset.
          explode: false
          in: query
          name: offset
          schema:
            default: 0
            description: Page offset.
            format: int64
            maximum: 10000
            minimum: 0
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LoanAccountListHumaBody'
          description: OK
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
components:
  schemas:
    LoanAccountListHumaBody:
      additionalProperties: false
      properties:
        data:
          description: >-
            Page of loan accounts, newest first; always present, empty slice
            when none match.
          items:
            $ref: '#/components/schemas/LoanAccountSummaryHumaBody'
          type:
            - array
            - 'null'
      required:
        - data
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      type: object
    LoanAccountSummaryHumaBody:
      additionalProperties: false
      properties:
        assignedOfficerId:
          description: >-
            Identifier of the loan officer assigned to service this account, or
            empty on a system-originated contract, which has no human officer.
            Whatever the identity provider issues as the subject: not
            necessarily a UUID.
          examples:
            - officer-xyz
          type: string
        borrowerId:
          description: Identifier (UUID) of the borrower who holds this account.
          examples:
            - 550e8400-e29b-41d4-a716-446655440002
          format: uuid
          type: string
        createdAt:
          description: RFC 3339 UTC timestamp the originating application was created.
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        currency:
          description: ISO-4217 denomination of the contract.
          examples:
            - BRL
          type: string
        disbursedAt:
          description: >-
            ISO-8601 date the funds left; omitted while the account carries no
            disbursement timestamp.
          examples:
            - '2026-06-15'
          type: string
        lifecycleStatus:
          description: >-
            How this account was closed; absent for a live account, and only
            ever present when includeClosed is true. settled: the borrower
            discharged the debt. ceded: the receivable was sold. ported: the
            contract moved to another institution. reversed: a refinance the
            rail undid inside its regret window. renegotiated: a substantial
            renegotiation replaced this contract, and the debt is carried on the
            new account it opened. Only settled means the borrower discharged
            the debt — do not label any of the other four as one.
          enum:
            - settled
            - ceded
            - ported
            - reversed
            - renegotiated
          examples:
            - settled
          type: string
        loanAccountId:
          description: Loan account UUID.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        loanProductVersionId:
          description: Loan product version the contract was booked under.
          examples:
            - 550e8400-e29b-41d4-a716-446655440001
          type: string
        principalAmount:
          description: >-
            Contracted/disbursed principal (2 d.p. string). This is the amount
            lent, NOT the outstanding balance.
          examples:
            - '1234.56'
          type: string
        status:
          description: >-
            Originating application status (disbursed or active). Not a balance
            state.
          examples:
            - active
          type: string
      required:
        - loanAccountId
        - borrowerId
        - assignedOfficerId
        - loanProductVersionId
        - status
        - currency
        - principalAmount
        - createdAt
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````