> ## 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 perfil del deudor

> Devuelve en una sola llamada el perfil de un deudor: resumen de morosidad del buró, deuda del cliente, procesos concursales en que aparece y comportamiento de pago en las operaciones de tu empresa, separado por producto (factoring, confirming y crédito). La información de buró y de deuda se lee de la última consulta guardada en Pruff; el endpoint no gatilla consultas nuevas a fuentes externas. El RUT debe existir como empresa en Pruff. Con pocos datos, los bloques de producto vienen con contadores en 0 y promedios en `null`.



## OpenAPI

````yaml openapi/clients.yaml GET /datahub/{identifier}/stakeholderProfile
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}/stakeholderProfile:
    get:
      tags:
        - Datahub
      summary: Obtener perfil del deudor
      description: >-
        Devuelve en una sola llamada el perfil de un deudor: resumen de
        morosidad del buró, deuda del cliente, procesos concursales en que
        aparece y comportamiento de pago en las operaciones de tu empresa,
        separado por producto (factoring, confirming y crédito). La información
        de buró y de deuda se lee de la última consulta guardada en Pruff; el
        endpoint no gatilla consultas nuevas a fuentes externas. El RUT debe
        existir como empresa en Pruff. Con pocos datos, los bloques de producto
        vienen con contadores en 0 y promedios en `null`.
      operationId: getDatahubStakeholderProfile
      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 (por ejemplo `76111111-6`). También se
            acepta un NIT colombiano con el formato `XXXXXXXXX-Y`. Un
            identificador que no es un RUT ni un NIT válido responde `400`.
            Envía el RUT con su dígito verificador correcto.
          schema:
            type: string
            example: 76111111-6
            pattern: ^(\d{1,8}-[\dK]|\d{1,15}-\d)$
          example: 76111111-6
      responses:
        '200':
          description: Perfil del deudor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubStakeholderProfileResponse'
              example:
                identifier: 76111111-6
                buroData:
                  lastUpdate: '2026-10-15T13:20:11.000Z'
                  totalDebt: 0
                  totalDocuments: 0
                  unit: CLP
                debtData:
                  lastUpdate: '2026-10-15T13:20:14.000Z'
                  period: 2026-08
                  unit: CLP_THOUSANDS
                  directaVigente: 152340
                  directaMorosa: 0
                  directaVencida: 0
                  directaComercial: 98210
                  leasingVigente: 12500
                  leasingMorosa: 0
                  creditoDisponible: 45000
                bankruptcyData: []
                factoringData:
                  documentsTotal: 8
                  onDateDocuments: 5
                  inArrearDocuments: 1
                  paidDocuments: 2
                  payDaysAverage: 52.5
                  payDaysMin: 45
                  payDaysMax: 60
                  operationDatePayDaysAverage: 41
                  operationDatePayDaysMin: 38
                  operationDatePayDaysMax: 44
                  amounts:
                    - currency: CLP
                      total: 25480000
                      paid: 6120000
                confirmingData:
                  documentsTotal: 0
                  onDateDocuments: 0
                  inArrearDocuments: 0
                  paidDocuments: 0
                  payDaysAverage: null
                  payDaysMin: null
                  payDaysMax: null
                  operationDatePayDaysAverage: null
                  operationDatePayDaysMin: null
                  operationDatePayDaysMax: null
                  amounts: []
                creditData:
                  documentsTotal: 0
                  onDateDocuments: 0
                  inArrearDocuments: 0
                  paidDocuments: 0
                  payDaysAverage: null
                  payDaysMin: null
                  payDaysMax: null
                  operationDatePayDaysAverage: null
                  operationDatePayDaysMin: null
                  operationDatePayDaysMax: null
                  amounts: []
        '400':
          description: El `identifier` no es un RUT o NIT válido.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
              example:
                message: invalid_union
                displayMessage: El RUT o Nit ingresado no es válido.
                data:
                  errors:
                    - path: identifier
                      message: El RUT o Nit ingresado no es válido.
                      code: invalid_union
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: El RUT no está registrado como empresa en Pruff.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatahubNotFoundError'
              example:
                message: BUSINESS_NOT_FOUND
                displayMessage: No se encontró la empresa indicada
        '429':
          $ref: '#/components/responses/TooManyRequests'
        '500':
          $ref: '#/components/responses/InternalError'
        '504':
          $ref: '#/components/responses/Timeout'
components:
  schemas:
    DatahubStakeholderProfileResponse:
      type: object
      required:
        - identifier
        - buroData
        - debtData
        - bankruptcyData
        - factoringData
        - confirmingData
        - creditData
      properties:
        identifier:
          type: string
          description: RUT del deudor consultado.
          example: 76111111-6
        buroData:
          type:
            - object
            - 'null'
          description: >-
            Resumen de morosidad de la última consulta de buró de tu empresa.
            `null` si no hay un informe de buró disponible para el deudor (nunca
            se consultó o no se pudo leer en este momento). Reintenta antes de
            asumir que no existe.
          properties:
            lastUpdate:
              type: string
              format: date-time
              description: Fecha y hora de la última consulta de buró (ISO 8601).
            totalDebt:
              type: number
              description: >-
                Monto total de deudas morosas informadas por el buró (boletines
                electrónico, comercial, laboral e información comercial; sin
                protestos), en CLP.
            totalDocuments:
              type: integer
              description: Cantidad de documentos morosos informados por el buró.
            unit:
              type: string
              description: Unidad de los montos de `buroData`. Siempre `CLP`.
              enum:
                - CLP
          required:
            - lastUpdate
            - totalDebt
            - totalDocuments
            - unit
        debtData:
          type:
            - object
            - 'null'
          description: >-
            Deuda del cliente del período más reciente disponible. `null` si no
            hay una consulta guardada.
          properties:
            lastUpdate:
              type: string
              format: date-time
              description: Fecha y hora de la última consulta de deuda (ISO 8601).
            period:
              type: string
              description: Período informado, con el formato `AAAA-MM`.
              example: 2026-08
            unit:
              type: string
              description: >-
                Unidad de los montos de `debtData`. Siempre `CLP_THOUSANDS`:
                miles de pesos chilenos.
              enum:
                - CLP_THOUSANDS
            directaVigente:
              type:
                - number
                - 'null'
              description: Deuda directa vigente. `null` si el período no la informa.
            directaMorosa:
              type:
                - number
                - 'null'
              description: Deuda directa morosa. `null` si el período no la informa.
            directaVencida:
              type:
                - number
                - 'null'
              description: Deuda directa vencida. `null` si el período no la informa.
            directaComercial:
              type:
                - number
                - 'null'
              description: Deuda directa comercial. `null` si el período no la informa.
            leasingVigente:
              type:
                - number
                - 'null'
              description: Deuda de leasing vigente. `null` si el período no la informa.
            leasingMorosa:
              type:
                - number
                - 'null'
              description: Deuda de leasing morosa. `null` si el período no la informa.
            creditoDisponible:
              type:
                - number
                - 'null'
              description: Línea de crédito disponible. `null` si el período no la informa.
          required:
            - lastUpdate
            - period
            - unit
            - directaVigente
            - directaMorosa
            - directaVencida
            - directaComercial
            - leasingVigente
            - leasingMorosa
            - creditoDisponible
        bankruptcyData:
          type: array
          description: >-
            Publicaciones en procesos concursales en que aparece el deudor, de
            la más reciente a la más antigua. Lista vacía si no tiene.
          items:
            type: object
            required:
              - role
              - process
              - name
              - court
              - date
            properties:
              role:
                type: string
                description: Rol de la causa del proceso concursal.
                example: C-456-2026
              process:
                type: string
                description: Tipo de procedimiento concursal.
                example: Liquidación
              name:
                type: string
                description: Nombre informado en la publicación.
              court:
                type: string
                description: Tribunal.
                example: 2° Juzgado Civil de Santiago
              date:
                type: string
                format: date-time
                description: Fecha de la publicación (ISO 8601).
        factoringData:
          allOf:
            - $ref: '#/components/schemas/DatahubStakeholderPaymentBehavior'
          description: Comportamiento de pago en operaciones de factoring.
        confirmingData:
          allOf:
            - $ref: '#/components/schemas/DatahubStakeholderPaymentBehavior'
          description: Comportamiento de pago en operaciones de confirming.
        creditData:
          allOf:
            - $ref: '#/components/schemas/DatahubStakeholderPaymentBehavior'
          description: Comportamiento de pago en operaciones de crédito.
    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.
    DatahubNotFoundError:
      type: object
      description: El RUT indicado no existe en Pruff.
      required:
        - message
      properties:
        message:
          type: string
          description: Código del error.
        displayMessage:
          type: string
          description: >-
            Mensaje pensado para mostrarlo a una persona, cuando existe.
            Normalmente en español; algunos mensajes de validación vienen en
            inglés.
    DatahubStakeholderPaymentBehavior:
      type: object
      description: >-
        Comportamiento de pago del deudor en las operaciones de tu empresa para
        un producto.
      required:
        - documentsTotal
        - onDateDocuments
        - inArrearDocuments
        - paidDocuments
        - payDaysAverage
        - payDaysMin
        - payDaysMax
        - operationDatePayDaysAverage
        - operationDatePayDaysMin
        - operationDatePayDaysMax
        - amounts
      properties:
        documentsTotal:
          type: integer
          description: >-
            Cantidad total de documentos del deudor en ese producto, en
            operaciones vigentes o completadas.
        onDateDocuments:
          type: integer
          description: Documentos sin pagar que aún no vencen.
        inArrearDocuments:
          type: integer
          description: Documentos sin pagar que ya vencieron.
        paidDocuments:
          type: integer
          description: Documentos pagados.
        payDaysAverage:
          type:
            - number
            - 'null'
          description: >-
            Promedio de días entre la emisión del documento y su pago, con dos
            decimales. `null` si no hay documentos pagados.
        payDaysMin:
          type:
            - number
            - 'null'
          description: >-
            Mínimo de días entre la emisión del documento y su pago. `null` si
            no hay documentos pagados.
        payDaysMax:
          type:
            - number
            - 'null'
          description: >-
            Máximo de días entre la emisión del documento y su pago. `null` si
            no hay documentos pagados.
        operationDatePayDaysAverage:
          type:
            - number
            - 'null'
          description: >-
            Promedio de días entre la fecha de la operación y el pago del
            documento, con dos decimales. `null` si no hay documentos pagados.
        operationDatePayDaysMin:
          type:
            - number
            - 'null'
          description: >-
            Mínimo de días entre la fecha de la operación y el pago. `null` si
            no hay documentos pagados.
        operationDatePayDaysMax:
          type:
            - number
            - 'null'
          description: >-
            Máximo de días entre la fecha de la operación y el pago. `null` si
            no hay documentos pagados.
        amounts:
          type: array
          description: >-
            Montos por moneda: una entrada por cada moneda en que el deudor
            tiene documentos. Nunca se suman montos de monedas distintas. Lista
            vacía si no tiene documentos.
          items:
            type: object
            required:
              - currency
              - total
              - paid
            properties:
              currency:
                type: string
                description: Código de la moneda.
                example: CLP
                enum:
                  - CLP
                  - UF
                  - USD
                  - EUR
                  - UTM
                  - COP
                  - ARS
                  - PEN
                  - BRL
                  - MXN
              total:
                type: number
                description: >-
                  Monto total de los documentos en esa moneda, pagados y sin
                  pagar. Viene en la unidad de la moneda, con sus decimales.
              paid:
                type: number
                description: Monto de los documentos pagados en esa moneda.
    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.