> ## 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 accrual run

> Queues an accrual batch for a business date and returns available journal/outbox reference data.



## OpenAPI

````yaml /pt/openapi/v3-current/lender.yaml post /api/v1/accrual-runs
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/accrual-runs:
    post:
      tags:
        - Accounting
      summary: Create accrual run
      description: >-
        Queues an accrual batch for a business date and returns available
        journal/outbox reference data.
      operationId: createAccrualRun
      parameters:
        - description: >-
            Canonical idempotency request ID. Required: this request moves
            money, and without a key a retry cannot be told apart from a second
            instruction.
          in: header
          name: X-Idempotency
          required: true
          schema:
            description: >-
              Canonical idempotency request ID. Required: this request moves
              money, and without a key a retry cannot be told apart from a
              second instruction.
            type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateAccrualRunHumaInputBody'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccrualRunHumaBody'
          description: Created
          headers:
            X-Idempotency-Replayed:
              description: >-
                "true" when this response replays a request already executed
                under the same X-Idempotency, so nothing ran a second time and
                no money moved again. Absent on a first execution.
              schema:
                type: string
        '400':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: >-
            The at-most-once contract refused the request before any handler
            ran: no X-Idempotency header (IDEMPOTENCY_KEY_REQUIRED), a key under
            a spelling this service does not read
            (IDEMPOTENCY_KEY_HEADER_UNKNOWN), or a request that could not be
            scoped to a tenant (IDEMPOTENCY_TENANT_REQUIRED). The code is in the
            problem document's `code` member.
        '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: Error
components:
  schemas:
    CreateAccrualRunHumaInputBody:
      additionalProperties: false
      properties:
        businessDate:
          description: >-
            Business date (YYYY-MM-DD) the run is executed on. The run
            recognizes the last CIVIL MONTH that fully elapsed before this date
            — a run dated anywhere in July closes June — for the WHOLE book, pro
            rata temporis by calendar days, with the loan's contracting month
            apportioned within that month. Any date up to today in São Paulo
            works, and no account is skipped for the day of the month it was
            disbursed on; a date after today in São Paulo is refused with 422
            (LENDER-0424) and nothing is written, because a run does not accept
            a future business date. Re-running the same competência is a no-op,
            so this is also the backfill lever: to close a month that was
            missed, post a date inside the following month.
          examples:
            - '2026-06-14'
          format: date
          type: string
        loanProductIds:
          description: Optional loan product identifiers to scope the run.
          items:
            format: uuid
            type: string
          maxItems: 100
          type:
            - array
            - 'null'
        mode:
          description: >-
            Label recorded on the run for correlation and logs. It does not
            change the cadence or select which accounts are recognized. The
            label is part of the run's correlation id, so "heartbeat" is
            reserved for the scheduled driver and is refused here.
          examples:
            - daily
          maxLength: 32
          minLength: 1
          type: string
      required:
        - businessDate
        - mode
      type: object
    AccrualRunHumaBody:
      additionalProperties: false
      properties:
        businessDate:
          description: Business date (YYYY-MM-DD, UTC) the run was queued for.
          examples:
            - '2026-06-14'
          type: string
        correlationId:
          description: >-
            Correlation identifier linking the run to its journal/outbox lineage
            and downstream events.
          examples:
            - 550e8400-e29b-41d4-a716-446655440002
          type: string
        id:
          description: Server-assigned UUID of the queued accrual run.
          examples:
            - 550e8400-e29b-41d4-a716-446655440000
          type: string
        journalReferenceId:
          description: UUID of the journal reference recording this run's posting lineage.
          examples:
            - 550e8400-e29b-41d4-a716-446655440001
          type: string
        outboxEventId:
          description: >-
            UUID of the emitted outbox event; omitted when no outbox event was
            recorded.
          examples:
            - 550e8400-e29b-41d4-a716-446655440003
          type: string
        status:
          description: Lifecycle status of the queued run (e.g. queued).
          examples:
            - queued
          type: string
      required:
        - id
        - businessDate
        - status
        - journalReferenceId
        - correlationId
      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
    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

````

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