> ## 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.

# Create a durable CLT quote

> Calculates exactly as the preview and stores the complete input and financial evidence for the trusted tenant. Identical content returns the stored quote with its original computedAt. Creates no application, borrower, account, debt or reservation.



## OpenAPI

````yaml /en/openapi/v3-current/lender.yaml post /api/v1/br/consignado/quotes
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).
  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. Operations under /api/v1/internal are back-office
      operations for the client's operators: they require a person's login, and
      a service credential gets 403.
    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. Operations under /api/v1/internal
      are back-office operations for the client's operators: they require a
      person's login, and a service credential gets 403.
    name: Consignado
  - description: >-
      Inbound record quarantine. Operations under /api/v1/internal are
      back-office operations for the client's operators: they require a person's
      login, and a service credential gets 403.
    name: Streaming
  - description: >-
      Credit-instrument document template registry: versioned drafting and
      publication of CCB clausulado.
    name: DocumentTemplates
paths:
  /api/v1/br/consignado/quotes:
    post:
      tags:
        - Loan Applications
      summary: Create a durable CLT quote
      description: >-
        Calculates exactly as the preview and stores the complete input and
        financial evidence for the trusted tenant. Identical content returns the
        stored quote with its original computedAt. Creates no application,
        borrower, account, debt or reservation.
      operationId: createConsignadoQuote
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConsignadoQuoteHumaBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConsignadoQuoteRecordHumaBody'
          description: Created
        '401':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unauthorized
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '404':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Not Found
        '413':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Request Entity Too Large
        '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
        '504':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Gateway Timeout
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            Any other status this operation may carry, rendered as a problem
            document — including a refusal produced ahead of the service, such
            as a gateway or ingress answering on its behalf.
components:
  schemas:
    ConsignadoQuoteHumaBody:
      additionalProperties: false
      properties:
        expectedDisbursementDate:
          description: Proposed civil date, YYYY-MM-DD, not an instant.
          examples:
            - '2026-10-08'
          format: date
          type: string
        firstDueDate:
          description: First installment civil date, YYYY-MM-DD.
          examples:
            - '2026-11-05'
          format: date
          type: string
        grossAmount:
          description: Financed principal in major currency units.
          examples:
            - '1201.20'
          type: string
        installmentAmount:
          description: >-
            Optional fixed payroll installment; omitted or zero uses the
            generated installment.
          examples:
            - '112.19'
          type: string
        loanProductVersionId:
          description: Product version that supplies the BR pricing and tax rules.
          format: uuid
          type: string
        originationFeeAmount:
          description: Optional fee withheld once from principal; omitted means zero.
          examples:
            - '10.00'
          type: string
        requestedInstallments:
          examples:
            - 12
          format: int64
          maximum: 600
          minimum: 1
          type: integer
        requestedInterestRate:
          description: >-
            Monthly interest rate as a decimal fraction; 0.018 means 1.8% per
            month.
          examples:
            - '0.018'
          type: string
      required:
        - loanProductVersionId
        - grossAmount
        - requestedInterestRate
        - requestedInstallments
        - expectedDisbursementDate
        - firstDueDate
      type: object
    ConsignadoQuoteRecordHumaBody:
      additionalProperties: false
      properties:
        computedAt:
          description: >-
            Calculation instant, UTC. Identical content replays the original
            instant.
          format: date-time
          type: string
        id:
          description: Durable quote identifier.
          format: uuid
          type: string
        input:
          $ref: '#/components/schemas/ConsignadoQuoteHumaBody'
          description: The quoted input; omitted fee and fixed installment read as 0.00.
        result:
          $ref: '#/components/schemas/ConsignadoQuoteHumaResponse'
          description: The frozen calculation, in the preview response shape.
      required:
        - id
        - computedAt
        - input
        - result
      type: object
    Detail:
      additionalProperties: true
      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
    ConsignadoQuoteHumaResponse:
      additionalProperties: false
      properties:
        calendarReference:
          type: string
        effectiveCost:
          $ref: '#/components/schemas/SchedulePreviewHumaEffectiveCost'
        grossAmount:
          type: string
        installments:
          items:
            $ref: '#/components/schemas/SchedulePreviewHumaInstallmentLine'
          type:
            - array
            - 'null'
        iofAdditional:
          type: string
        iofDaily:
          type: string
        jurisdictionCode:
          type: string
        netDeliveredAmount:
          type: string
        originationFeeAmount:
          type: string
        profileVersion:
          type: string
        rateTableSnapshotId:
          type: string
        totalInterest:
          type: string
        totalIof:
          type: string
        totalPrincipal:
          type: string
        totalTax:
          type: string
      required:
        - grossAmount
        - originationFeeAmount
        - netDeliveredAmount
        - totalTax
        - totalIof
        - iofDaily
        - iofAdditional
        - totalPrincipal
        - totalInterest
        - jurisdictionCode
        - profileVersion
        - calendarReference
        - rateTableSnapshotId
        - installments
        - effectiveCost
      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
    SchedulePreviewHumaEffectiveCost:
      additionalProperties: false
      properties:
        effectiveCostAnnualPct:
          description: >-
            Effective annual cost as a decimal-string percentage, scale 8 (e.g.
            "12.00000000").
          examples:
            - '12.00000000'
          type: string
        effectiveCostMonthlyPct:
          description: >-
            Effective monthly cost as a decimal-string percentage, scale 8 (e.g.
            "0.94888100").
          examples:
            - '0.94888100'
          type: string
        memoryOfCalculation:
          additionalProperties: {}
          description: >-
            Opaque step-by-step record of the effective-cost calculation (audit
            trail).
          type: object
        methodId:
          description: >-
            Identifier of the effective-cost calculation method applied by the
            jurisdiction profile.
          type: string
        rateTableSnapshot:
          additionalProperties: {}
          description: Opaque snapshot of the rate table inputs used in the calculation.
          type: object
      required:
        - methodId
        - effectiveCostAnnualPct
        - effectiveCostMonthlyPct
        - rateTableSnapshot
        - memoryOfCalculation
      type: object
    SchedulePreviewHumaInstallmentLine:
      additionalProperties: false
      properties:
        dueDate:
          description: Installment due date (date-only, YYYY-MM-DD).
          examples:
            - '2026-06-14'
          type: string
        interestAmount:
          description: >-
            Interest portion of the installment as a decimal string, minor-unit
            precision scale 2 (e.g. "234.56").
          examples:
            - '234.56'
          type: string
        number:
          description: 1-based installment sequence number.
          examples:
            - 1
          format: int64
          type: integer
        principalAmount:
          description: >-
            Principal portion of the installment as a decimal string, minor-unit
            precision scale 2 (e.g. "1000.00").
          examples:
            - '1000.00'
          type: string
        remainingBalance:
          description: >-
            Outstanding principal balance after this installment as a decimal
            string, minor-unit precision scale 2 (e.g. "49000.00").
          examples:
            - '49000.00'
          type: string
        totalAmount:
          description: >-
            Total installment amount (principal + interest) as a decimal string,
            minor-unit precision scale 2 (e.g. "1234.56").
          examples:
            - '1234.56'
          type: string
      required:
        - number
        - dueDate
        - totalAmount
        - principalAmount
        - interestAmount
        - remainingBalance
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.