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

# Obtener prórrogas

> Obtiene las prórrogas de documentos de factoring de tu empresa, en cualquier estado. La respuesta está paginada, con un tamaño máximo de página de 100, y viene ordenada por `id` ascendente. El orden es estable: al recorrer todas las páginas ninguna prórroga se repite ni se pierde.

Todos los filtros son opcionales y se combinan con AND. Las fechas se envían como `YYYY-MM-DD`, los rangos son inclusivos y se interpretan a las 00:00 UTC de cada día. Por eso `endCreatedAt`, que se compara contra la hora exacta de creación, no incluye las prórrogas creadas durante ese mismo día: usa el día siguiente si las necesitas.

Para acotar la consulta a un cliente, usa `businessIdentifier`.

Una fecha que no existe en el calendario, como `2026-02-30` o `2026-13-01`, responde 400 con el campo que falló en `data.errors`.



## OpenAPI

````yaml openapi/clients.yaml GET /financing/extensions
openapi: 3.1.0
info:
  title: API de clientes de Pruff
  version: '1'
  description: >-
    Endpoints que tus sistemas llaman para leer y operar los datos de tu empresa
    en Pruff. Todas las solicitudes van por HTTPS y se autentican con el header
    `x-api-key`. Las convenciones de formato, paginación y errores se describen
    en https://docs.pruff.com/api/introduccion.
servers:
  - url: https://api.pruff.com/api/clients
security:
  - ApiKeyAuth: []
tags:
  - name: Facturas
    description: Consulta de facturas electrónicas, facturas transables y cesiones.
  - name: Documentos
    description: Consulta y creación de documentos asociados a tus clientes.
  - name: Archivos
    description: Carga de archivos a operaciones y a los requerimientos de tus documentos.
  - name: Financiamiento
    description: >-
      Simula créditos, crea solicitudes de factoring y consulta las prórrogas de
      tu empresa.
  - name: Comité
    description: >-
      Consulta las aprobaciones de una solicitud en los comités de riesgo y de
      operaciones, y registra nuevas firmas.
  - name: Chat
    description: Exporta y envía mensajes del chat de una solicitud.
  - name: Reportes
    description: >-
      Reportes de operaciones, cartera, recaudaciones, cuentas pendientes y
      flujos de tu empresa.
  - name: Datahub
    description: >-
      Consulta de la información tributaria, financiera y de riesgo que Pruff
      tiene de tus clientes y deudores.
  - name: Mercado Público
    description: >-
      Licitaciones y órdenes de compra de Mercado Público (ChileCompra) cargadas
      en Pruff.
  - name: CRM
    description: >-
      Datos comerciales de tu CRM en Pruff: empresas con su ficha, pipeline,
      prospectos, gestiones y simulaciones.
  - name: SGR
    description: Operaciones SGR (garantías) de tu empresa.
  - name: Sincronizador
    description: >-
      Pide sincronizar a un cliente con el SII o la TGR para obtener su
      información más actualizada, y consulta el estado de esas
      sincronizaciones.
  - name: Usuarios
    description: >-
      Administra los usuarios de tu empresa en Pruff (crear, editar, eliminar,
      consultar su perfil y asignar subordinados) y consulta las cuentas
      (empresas conectadas) a las que cada usuario tiene acceso.
  - name: Contactos
    description: Crea contactos asociados a las empresas de tu cartera.
paths:
  /financing/extensions:
    get:
      tags:
        - Financiamiento
      summary: Obtener prórrogas
      description: >-
        Obtiene las prórrogas de documentos de factoring de tu empresa, en
        cualquier estado. La respuesta está paginada, con un tamaño máximo de
        página de 100, y viene ordenada por `id` ascendente. El orden es
        estable: al recorrer todas las páginas ninguna prórroga se repite ni se
        pierde.


        Todos los filtros son opcionales y se combinan con AND. Las fechas se
        envían como `YYYY-MM-DD`, los rangos son inclusivos y se interpretan a
        las 00:00 UTC de cada día. Por eso `endCreatedAt`, que se compara contra
        la hora exacta de creación, no incluye las prórrogas creadas durante ese
        mismo día: usa el día siguiente si las necesitas.


        Para acotar la consulta a un cliente, usa `businessIdentifier`.


        Una fecha que no existe en el calendario, como `2026-02-30` o
        `2026-13-01`, responde 400 con el campo que falló en `data.errors`.
      operationId: getExtensions
      parameters:
        - name: folio
          in: query
          required: false
          description: Folio del documento prorrogado.
          schema:
            type: string
          example: '123'
        - name: businessIdentifier
          in: query
          required: false
          description: RUT del cliente (cedente) dueño del documento prorrogado.
          schema:
            type: string
          example: 11111111-1
        - name: stakeholderIdentifier
          in: query
          required: false
          description: RUT del deudor del documento prorrogado.
          schema:
            type: string
          example: 22222222-2
        - name: status
          in: query
          required: false
          description: >-
            Estado de la prórroga. `active` devuelve las prórrogas activas,
            `completed` las completadas y `all` todas, sin importar su estado.
          schema:
            type: string
            enum:
              - all
              - active
              - completed
            default: all
          example: active
        - name: paid
          in: query
          required: false
          description: >-
            Filtra por el campo `paid` de cada prórroga. Con `true` devuelve
            solo las prórrogas cuyo `paid` es `true`; con `false`, todas las
            demás, incluidas las que están en revisión o rechazadas. Si no lo
            envías no se filtra por pago.
          schema:
            type: string
            enum:
              - 'true'
              - 'false'
          example: 'true'
        - name: startDueDate
          in: query
          required: false
          description: Vencimiento de la prórroga desde esta fecha (inclusive).
          schema:
            type: string
            format: date
          example: '2026-06-20'
        - name: endDueDate
          in: query
          required: false
          description: >-
            Vencimiento de la prórroga hasta esta fecha (inclusive). No puede
            ser anterior a `startDueDate`.
          schema:
            type: string
            format: date
          example: '2026-12-31'
        - name: startCreatedAt
          in: query
          required: false
          description: Fecha de creación de la prórroga desde este día (inclusive).
          schema:
            type: string
            format: date
          example: '2026-01-01'
        - name: endCreatedAt
          in: query
          required: false
          description: >-
            Fecha de creación de la prórroga hasta este día. No puede ser
            anterior a `startCreatedAt`.
          schema:
            type: string
            format: date
          example: '2026-12-31'
        - name: startActivationDate
          in: query
          required: false
          description: Inicio de la prórroga desde esta fecha (inclusive).
          schema:
            type: string
            format: date
          example: '2026-01-01'
        - name: endActivationDate
          in: query
          required: false
          description: >-
            Inicio de la prórroga hasta esta fecha (inclusive). No puede ser
            anterior a `startActivationDate`.
          schema:
            type: string
            format: date
          example: '2026-12-31'
        - name: page
          in: query
          required: false
          description: Número de página, desde 1.
          schema:
            type: integer
            minimum: 1
            default: 1
          example: 1
        - name: pageSize
          in: query
          required: false
          description: Cantidad de prórrogas por página.
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
          example: 20
      responses:
        '200':
          description: Página de prórrogas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FinancingExtensionListResponse'
              example:
                data:
                  - id: 123
                    rateCost: 300000
                    rate: 3.5
                    operationCostFixed: 0
                    operationCostRateVariable: null
                    operationCostVariable: 0
                    status: Completada
                    observation: Prórroga acordada con el cliente
                    startDate: '2026-09-09'
                    dueDate: '2026-10-15'
                    createdAt: '2026-09-02'
                    solicitantId: 521
                    documentId: 8d5c1f0e-3b7a-4d2e-9c61-5a7e4b2f1c90
                    comiteeId: 1
                    comiteeOperationsId: 2
                    paymentDate: '2026-09-09'
                    folio: '1234321'
                    documentAmount: 11324765
                    businessName: Cliente Ejemplo SpA
                    businessIdentifier: 11111111-1
                    stakeholderName: Deudor Ejemplo SpA
                    stakeholderIdentifier: 22222222-2
                    paid: true
                    executives: Ana Pérez
                pagination:
                  total: 1
                  page: 1
                  pageSize: 10
                  totalPages: 1
        '400':
          description: >-
            Algún query param es inválido. `message` trae el código del error,
            `displayMessage` el detalle del primer problema y `data.errors`
            todos los problemas.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              examples:
                pageSizeTooBig:
                  summary: pageSize mayor al máximo
                  value:
                    message: too_big
                    displayMessage: pageSize must be less or equal to 100
                    data:
                      errors:
                        - path: pageSize
                          message: pageSize must be less or equal to 100
                          code: too_big
                invalidStatus:
                  summary: Valor de status inválido
                  value:
                    message: invalid_value
                    displayMessage: status must be a valid all, active or completed
                    data:
                      errors:
                        - path: status
                          message: status must be a valid all, active or completed
                          code: invalid_value
                invalidPaid:
                  summary: Valor de paid inválido
                  value:
                    message: invalid_value
                    displayMessage: paid must be true or false
                    data:
                      errors:
                        - path: paid
                          message: paid must be true or false
                          code: invalid_value
                invalidDate:
                  summary: Fecha con formato inválido
                  value:
                    message: invalid_format
                    displayMessage: Date must be formatted as YYYY-MM-DD
                    data:
                      errors:
                        - path: startDueDate
                          message: Date must be formatted as YYYY-MM-DD
                          code: invalid_format
                impossibleDate:
                  summary: Fecha que no existe en el calendario
                  value:
                    message: custom
                    displayMessage: Date must be formatted as YYYY-MM-DD
                    data:
                      errors:
                        - path: startDueDate
                          message: Date must be formatted as YYYY-MM-DD
                          code: custom
                invertedRange:
                  summary: Rango de fechas invertido
                  value:
                    message: custom
                    displayMessage: startDueDate must be before or equal to endDueDate
                    data:
                      errors:
                        - path: endDueDate
                          message: startDueDate must be before or equal to endDueDate
                          code: custom
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          description: Error inesperado en Pruff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                message: Internal server error
                displayMessage: Ocurrió un error al obtener las prórrogas.
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    FinancingExtensionListResponse:
      type: object
      required:
        - data
        - pagination
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/FinancingExtensionListItem'
        pagination:
          $ref: '#/components/schemas/Pagination'
    ValidationError:
      type: object
      required:
        - message
        - displayMessage
        - data
      description: Error de validación del body, de los query params o de los path params.
      properties:
        message:
          type: string
          description: >-
            Código del primer error de validación (por ejemplo `custom`,
            `invalid_type`, `invalid_format`, `invalid_value`, `invalid_union`).
        displayMessage:
          type: string
          description: >-
            Mensaje del primer error de validación, pensado para mostrarlo a una
            persona. Normalmente en español; algunos mensajes de validación
            vienen en inglés.
        data:
          type: object
          required:
            - errors
          properties:
            errors:
              type: array
              description: Todos los errores de validación encontrados.
              items:
                type: object
                required:
                  - path
                  - message
                  - code
                properties:
                  path:
                    type: string
                    description: >-
                      Campo con el error. Para listas incluye la posición, por
                      ejemplo `types.0`. `(root)` si el error es del body
                      completo.
                  message:
                    type: string
                    description: Descripción del error en español.
                  code:
                    type: string
                    description: Código del tipo de error.
    Error:
      type: object
      required:
        - message
      properties:
        message:
          type: string
          description: >-
            Identifica el error. En algunos casos es un texto en inglés con
            valores variables. Para tu lógica, usa el código HTTP y, cuando
            exista, `data.code`.
        displayMessage:
          type: string
          description: >-
            Mensaje pensado para mostrarlo a una persona. Normalmente en
            español; algunos mensajes de validación vienen en inglés.
        data:
          description: Detalle adicional del error, cuando existe.
    FinancingExtensionListItem:
      type: object
      required:
        - id
        - rateCost
        - rate
        - operationCostFixed
        - operationCostRateVariable
        - operationCostVariable
        - status
        - observation
        - startDate
        - dueDate
        - createdAt
        - solicitantId
        - documentId
        - comiteeId
        - comiteeOperationsId
        - paymentDate
        - folio
        - documentAmount
        - businessName
        - businessIdentifier
        - stakeholderName
        - stakeholderIdentifier
        - paid
      properties:
        id:
          type: integer
          description: >-
            Id de la prórroga. Úsalo como `requestId` con `requestType` igual a
            `FactoringExtension` en los endpoints de comité.
        rateCost:
          type: integer
          description: Costo neto de la diferencia de precio de la prórroga, en CLP.
        rate:
          type:
            - number
            - 'null'
          description: >-
            Tasa de diferencia de precio en porcentaje, con 2 decimales. Es
            `null` cuando la tasa es 0.
        operationCostFixed:
          type: integer
          description: Costo operacional fijo de la prórroga, en CLP.
        operationCostRateVariable:
          type:
            - number
            - 'null'
          description: >-
            Costo variable como porcentaje. Es `null` cuando el costo variable
            se definió como monto.
        operationCostVariable:
          type: integer
          description: Costo variable neto de la prórroga, en CLP.
        status:
          type: string
          description: >-
            Estado de la prórroga, en español. Por ejemplo `En revisión`,
            `Activa`, `Completada` o `Rechazada`.
        observation:
          type:
            - string
            - 'null'
          description: >-
            Observación registrada al solicitar la prórroga. Es `null` si no
            hay.
        startDate:
          type: string
          format: date
          description: Fecha de inicio de la prórroga, `YYYY-MM-DD`.
        dueDate:
          type: string
          format: date
          description: Nueva fecha de vencimiento que otorga la prórroga, `YYYY-MM-DD`.
        createdAt:
          type: string
          format: date
          description: Fecha en que se solicitó la prórroga, `YYYY-MM-DD`.
        solicitantId:
          type: integer
          description: Id del usuario que solicitó la prórroga.
        documentId:
          type: string
          description: Id del documento prorrogado.
        comiteeId:
          type:
            - integer
            - 'null'
          description: >-
            Id del comité de riesgo asignado a la prórroga. Es `null` si no
            tiene.
        comiteeOperationsId:
          type:
            - integer
            - 'null'
          description: >-
            Id del comité de operaciones asignado a la prórroga. Es `null` si no
            tiene.
        paymentDate:
          type:
            - string
            - 'null'
          format: date
          description: >-
            Fecha de vencimiento original del documento prorrogado,
            `YYYY-MM-DD`. Es `null` si el documento no tiene una operación
            asociada.
        folio:
          type: string
          description: Folio del documento prorrogado.
        documentAmount:
          type: integer
          description: >-
            Monto del documento prorrogado, en la divisa del documento (CLP para
            facturas). Para PEN viene en céntimos; para las demás divisas, en
            unidad entera.
        businessName:
          type: string
          description: Nombre del cliente (cedente) dueño del documento.
        businessIdentifier:
          type: string
          description: RUT del cliente dueño del documento.
        stakeholderName:
          type: string
          description: Nombre del deudor.
        stakeholderIdentifier:
          type: string
          description: RUT del deudor del documento.
        paid:
          type: boolean
          description: >-
            `true` si la prórroga está activa o completada y todas sus cuentas
            por cobrar están pagadas. En cualquier otro estado es `false`.
        executives:
          type: string
          description: >-
            Nombres de los ejecutivos del cliente, separados por coma. Solo se
            incluye cuando el usuario asociado a tu API key puede ver todos los
            clientes.
    Pagination:
      type: object
      required:
        - total
        - page
        - pageSize
        - totalPages
      properties:
        total:
          type: integer
          description: Cantidad total de elementos que cumplen los filtros.
        page:
          type: integer
          description: Página devuelta, desde 1.
        pageSize:
          type: integer
          description: Cantidad de elementos por página.
        totalPages:
          type: integer
          description: Cantidad total de páginas.
  responses:
    Unauthorized:
      description: >-
        Falta el header `x-api-key`, su valor no es válido o la cuenta de API de
        tu empresa no está habilitada.
      content:
        application/json:
          schema:
            type: object
            required:
              - message
            properties:
              message:
                type: string
          example:
            message: 'Unauthorized: Invalid API Key'
    TooManyRequests:
      description: >-
        Tu empresa superó el límite de solicitudes. Todas las API keys de tu
        empresa comparten el mismo límite. Espera los segundos que indica el
        header `Retry-After` (o `data.retryAfterSeconds`) antes de reintentar.
      headers:
        Retry-After:
          description: Segundos que debes esperar antes de reintentar.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: >-
              Rate limit exceeded: 501 requests in the current 60s window, limit
              is 500. Retry in 12s.
            displayMessage: >-
              Superaste el límite de 500 solicitudes cada 60 segundos. Vuelve a
              intentarlo en 12 segundos.
            data:
              code: RATE_LIMIT_EXCEEDED
              scope: All API keys of your company share this budget.
              limit: 500
              used: 501
              windowSeconds: 60
              retryAfterSeconds: 12
              resetAt: '2026-11-04T15:00:12.000Z'
              hint: >-
                Wait until resetAt (or honor the Retry-After header) before
                retrying. Avoid repeating identical requests: reuse responses
                you already fetched, use filters and larger pageSize values
                instead of one request per item, and cap your client
                concurrency.
    Timeout:
      description: >-
        La solicitud superó el tiempo máximo de 55 segundos. La operación puede
        haberse completado igual: antes de reintentar una solicitud que crea o
        modifica datos, verifica su estado.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: request_timeout
            displayMessage: La solicitud excedió el tiempo máximo permitido
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: API key que Pruff entrega a tu empresa.

````

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