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

# Calculate Billing

> Calcula los cobros de billing para un periodo dado. Evalúa todos los paquetes de billing activos que coinciden con el tipo especificado y retorna payloads de transacción listos para Midaz. Todo o nada — si algún paquete falla, no se retornan resultados.



## OpenAPI

````yaml es/openapi/v3-current/fees-engine.yaml post /v1/billing/calculate
openapi: 3.1.0
info:
  title: Fees Engine
  description: ''
  version: 3.3.0
servers:
  - url: https://fees.sandbox.lerian.net
security: []
tags:
  - name: Fees Engine
paths:
  /v1/billing/calculate:
    post:
      tags:
        - Billing Calculation API
      summary: Calcular billing
      description: >-
        Calcula los cobros de billing para un periodo dado. Evalúa todos los
        paquetes de billing activos que coinciden con el tipo especificado y
        retorna payloads de transacción listos para Midaz. Todo o nada — si
        algún paquete falla, no se retornan resultados.
      parameters:
        - $ref: '#/components/parameters/XOrganizationId'
        - $ref: '#/components/parameters/Authorization'
        - $ref: '#/components/parameters/ContentType'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CalculateBillingRequest'
            examples:
              volumeMonthly:
                summary: Billing mensual por volumen
                value:
                  ledgerId: ldg_01HZ...
                  period: 2026-03
                  type: volume
              maintenanceWeekly:
                summary: Billing semanal de mantenimiento
                value:
                  ledgerId: ldg_01HZ...
                  period: 2026-W13
                  type: maintenance
              bothTypes:
                summary: Calcular todos los tipos de billing
                value:
                  ledgerId: ldg_01HZ...
                  period: 2026-03
      responses:
        '200':
          description: Resultados del cálculo de billing con payloads de transacción.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CalculateBillingResponse'
        '400':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Error0019:
                  $ref: '#/components/examples/Error0019'
                Error0020:
                  $ref: '#/components/examples/Error0020'
                Error0041:
                  $ref: '#/components/examples/Error0041'
                Error0053:
                  $ref: '#/components/examples/Error0053'
                Error0063:
                  $ref: '#/components/examples/Error0063'
        '404':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Error0059:
                  $ref: '#/components/examples/Error0059'
                Error0061:
                  $ref: '#/components/examples/Error0061'
        '422':
          description: >-
            No procesable — el cálculo falló debido a problemas de dependencia o
            datos.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Error0060:
                  $ref: '#/components/examples/Error0060'
                Error0062:
                  $ref: '#/components/examples/Error0062'
                Error0068:
                  $ref: '#/components/examples/Error0068'
        '500':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                Error0004:
                  $ref: '#/components/examples/Error0004'
      security: []
components:
  parameters:
    XOrganizationId:
      name: X-Organization-Id
      in: header
      description: Identificador único de la organización asociada a la solicitud.
      required: true
      schema:
        type: string
        example: 019c96a0-0a98-7287-9a31-786e0809c769
    Authorization:
      name: Authorization
      in: header
      description: >-
        El token de autorización en formato 'Bearer <token>'.


        **Importante:** Este encabezado es obligatorio si su entorno tiene
        habilitado Access Manager. Para obtener más información, consulte la
        documentación de [Access Manager](/es/access-manager).
      required: false
      schema:
        type: string
    ContentType:
      name: Content-Type
      in: header
      description: Tipo de medio del recurso. Debe ser `application/json`.
      required: true
      schema:
        type: string
        example: application/json
  schemas:
    CalculateBillingRequest:
      type: object
      properties:
        ledgerId:
          type: string
          description: Identificador único del Ledger para calcular el billing.
        period:
          type: string
          description: >-
            Periodo de billing. Formatos soportados: `YYYY-MM` (mensual),
            `YYYY-Www` (semanal, ej. `2026-W13`), o `YYYY-MM-DD` (diario).
        type:
          type: string
          enum:
            - volume
            - maintenance
          description: >-
            Filtrar por tipo de billing. Cuando se omite, se calculan tanto los
            paquetes de volumen como de mantenimiento.
      required:
        - ledgerId
        - period
    CalculateBillingResponse:
      type: object
      properties:
        results:
          type: array
          description: Un resultado por cada paquete de billing activo procesado.
          items:
            type: object
            properties:
              billingPackageId:
                type: string
                description: ID del paquete de billing que generó este resultado.
              billingPackageLabel:
                type: string
                description: Etiqueta del paquete de billing.
              billingType:
                type: string
                enum:
                  - volume
                  - maintenance
                description: Tipo del paquete de billing.
              period:
                type: string
                description: Periodo de billing usado para este cálculo.
              totalAccounts:
                type: integer
                description: Número total de cuentas evaluadas.
              totalCharged:
                type: integer
                description: Número de cuentas cobradas.
              totalSkipped:
                type: integer
                description: Número de cuentas omitidas (ej., cuota gratuita agotada).
              totalNetAmount:
                type: string
                description: Monto neto cobrado después de descuentos. String decimal.
              transactionPayload:
                type: object
                description: >-
                  Payload de transacción listo para enviarse a Midaz vía POST
                  /transactions/json. Incluye metadatos de auditoría
                  (billingPackageId, billingPeriod, detalles de precios) en el
                  campo metadata.
        summary:
          type: object
          description: Totales consolidados de todos los resultados.
          properties:
            totalResults:
              type: integer
              description: Número de paquetes de billing procesados.
            totalVolume:
              type: integer
              description: Número de resultados de volumen.
            totalMaintenance:
              type: integer
              description: Número de resultados de mantenimiento.
            totalNetAmount:
              type: string
              description: Monto neto total de todos los resultados. String decimal.
    Error:
      type: object
      properties:
        code:
          type: string
          description: Identificador único y estable del error.
        title:
          type: string
          description: Resumen breve del problema.
        message:
          type: string
          description: Orientación detallada para resolver el error.
      required:
        - code
        - title
        - message
      description: Mensaje de error devuelto en la respuesta.
  examples:
    Error0019:
      summary: Invalid header parameter
      value:
        code: FEE-0019
        title: Invalid header parameter
        message: >-
          One or more headers parameters are in an incorrect format. Please
          check the following parameters and ensure they meet the required
          format before trying again.
    Error0020:
      summary: Missing header
      value:
        code: FEE-0020
        title: Missing header
        message: >-
          Headers parameters is required. Please check the following header
          parameters %v and ensure they are passing the values correctly.
    Error0041:
      summary: Unmarshalling error
      value:
        code: FEE-0041
        title: Unmarshalling error
        message: 'Invalid value for field ''%s'': expected type ''%s'', but got ''%s''.'
    Error0053:
      summary: Invalid billing type
      value:
        code: FEE-0053
        title: Invalid billing type
        message: The type field must be `volume` or `maintenance`.
    Error0063:
      summary: Invalid period format
      value:
        code: FEE-0063
        title: Invalid period format
        message: >-
          The period field must follow the format YYYY-MM (monthly), YYYY-Www
          (weekly), or YYYY-MM-DD (daily).
    Error0059:
      summary: Target account not found
      value:
        code: FEE-0059
        title: Target account not found
        message: >-
          One or more accounts referenced in accountTarget could not be found in
          Midaz.
    Error0061:
      summary: No active billing packages
      value:
        code: FEE-0061
        title: No active billing packages
        message: No active billing packages were found for the given ledger and period.
    Error0060:
      summary: Billing calculation failed
      value:
        code: FEE-0060
        title: Billing calculation failed
        message: >-
          An internal error occurred while calculating billing for the given
          period.
    Error0062:
      summary: Segment resolution failed
      value:
        code: FEE-0062
        title: Segment resolution failed
        message: >-
          The system could not resolve the segment referenced in waivedAccounts.
          Verify the segment ID and Midaz connectivity.
    Error0068:
      summary: Midaz query failed
      value:
        code: FEE-0068
        title: Midaz query failed
        message: The system could not query Midaz. Verify connectivity and permissions.
    Error0004:
      summary: Internal Server Error
      value:
        code: FEE-0004
        title: Internal Server Error
        message: >-
          The server encountered an unexpected error. Please try again later or
          contact support.

````