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

> Devuelve la cartera de documentos: un registro por documento, con su solicitud, saldos, mora, conciliaciones, venta a fondo y cobranza. Por defecto devuelve la cartera activa (documentos sin pagar) de todos los productos. Cambia `dataType` para ver los documentos pagados, los que están en mora o toda la cartera.

**Filtros de fechas.** Cada rango se puede enviar con ambos extremos o con uno solo, y se aplica con el extremo que envíes: `startRequestDate` y `endRequestDate` (fecha de operación de la solicitud), `startPaymentDate` y `endPaymentDate` (vencimiento original del documento, sin prórrogas), y `startPaidAt` y `endPaidAt` (fecha de pago). Los extremos incluyen el día completo. Los filtros de fecha de pago solo se pueden usar con `dataType=completed` o `all`: con `active` (el valor por defecto) o `inArrear` los documentos están sin pagar, y la solicitud responde `400`.

**Paginación.** El servicio está paginado y soporta un tamaño máximo de página de 100.

**Versiones de campos.** La respuesta trae los campos de la versión 1 (marcados como obsoletos) y de la versión 2 (actual). Usa los de la versión 2: los de la versión 1 se eliminarán.

**Alcance.** Si tu API key pertenece a un usuario sin acceso a toda la cartera, solo ves los documentos de los clientes de su cartera y de su equipo, y los de las solicitudes que tiene asignadas.

**Cobranza judicial.** Según la configuración de tu empresa, los documentos en cobranza judicial pueden no aparecer en la cartera.

Todos los campos vienen siempre en cada registro: cuando no hay valor llegan en `null`, en lugar de omitirse.



## OpenAPI

````yaml openapi/clients.yaml GET /reporting/portfolio
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:
  /reporting/portfolio:
    get:
      tags:
        - Reportes
      summary: Obtener cartera
      description: >-
        Devuelve la cartera de documentos: un registro por documento, con su
        solicitud, saldos, mora, conciliaciones, venta a fondo y cobranza. Por
        defecto devuelve la cartera activa (documentos sin pagar) de todos los
        productos. Cambia `dataType` para ver los documentos pagados, los que
        están en mora o toda la cartera.


        **Filtros de fechas.** Cada rango se puede enviar con ambos extremos o
        con uno solo, y se aplica con el extremo que envíes: `startRequestDate`
        y `endRequestDate` (fecha de operación de la solicitud),
        `startPaymentDate` y `endPaymentDate` (vencimiento original del
        documento, sin prórrogas), y `startPaidAt` y `endPaidAt` (fecha de
        pago). Los extremos incluyen el día completo. Los filtros de fecha de
        pago solo se pueden usar con `dataType=completed` o `all`: con `active`
        (el valor por defecto) o `inArrear` los documentos están sin pagar, y la
        solicitud responde `400`.


        **Paginación.** El servicio está paginado y soporta un tamaño máximo de
        página de 100.


        **Versiones de campos.** La respuesta trae los campos de la versión 1
        (marcados como obsoletos) y de la versión 2 (actual). Usa los de la
        versión 2: los de la versión 1 se eliminarán.


        **Alcance.** Si tu API key pertenece a un usuario sin acceso a toda la
        cartera, solo ves los documentos de los clientes de su cartera y de su
        equipo, y los de las solicitudes que tiene asignadas.


        **Cobranza judicial.** Según la configuración de tu empresa, los
        documentos en cobranza judicial pueden no aparecer en la cartera.


        Todos los campos vienen siempre en cada registro: cuando no hay valor
        llegan en `null`, en lugar de omitirse.
      operationId: getPortfolio
      parameters:
        - name: type
          in: query
          required: false
          description: Producto de la cartera.
          schema:
            type: string
            enum:
              - all
              - factoring
              - credit
              - confirming
            default: all
          example: factoring
        - name: dataType
          in: query
          required: false
          description: >-
            Qué cartera se retorna: `active` (documentos sin pagar), `completed`
            (documentos pagados), `inArrear` (documentos sin pagar cuyo
            vencimiento, incluidas las prórrogas, ya pasó) o `all` (toda la
            cartera).
          schema:
            type: string
            enum:
              - active
              - completed
              - inArrear
              - all
            default: active
          example: all
        - name: startRequestDate
          in: query
          required: false
          description: >-
            Fecha de operación de la solicitud desde la cual quieres la cartera
            (YYYY-MM-DD), incluida. Puedes enviarla sin `endRequestDate`.
          schema:
            type: string
            format: date
          example: '2026-06-01'
        - name: endRequestDate
          in: query
          required: false
          description: >-
            Fecha de operación de la solicitud hasta la cual quieres la cartera
            (YYYY-MM-DD), incluida. Puedes enviarla sin `startRequestDate`.
          schema:
            type: string
            format: date
          example: '2026-06-20'
        - name: startPaidAt
          in: query
          required: false
          description: >-
            Fecha de pago del documento desde la cual quieres la cartera
            (YYYY-MM-DD), incluida. Solo se puede usar con `dataType=completed`
            o `all`; con `active` o `inArrear` la solicitud responde `400`.
          schema:
            type: string
            format: date
          example: '2026-06-01'
        - name: endPaidAt
          in: query
          required: false
          description: >-
            Fecha de pago del documento hasta la cual quieres la cartera
            (YYYY-MM-DD), incluida. Solo se puede usar con `dataType=completed`
            o `all`; con `active` o `inArrear` la solicitud responde `400`.
          schema:
            type: string
            format: date
          example: '2026-06-20'
        - name: startPaymentDate
          in: query
          required: false
          description: >-
            Fecha de vencimiento original del documento (`originalDueDate`), sin
            prórrogas, desde la cual quieres la cartera (YYYY-MM-DD), incluida.
            Puedes enviarla sin `endPaymentDate`.
          schema:
            type: string
            format: date
          example: '2026-06-01'
        - name: endPaymentDate
          in: query
          required: false
          description: >-
            Fecha de vencimiento original del documento (`originalDueDate`), sin
            prórrogas, hasta la cual quieres la cartera (YYYY-MM-DD), incluida.
            Puedes enviarla sin `startPaymentDate`.
          schema:
            type: string
            format: date
          example: '2026-06-20'
        - name: businessIdentifier
          in: query
          required: false
          description: RUT del cliente o acreedor (emisor del documento).
          schema:
            type: string
          example: 11111111-1
        - name: stakeholderIdentifier
          in: query
          required: false
          description: RUT del deudor.
          schema:
            type: string
          example: 76111111-6
        - name: folio
          in: query
          required: false
          description: Folio del documento.
          schema:
            type: string
          example: '12673'
        - name: requestId
          in: query
          required: false
          description: >-
            Identificador de una solicitud específica. Debe ser un entero entre
            1 y 2147483647; otro valor responde `400`. Un valor vacío
            (`requestId=`) se ignora y no filtra.
          schema:
            type: integer
            minimum: 1
            maximum: 2147483647
          example: 160
        - name: commercialExecutivePortfolioId
          in: query
          required: false
          description: >-
            Identificador del ejecutivo comercial de cartera. Filtra la cartera
            a los clientes que ese ejecutivo tiene asignados. Es el mismo valor
            que llega en el campo `commercialExecutivePortfolioId` de la
            respuesta. Si el ejecutivo no tiene clientes o documentos en la
            cartera pedida, `data` llega vacío. Se puede combinar con los demás
            filtros.
          schema:
            type: integer
            minimum: 1
          example: 1287
        - 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 documentos por página (máximo 100).
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 10
          example: 20
      responses:
        '200':
          description: Documentos de la cartera, de la página pedida.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReportPortfolioResponse'
              example:
                data:
                  - id: 00123456-dd49-43ae-8429-f5ef123456f2
                    type: Factura electrónica
                    executive: Ana Pérez
                    executiveId: 1015
                    executiveEmail: ana.perez@example.com
                    commercialExecutiveAssignedId: 1015
                    commercialExecutiveAssignedName: Ana Pérez
                    commercialExecutiveAssignedEmail: ana.perez@example.com
                    commercialExecutivePortfolioId: 1287
                    commercialExecutivePortfolioName: Luis Soto
                    commercialExecutivePortfolioEmail: luis.soto@example.com
                    clientIdentifier: 11111111-1
                    clientName: Cliente Ejemplo SpA
                    businessIdentifier: 11111111-1
                    businessName: Cliente Ejemplo SpA
                    stakeholderIdentifier: 76111111-6
                    stakeholderName: Deudor Ejemplo Ltda.
                    requestId: 5634
                    requestType: Factoring
                    requestDate: '2026-02-02'
                    documentType: Factura electrónica
                    folio: '12673'
                    amount: 1045631
                    invoiceAmount: 1045631
                    dueDate: '2026-03-20'
                    requestDocuments: 3
                    requestCost: 1667
                    requestCostIVA: 317
                    requestExpenses: 1944
                    requestExpensesIVA: 369
                    advancedPercentage: 99
                    advancedAmount: 941068
                    conciliationAmount: 0
                    conciliationDocumentAmount: 0
                    conciliationArrearAmount: 0
                    lastConciliationDate: null
                    lastConciliationPaidBy: ''
                    lastConciliationAmount: 0
                    biggerPayerName: ''
                    documentPaymentDate: null
                    documentPaymentDays: null
                    totalPaymentDate: null
                    totalPaymentDays: null
                    priceDifference: 61856
                    collectionStatus: Estado Normal
                    inLegalCollection: false
                    arrearDays: 0
                    arrearDaysTillDocumentPaid: 0
                    arrearAmount: 0
                    state: Vigente
                    remainingAmount: 1045631
                    documentRemainingAmount: 1045631
                    documentRemainingAmountNet: 941068
                    totalRemainingNet: 941068
                    economicSector: '-'
                    arrearRate: 3
                    dailyAccrual: 1048
                    rate: 1.8
                    fund: Fondo Ejemplo SpA
                    cessionaryIdentifier: 96111111-0
                    fundSellDate: '2026-02-03'
                    fundSellRate: 0.97
                    stillInFund: En fondo
                    resellDate: '2026-02-03'
                    resellRate: 0.97
                    resellDays: 27
                    fundCostTotal: 19841
                    stillInResell: En fondo
                    lastCollectionManagementStatus: Estado Normal
                    lastCollectionManagementOption: Gestionado
                    lastCollectionManagementDescription: Enviado email de cobranza
                    lastCollectionManagementDate: '2026-03-20'
                    issuedDate: '2026-01-29'
                    cancelDate: null
                    confirmDate: null
                    originalDueDate: '2026-03-01'
                    creditNoteAmount: 0
                    operationDays: 25
                    requestDays: 25
                    siiDescription: Cedida a Fondo Ejemplo SpA
                    financingAt: '2026-02-02'
                    surplusTotal: 10123
                    surplusEffective: 0
                    collectorName: Roberto Díaz
                    executiveManagerName: Jane Smith
                    executiveManagerEmail: jane.smith@example.com
                    exception: false
                    cessionStatus: Fondo
                pagination:
                  total: 1
                  page: 1
                  pageSize: 10
                  totalPages: 1
        '400':
          description: Algún parámetro es inválido.
          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
                pageInvalid:
                  summary: page inválida
                  value:
                    message: too_small
                    displayMessage: page and pageSize must be greater than 0
                    data:
                      errors:
                        - path: page
                          message: page and pageSize must be greater than 0
                          code: too_small
                dataTypeInvalid:
                  summary: dataType inválido
                  value:
                    message: invalid_value
                    displayMessage: Tipo de cartera inválido
                    data:
                      errors:
                        - path: dataType
                          message: Tipo de cartera inválido
                          code: invalid_value
                typeInvalid:
                  summary: type inválido
                  value:
                    message: invalid_value
                    displayMessage: >-
                      type query parameter must be either all or factoring or
                      credit or confirming
                    data:
                      errors:
                        - path: type
                          message: >-
                            type query parameter must be either all or factoring
                            or credit or confirming
                          code: invalid_value
                dateInvalid:
                  summary: Fecha inválida
                  value:
                    message: custom
                    displayMessage: Fecha de inicio inválida
                    data:
                      errors:
                        - path: startRequestDate
                          message: Fecha de inicio inválida
                          code: custom
                requestIdInvalid:
                  summary: requestId menor a 1
                  value:
                    message: too_small
                    displayMessage: requestId must be greater than 0
                    data:
                      errors:
                        - path: requestId
                          message: requestId must be greater than 0
                          code: too_small
                paidAtWithUnpaidDataType:
                  summary: Fecha de pago con dataType active o inArrear
                  value:
                    message: custom
                    displayMessage: >-
                      startPaidAt and endPaidAt require dataType completed or
                      all, since active and inArrear documents are unpaid
                    data:
                      errors:
                        - path: dataType
                          message: >-
                            startPaidAt and endPaidAt require dataType completed
                            or all, since active and inArrear documents are
                            unpaid
                          code: custom
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    ReportPortfolioResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ReportPortfolioItem'
          description: Documentos de la página pedida.
        pagination:
          $ref: '#/components/schemas/Pagination'
      required:
        - data
        - 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.
    ReportPortfolioItem:
      type: object
      description: >-
        Un documento de la cartera. Todos los campos llegan siempre en cada
        registro; cuando no hay valor llegan en `null`.
      properties:
        id:
          type: string
          description: >-
            Identificador del documento. Úsalo como `documentId` en `GET
            /reporting/document/{documentId}`.
          example: 00123456-dd49-43ae-8429-f5ef123456f2
        type:
          type: string
          description: Tipo de documento (por ejemplo `Factura electrónica Afecta`).
          example: Factura electrónica
        executive:
          type:
            - string
            - 'null'
          description: >-
            Nombre del ejecutivo comercial asignado a la solicitud. `null` si no
            hay. Versión anterior de `commercialExecutiveAssignedName`, en
            proceso de deprecación.
          deprecated: true
          example: Ana Pérez
        executiveId:
          type:
            - integer
            - 'null'
          description: >-
            Identificador del ejecutivo comercial asignado a la solicitud.
            Versión anterior de `commercialExecutiveAssignedId`, en proceso de
            deprecación.
          deprecated: true
          example: 1015
        executiveEmail:
          type:
            - string
            - 'null'
          description: >-
            Email del ejecutivo comercial asignado a la solicitud. `null` si la
            solicitud no tiene ejecutivo. Versión anterior de
            `commercialExecutiveAssignedEmail`, en proceso de deprecación.
          deprecated: true
          example: ana.perez@example.com
        commercialExecutiveAssignedId:
          type:
            - integer
            - 'null'
          description: >-
            Identificador del ejecutivo comercial asignado a la solicitud.
            `null` si la solicitud no tiene ejecutivo.
          example: 1015
        commercialExecutiveAssignedName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del ejecutivo comercial asignado a la solicitud. `null` si no
            hay.
          example: Ana Pérez
        commercialExecutiveAssignedEmail:
          type:
            - string
            - 'null'
          description: >-
            Email del ejecutivo comercial asignado a la solicitud. `null` si la
            solicitud no tiene ejecutivo.
          example: ana.perez@example.com
        commercialExecutivePortfolioId:
          type:
            - integer
            - 'null'
          description: >-
            Identificador del ejecutivo comercial que tiene al cliente en su
            cartera. `null` si el cliente no tiene ejecutivo de cartera.
          example: 1287
        commercialExecutivePortfolioName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del ejecutivo comercial que tiene al cliente en su cartera.
            `null` si no hay.
          example: Luis Soto
        commercialExecutivePortfolioEmail:
          type:
            - string
            - 'null'
          description: >-
            Email del ejecutivo comercial que tiene al cliente en su cartera.
            `null` si el cliente no tiene ejecutivo de cartera.
          example: luis.soto@example.com
        clientIdentifier:
          type: string
          description: >-
            RUT del cliente de la operación (en factoring, el cliente de la
            solicitud). Vacío si no se puede determinar.
          example: 11111111-1
        clientName:
          type: string
          description: >-
            Nombre del cliente de la operación (en factoring, el cliente de la
            solicitud). Vacío si no se puede determinar.
          example: Cliente Ejemplo SpA
        businessIdentifier:
          type: string
          description: RUT del cliente o acreedor (emisor del documento).
          example: 11111111-1
        businessName:
          type: string
          description: Nombre del cliente o acreedor (emisor del documento).
          example: Cliente Ejemplo SpA
        stakeholderIdentifier:
          type: string
          description: RUT del deudor del documento.
          example: 76111111-6
        stakeholderName:
          type: string
          description: Nombre del deudor del documento.
          example: Deudor Ejemplo Ltda.
        requestId:
          type: integer
          description: Identificador de la solicitud que financió el documento.
          example: 5634
        requestType:
          type: string
          description: >-
            Producto de la solicitud (por ejemplo `Factoring`, `Crédito` o
            `Confirming`).
          example: Factoring
        requestDate:
          type:
            - string
            - 'null'
          description: Fecha de operación de la solicitud (YYYY-MM-DD).
          format: date
          example: '2026-02-02'
        documentType:
          type: string
          description: Tipo de documento (mismo valor que `type`).
          example: Factura electrónica
        folio:
          type: string
          description: Folio del documento.
          example: '12673'
        amount:
          type: number
          description: Monto del documento.
          example: 1045631
        invoiceAmount:
          type: number
          description: >-
            Monto original de la factura en el SII, antes de ajustes por notas
            de crédito. Si el documento no es una factura o la factura no está
            en el SII, es igual a `amount`.
          example: 1045631
        dueDate:
          type: string
          description: >-
            Fecha de vencimiento del documento, incluyendo posibles prórrogas
            (YYYY-MM-DD).
          format: date
          example: '2026-03-20'
        requestDocuments:
          type: integer
          description: Cantidad de documentos de la solicitud.
          example: 3
        requestCost:
          type:
            - number
            - 'null'
          description: >-
            Parte del costo de la solicitud que corresponde a este documento
            (costo total dividido por `requestDocuments` y redondeado). En
            créditos es el costo de la operación del crédito.
          example: 1667
        requestCostIVA:
          type:
            - number
            - 'null'
          description: >-
            IVA de la parte del costo de la solicitud que corresponde a este
            documento. En créditos es el IVA del costo de la operación del
            crédito.
          example: 317
        requestExpenses:
          type:
            - number
            - 'null'
          description: >-
            Parte de los otros gastos de la solicitud que corresponde a este
            documento (gastos totales divididos por `requestDocuments` y
            redondeados). En créditos son los otros gastos del crédito, sin los
            impuestos ni la notaría.
          example: 1944
        requestExpensesIVA:
          type:
            - number
            - 'null'
          description: >-
            IVA de la parte de los otros gastos de la solicitud que corresponde
            a este documento. En créditos es el IVA de los otros gastos del
            crédito.
          example: 369
        advancedPercentage:
          type: number
          description: Porcentaje de anticipo de la solicitud (%).
          example: 99
        advancedAmount:
          type: number
          description: Monto anticipado del documento, redondeado al entero más cercano.
          example: 941068
        conciliationAmount:
          type: number
          description: >-
            Monto total conciliado (abonado) al documento, redondeado al entero
            más cercano.
          example: 0
        conciliationDocumentAmount:
          type: number
          description: Monto abonado aplicado al documento, sin considerar la mora.
          example: 0
        conciliationArrearAmount:
          type: number
          description: Monto abonado aplicado a la mora.
          example: 0
        lastConciliationDate:
          type:
            - string
            - 'null'
          description: Fecha de la última conciliación (YYYY-MM-DD). `null` si no tiene.
          format: date
          example: null
        lastConciliationPaidBy:
          type: string
          description: Pagador de la última conciliación. Vacío si no tiene conciliaciones.
          example: ''
        lastConciliationAmount:
          type: number
          description: Monto del último abono registrado.
          example: 0
        biggerPayerName:
          type: string
          description: >-
            Quién pagó la mayor parte del documento, considerando los abonos en
            orden de fecha hasta cubrir su monto original. Es un rol, no un
            nombre: `Deudor`, `Emisor` (emisor del documento; en factoring, el
            cedente), `Cliente` (cliente de la operación cuando es distinto del
            emisor, por ejemplo en confirming), `Factoring` o `-` (origen no
            identificado). Llega vacío mientras los abonos no cubran el monto
            del documento.
          example: ''
        documentPaymentDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha en que el documento quedó completamente pagado: el abono con
            el que las conciliaciones acumuladas alcanzan el monto original del
            documento, sin distinguir si cada abono se aplicó al documento o a
            la mora (YYYY-MM-DD). `null` si aún no se alcanza ese monto.
          format: date
          example: null
        documentPaymentDays:
          type:
            - integer
            - 'null'
          description: >-
            Días entre la fecha de operación de la solicitud y
            `documentPaymentDate`. `null` si el documento aún no queda
            completamente pagado.
          example: null
        totalPaymentDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha en que se pagó el saldo total del documento, incluida la mora,
            cuando el documento quedó marcado como pagado (YYYY-MM-DD). `null`
            si aún no está pagado.
          format: date
          example: null
        totalPaymentDays:
          type:
            - integer
            - 'null'
          description: >-
            Días entre la fecha de operación de la solicitud y
            `totalPaymentDate`. `null` si aún no está pagado.
          example: null
        priceDifference:
          type: number
          description: >-
            Diferencia de precio del documento, redondeada al entero más
            cercano.
          example: 61856
        collectionStatus:
          type:
            - string
            - 'null'
          description: >-
            Estado de cobranza de la última gestión del documento. `null` si el
            documento no tiene gestiones o la gestión no tiene estado.
          example: Estado Normal
        inLegalCollection:
          type: boolean
          description: >-
            Indica si el documento está actualmente en un proceso de cobranza
            judicial. Según la configuración de tu empresa, los documentos en
            cobranza judicial pueden no aparecer en la cartera.
          example: false
        arrearDays:
          type: integer
          description: Días de mora a la fecha de la consulta.
          example: 0
        arrearDaysTillDocumentPaid:
          type: integer
          description: >-
            Días de mora entre el vencimiento (`dueDate`) y
            `documentPaymentDate`; si el documento aún no se paga, hasta hoy. 0
            si se pagó antes del vencimiento.
          example: 0
        arrearAmount:
          type: number
          description: Monto de mora a la fecha de la consulta.
          example: 0
        state:
          type: string
          description: Estado del documento.
          enum:
            - Vigente
            - Prorrogado
            - Moroso
            - Pagado
          example: Vigente
        remainingAmount:
          type: number
          description: >-
            Saldo del documento. Versión anterior de `documentRemainingAmount`,
            en proceso de deprecación.
          deprecated: true
          example: 1045631
        documentRemainingAmount:
          type: number
          description: Saldo del documento, redondeado al entero más cercano.
          example: 1045631
        documentRemainingAmountNet:
          type: number
          description: Saldo financiado del documento, redondeado al entero más cercano.
          example: 941068
        totalRemainingNet:
          type: number
          description: >-
            Saldo financiado más mora del documento, redondeado al entero más
            cercano. 0 si el documento está pagado.
          example: 941068
        economicSector:
          type: string
          description: Sector económico del cliente. `-` si no está informado.
          example: '-'
        arrearRate:
          type:
            - number
            - 'null'
          description: >-
            Tasa de mora (%). `null` si la mora se calcula por tabla o no está
            definida.
          example: 3
        dailyAccrual:
          type: number
          description: Devengo diario, redondeado al entero más cercano.
          example: 1048
        rate:
          type:
            - number
            - 'null'
          description: Tasa de la solicitud (%), con 2 decimales.
          example: 1.8
        fund:
          type:
            - string
            - 'null'
          description: >-
            Nombre del fondo al que se vendió el documento. Si el documento no
            fue vendido, es el fondo por defecto de tu empresa; `null` si no hay
            ninguno.
          example: Fondo Ejemplo SpA
        cessionaryIdentifier:
          type:
            - string
            - 'null'
          description: >-
            RUT de la contraparte de la venta a fondo del documento. `null` si
            el documento no tiene venta a fondo.
          example: 96111111-0
        fundSellDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha de venta a fondo (YYYY-MM-DD). Versión anterior de
            `resellDate`, en proceso de deprecación.
          format: date
          deprecated: true
          example: '2026-02-03'
        fundSellRate:
          type:
            - number
            - 'null'
          description: >-
            Tasa de venta a fondo. Versión anterior de `resellRate`, en proceso
            de deprecación.
          deprecated: true
          example: 0.97
        stillInFund:
          type: string
          description: >-
            Estado fondo. Versión anterior de `stillInResell`, en proceso de
            deprecación.
          deprecated: true
          enum:
            - Sin vender
            - En fondo
            - Recomprada
          example: En fondo
        resellDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha de venta a fondo (YYYY-MM-DD). `null` si el documento no fue
            vendido.
          format: date
          example: '2026-02-03'
        resellRate:
          type:
            - number
            - 'null'
          description: >-
            Tasa de venta a fondo, con 2 decimales. `null` si el documento no
            fue vendido.
          example: 0.97
        resellDays:
          type:
            - integer
            - 'null'
          description: >-
            Días entre la venta a fondo y el vencimiento del fondo. `null` si el
            documento no fue vendido.
          example: 27
        fundCostTotal:
          type:
            - number
            - 'null'
          description: >-
            Costo de la venta a fondo, redondeado al entero más cercano. `null`
            si no hay costo.
          example: 19841
        stillInResell:
          type: string
          description: 'Estado de la venta a fondo: `Sin vender`, `En fondo` o `Recomprada`.'
          enum:
            - Sin vender
            - En fondo
            - Recomprada
          example: En fondo
        lastCollectionManagementStatus:
          type:
            - string
            - 'null'
          description: >-
            Estado de la última gestión de cobranza. `null` si el documento no
            tiene gestiones.
          example: Estado Normal
        lastCollectionManagementOption:
          type:
            - string
            - 'null'
          description: >-
            Sub-estado de la última gestión de cobranza. `null` si no tiene
            gestiones.
          example: Gestionado
        lastCollectionManagementDescription:
          type:
            - string
            - 'null'
          description: >-
            Observación de la última gestión de cobranza. `null` si no tiene
            gestiones.
          example: Enviado email de cobranza
        lastCollectionManagementDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha compromiso (deadline) de la última gestión de cobranza
            registrada (YYYY-MM-DD). `null` si no hay gestiones o si la última
            no tiene fecha compromiso.
          format: date
          example: '2026-03-20'
        issuedDate:
          type:
            - string
            - 'null'
          description: Fecha de emisión del documento (YYYY-MM-DD).
          format: date
          example: '2026-01-29'
        cancelDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha de rechazo del documento (YYYY-MM-DD). `null` si no fue
            rechazado.
          format: date
          example: null
        confirmDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha de acuse de recibo del documento (YYYY-MM-DD). `null` si no
            tiene acuse.
          format: date
          example: null
        originalDueDate:
          type:
            - string
            - 'null'
          description: >-
            Fecha original de vencimiento del documento, sin prórrogas
            (YYYY-MM-DD).
          format: date
          example: '2026-03-01'
        creditNoteAmount:
          type: number
          description: Monto de notas de crédito asociadas al documento.
          example: 0
        operationDays:
          type: integer
          description: >-
            Días entre la fecha de operación y la fecha de vencimiento. Versión
            anterior de `requestDays`, en proceso de deprecación.
          deprecated: true
          example: 25
        requestDays:
          type: integer
          description: Días entre la fecha de operación y la fecha de vencimiento.
          example: 25
        siiDescription:
          type: string
          description: >-
            Descripción del estado del documento en el SII (por ejemplo, a quién
            fue cedido).
          example: Cedida a Fondo Ejemplo SpA
        financingAt:
          type:
            - string
            - 'null'
          description: Fecha de financiamiento de la solicitud (YYYY-MM-DD).
          format: date
          example: '2026-02-02'
        surplusTotal:
          type: number
          description: Excedente retenido, redondeado al entero más cercano.
          example: 10123
        surplusEffective:
          type: number
          description: Excedente liberado, redondeado al entero más cercano.
          example: 0
        collectorName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del ejecutivo de cobranza. Si hay varios, vienen separados
            por coma. `null` si no tiene.
          example: Roberto Díaz
        executiveManagerName:
          type:
            - string
            - 'null'
          description: >-
            Nombre del manager del ejecutivo comercial. `null` si el ejecutivo
            no tiene manager.
          example: Jane Smith
        executiveManagerEmail:
          type:
            - string
            - 'null'
          description: >-
            Email del manager del ejecutivo comercial. `null` si el ejecutivo no
            tiene manager.
          example: jane.smith@example.com
        exception:
          type: boolean
          description: >-
            Indica si la solicitud se cursó con excepción de línea de crédito.
            En créditos siempre es `false`.
          example: false
        cessionStatus:
          type: string
          description: Estado de cesión del documento.
          enum:
            - No cedida
            - Factoring
            - Fondo
            - Otro
          example: Fondo
      required:
        - id
        - type
        - executive
        - executiveId
        - executiveEmail
        - commercialExecutiveAssignedId
        - commercialExecutiveAssignedName
        - commercialExecutiveAssignedEmail
        - commercialExecutivePortfolioId
        - commercialExecutivePortfolioName
        - commercialExecutivePortfolioEmail
        - clientIdentifier
        - clientName
        - businessIdentifier
        - businessName
        - stakeholderIdentifier
        - stakeholderName
        - requestId
        - requestType
        - requestDate
        - documentType
        - folio
        - amount
        - invoiceAmount
        - dueDate
        - requestDocuments
        - requestCost
        - requestCostIVA
        - requestExpenses
        - requestExpensesIVA
        - advancedPercentage
        - advancedAmount
        - conciliationAmount
        - conciliationDocumentAmount
        - conciliationArrearAmount
        - lastConciliationDate
        - lastConciliationPaidBy
        - lastConciliationAmount
        - biggerPayerName
        - documentPaymentDate
        - documentPaymentDays
        - totalPaymentDate
        - totalPaymentDays
        - priceDifference
        - collectionStatus
        - inLegalCollection
        - arrearDays
        - arrearDaysTillDocumentPaid
        - arrearAmount
        - state
        - remainingAmount
        - documentRemainingAmount
        - documentRemainingAmountNet
        - totalRemainingNet
        - economicSector
        - arrearRate
        - dailyAccrual
        - rate
        - fund
        - cessionaryIdentifier
        - fundSellDate
        - fundSellRate
        - stillInFund
        - resellDate
        - resellRate
        - resellDays
        - fundCostTotal
        - stillInResell
        - lastCollectionManagementStatus
        - lastCollectionManagementOption
        - lastCollectionManagementDescription
        - lastCollectionManagementDate
        - issuedDate
        - cancelDate
        - confirmDate
        - originalDueDate
        - creditNoteAmount
        - operationDays
        - requestDays
        - siiDescription
        - financingAt
        - surplusTotal
        - surplusEffective
        - collectorName
        - executiveManagerName
        - executiveManagerEmail
        - exception
        - cessionStatus
    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.
    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.
  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.
    InternalError:
      description: >-
        Error inesperado en Pruff. El texto de `message` puede variar (por
        ejemplo en mayúsculas); no dependas de él.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            message: Internal server error
    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.