> ## 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 resumen de facturas

> Devuelve la actividad comercial del cliente con las empresas con las que se relaciona mediante facturas, agregada por períodos. Para cada período lista hasta 50 empresas relacionadas, ordenadas por el campo y el orden que elijas (por defecto, `salesAmount` descendente). Incluye ventas, compras, anulaciones o rechazos y notas de crédito, en montos y cantidad de documentos. Una operación es de venta cuando el cliente emitió la factura a la empresa relacionada, y de compra cuando la empresa relacionada se la emitió al cliente. Los totales de cada período suman todas las empresas relacionadas, no solo las 50 listadas. Los montos están en pesos chilenos (CLP). Si el RUT no existe en Pruff, la respuesta es `200` con períodos vacíos, `totals` vacío y `lastScrapedDate` en `null`. Si existe pero no tiene facturas, los períodos y `totals` vienen vacíos y `lastScrapedDate` indica la última actualización de su información tributaria. El ejemplo se recortó a unos pocos períodos.



## OpenAPI

````yaml openapi/clients.yaml GET /datahub/{identifier}/invoices/summary
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:
  /datahub/{identifier}/invoices/summary:
    get:
      tags:
        - Datahub
      summary: Obtener resumen de facturas
      description: >-
        Devuelve la actividad comercial del cliente con las empresas con las que
        se relaciona mediante facturas, agregada por períodos. Para cada período
        lista hasta 50 empresas relacionadas, ordenadas por el campo y el orden
        que elijas (por defecto, `salesAmount` descendente). Incluye ventas,
        compras, anulaciones o rechazos y notas de crédito, en montos y cantidad
        de documentos. Una operación es de venta cuando el cliente emitió la
        factura a la empresa relacionada, y de compra cuando la empresa
        relacionada se la emitió al cliente. Los totales de cada período suman
        todas las empresas relacionadas, no solo las 50 listadas. Los montos
        están en pesos chilenos (CLP). Si el RUT no existe en Pruff, la
        respuesta es `200` con períodos vacíos, `totals` vacío y
        `lastScrapedDate` en `null`. Si existe pero no tiene facturas, los
        períodos y `totals` vienen vacíos y `lastScrapedDate` indica la última
        actualización de su información tributaria. El ejemplo se recortó a unos
        pocos períodos.
      operationId: getDatahubInvoicesSummary
      parameters:
        - name: identifier
          in: path
          required: true
          description: >-
            RUT del cliente, sin puntos, con guion y con la K del dígito
            verificador en mayúscula.
          schema:
            type: string
            example: 76111111-6
          example: 76111111-6
        - name: relatedBusinessIdentifier
          in: query
          required: false
          description: >-
            RUT de la empresa relacionada por la que quieres filtrar. Si lo
            omites o lo envías vacío, se consideran todas.
          schema:
            type: string
          example: 76222222-1
        - name: sortBy
          in: query
          required: false
          description: >-
            Campo por el que se ordenan las empresas relacionadas de cada
            período.
          schema:
            type: string
            enum:
              - salesAmount
              - salesAmountNet
              - salesDocuments
              - salesDocumentsConfirmed
              - buyAmount
              - buyAmountNet
              - salesCancelAmount
              - salesCancelDocuments
              - buyCancelAmount
              - buyCancelDocuments
              - salesCreditNoteAmount
              - salesCreditNoteDocuments
              - buyCreditNoteAmount
              - realSalesAmount
            default: salesAmount
          example: salesAmount
        - name: sortOrder
          in: query
          required: false
          description: Sentido del orden.
          schema:
            type: string
            enum:
              - asc
              - desc
            default: desc
          example: desc
      responses:
        '200':
          description: Resumen de facturas del cliente.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubInvoicesSummaryResponse'
              example:
                dataRelatedBusinesses:
                  Last24Months:
                    - identifier: 76222222-1
                      name: Empresa Relacionada SpA
                      salesAmount: 120000000
                      salesAmountNet: 114000000
                      salesDocuments: 18
                      salesDocumentsConfirmed: 16
                      buyAmount: 35000000
                      buyAmountNet: 35000000
                      salesCancelAmount: 0
                      salesCancelDocuments: 0
                      buyCancelAmount: 0
                      buyCancelDocuments: 0
                      salesCreditNoteAmount: 6000000
                      salesCreditNoteDocuments: 2
                      buyCreditNoteAmount: 0
                      realSalesAmount: 114000000
                  Last12Months:
                    - identifier: 76222222-1
                      name: Empresa Relacionada SpA
                      salesAmount: 80000000
                      salesAmountNet: 76000000
                      salesDocuments: 12
                      salesDocumentsConfirmed: 11
                      buyAmount: 20000000
                      buyAmountNet: 20000000
                      salesCancelAmount: 0
                      salesCancelDocuments: 0
                      buyCancelAmount: 0
                      buyCancelDocuments: 0
                      salesCreditNoteAmount: 4000000
                      salesCreditNoteDocuments: 1
                      buyCreditNoteAmount: 0
                      realSalesAmount: 76000000
                  October-2026: []
                totals:
                  Last24Months:
                    salesAmount: 120000000
                    salesAmountNet: 114000000
                    salesDocuments: 18
                    salesDocumentsConfirmed: 16
                    buyAmount: 35000000
                    buyAmountNet: 35000000
                    salesCancelAmount: 0
                    salesCancelDocuments: 0
                    buyCancelAmount: 0
                    buyCancelDocuments: 0
                    salesCreditNoteAmount: 6000000
                    salesCreditNoteDocuments: 2
                    buyCreditNoteAmount: 0
                    realSalesAmount: 114000000
                  Last12Months:
                    salesAmount: 80000000
                    salesAmountNet: 76000000
                    salesDocuments: 12
                    salesDocumentsConfirmed: 11
                    buyAmount: 20000000
                    buyAmountNet: 20000000
                    salesCancelAmount: 0
                    salesCancelDocuments: 0
                    buyCancelAmount: 0
                    buyCancelDocuments: 0
                    salesCreditNoteAmount: 4000000
                    salesCreditNoteDocuments: 1
                    buyCreditNoteAmount: 0
                    realSalesAmount: 76000000
                lastScrapedDate: '2026-11-03T18:58:53.284Z'
        '400':
          description: >-
            `sortBy` o `sortOrder` tienen un valor no permitido, o un query
            param viene repetido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              example:
                message: invalid_value
                displayMessage: >-
                  Invalid option: expected one of
                  "salesAmount"|"salesAmountNet"|"salesDocuments"|"salesDocumentsConfirmed"|"buyAmount"|"buyAmountNet"|"salesCancelAmount"|"salesCancelDocuments"|"buyCancelAmount"|"buyCancelDocuments"|"salesCreditNoteAmount"|"salesCreditNoteDocuments"|"buyCreditNoteAmount"|"realSalesAmount"
                data:
                  errors:
                    - path: sortBy
                      message: >-
                        Invalid option: expected one of
                        "salesAmount"|"salesAmountNet"|"salesDocuments"|"salesDocumentsConfirmed"|"buyAmount"|"buyAmountNet"|"salesCancelAmount"|"salesCancelDocuments"|"buyCancelAmount"|"buyCancelDocuments"|"salesCreditNoteAmount"|"salesCreditNoteDocuments"|"buyCreditNoteAmount"|"realSalesAmount"
                      code: invalid_value
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    DatahubInvoicesSummaryResponse:
      type: object
      required:
        - dataRelatedBusinesses
        - totals
        - lastScrapedDate
      properties:
        dataRelatedBusinesses:
          type: object
          description: >-
            Hasta 50 empresas relacionadas por período, ordenadas según `sortBy`
            y `sortOrder`. Las claves son períodos: `Last24Months`,
            `Last12Months`, `Last6Months`, `Last3Months`,
            `Last6MonthsPreviousYear` (los 6 meses completos que terminaron hace
            12 meses) y un mes calendario por cada uno de los últimos 24 meses y
            el mes en curso, con el formato `Mes-Año` en inglés (por ejemplo
            `October-2026`). Los períodos acumulados no incluyen el mes en
            curso. Los meses sin documentos vienen con un arreglo vacío. Los
            períodos `Last*` listan todas las empresas relacionadas de la
            ventana, con valores en `0` si no tuvieron actividad en ese período.
            El ejemplo omite la mayoría de los períodos.
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/DatahubInvoicesRelatedBusiness'
        totals:
          type: object
          description: >-
            Totales por período, calculados sobre todas las empresas
            relacionadas (no solo las 50 listadas). Solo vienen los períodos que
            tienen al menos una empresa relacionada.
          additionalProperties:
            $ref: '#/components/schemas/DatahubInvoicesTotalsEntry'
        lastScrapedDate:
          type:
            - string
            - 'null'
          format: date-time
          description: >-
            Fecha y hora de la última vez que Pruff actualizó la información
            tributaria del cliente, en ISO 8601. `null` si nunca se ha
            actualizado o el RUT no existe.
    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.
    DatahubInvoicesRelatedBusiness:
      type: object
      description: >-
        Actividad comercial de una empresa relacionada con el cliente en un
        período.
      required:
        - identifier
        - name
        - salesAmount
        - salesAmountNet
        - salesDocuments
        - salesDocumentsConfirmed
        - buyAmount
        - buyAmountNet
        - salesCancelAmount
        - salesCancelDocuments
        - buyCancelAmount
        - buyCancelDocuments
        - salesCreditNoteAmount
        - salesCreditNoteDocuments
        - buyCreditNoteAmount
        - realSalesAmount
      properties:
        identifier:
          type: string
          description: RUT de la empresa relacionada.
          example: 76222222-1
        name:
          type: string
          description: >-
            Razón social de la empresa relacionada. Texto vacío si Pruff no la
            conoce.
          example: Empresa Relacionada SpA
        salesAmount:
          type: number
          description: >-
            Monto bruto de las facturas emitidas por el cliente a esta empresa,
            en CLP.
        salesAmountNet:
          type: number
          description: >-
            Monto de ventas descontando las notas de crédito de ventas del
            período (`salesAmount` menos `salesCreditNoteAmount`), en CLP.
        salesDocuments:
          type: integer
          description: Cantidad de facturas emitidas por el cliente a esta empresa.
        salesDocumentsConfirmed:
          type: integer
          description: Cantidad de esas facturas que tienen confirmación registrada.
        buyAmount:
          type: number
          description: >-
            Monto bruto de las facturas que esta empresa emitió al cliente
            (compras del cliente), en CLP.
        buyAmountNet:
          type: number
          description: >-
            Monto de compras descontando las notas de crédito de compras
            (`buyAmount` menos `buyCreditNoteAmount`), en CLP.
        salesCancelAmount:
          type: number
          description: Monto de facturas de venta anuladas o rechazadas, en CLP.
        salesCancelDocuments:
          type: integer
          description: Cantidad de facturas de venta anuladas o rechazadas.
        buyCancelAmount:
          type: number
          description: Monto de facturas de compra anuladas o rechazadas, en CLP.
        buyCancelDocuments:
          type: integer
          description: Cantidad de facturas de compra anuladas o rechazadas.
        salesCreditNoteAmount:
          type: number
          description: >-
            Monto de notas de crédito emitidas por el cliente a esta empresa en
            el período, en CLP.
        salesCreditNoteDocuments:
          type: integer
          description: Cantidad de notas de crédito emitidas por el cliente a esta empresa.
        buyCreditNoteAmount:
          type: number
          description: >-
            Monto de notas de crédito que esta empresa emitió al cliente en el
            período, en CLP.
        realSalesAmount:
          type: number
          description: >-
            Monto de ventas efectivo, en CLP: suma de las facturas de venta no
            anuladas, descontando las notas de crédito que las referencian.
    DatahubInvoicesTotalsEntry:
      type: object
      description: >-
        Totales de un período, sumando todas las empresas relacionadas y todas
        sus facturas, no solo las 50 que se listan.
      required:
        - salesAmount
        - salesAmountNet
        - salesDocuments
        - salesDocumentsConfirmed
        - buyAmount
        - buyAmountNet
        - salesCancelAmount
        - salesCancelDocuments
        - buyCancelAmount
        - buyCancelDocuments
        - salesCreditNoteAmount
        - salesCreditNoteDocuments
        - buyCreditNoteAmount
        - realSalesAmount
      properties:
        salesAmount:
          type: number
          description: >-
            Monto bruto de las facturas emitidas por el cliente a esta empresa,
            en CLP.
        salesAmountNet:
          type: number
          description: >-
            Monto de ventas descontando las notas de crédito de ventas del
            período (`salesAmount` menos `salesCreditNoteAmount`), en CLP.
        salesDocuments:
          type: integer
          description: Cantidad de facturas emitidas por el cliente a esta empresa.
        salesDocumentsConfirmed:
          type: integer
          description: Cantidad de esas facturas que tienen confirmación registrada.
        buyAmount:
          type: number
          description: >-
            Monto bruto de las facturas que esta empresa emitió al cliente
            (compras del cliente), en CLP.
        buyAmountNet:
          type: number
          description: >-
            Monto de compras descontando las notas de crédito de compras
            (`buyAmount` menos `buyCreditNoteAmount`), en CLP.
        salesCancelAmount:
          type: number
          description: Monto de facturas de venta anuladas o rechazadas, en CLP.
        salesCancelDocuments:
          type: integer
          description: Cantidad de facturas de venta anuladas o rechazadas.
        buyCancelAmount:
          type: number
          description: Monto de facturas de compra anuladas o rechazadas, en CLP.
        buyCancelDocuments:
          type: integer
          description: Cantidad de facturas de compra anuladas o rechazadas.
        salesCreditNoteAmount:
          type: number
          description: >-
            Monto de notas de crédito emitidas por el cliente a esta empresa en
            el período, en CLP.
        salesCreditNoteDocuments:
          type: integer
          description: Cantidad de notas de crédito emitidas por el cliente a esta empresa.
        buyCreditNoteAmount:
          type: number
          description: >-
            Monto de notas de crédito que esta empresa emitió al cliente en el
            período, en CLP.
        realSalesAmount:
          type: number
          description: >-
            Monto de ventas efectivo, en CLP: suma de las facturas de venta no
            anuladas, descontando las notas de crédito que las referencian.
    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.