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

# Agente de IA: Reporte de pólizas y recibos pendientes en Quálitas

> Exporta el reporte raw de Quálitas y publica un JSON limpio con pólizas y recibos pendientes.

El paso `qualitas.pending-collections` inicia sesión en Agentes 360, abre
**Pólizas por cobrar** y publica dos archivos:

1. el reporte `.xls` raw generado por Quálitas, cuando está disponible;
2. un JSON limpio y obligatorio bajo el schema estándar de aseguradoras
   `insurance.policy-receipt-dataset.v1`.

No abre cada póliza ni descarga avisos de cobro individuales.

## Requisito previo

Registra una credencial `qualitas.portal` para el mismo tenant:

| Campo | Contenido |
| - | - |
| `code` | Clave del agente. |
| `account` | Cuenta del agente. |
| `password` | Contraseña de Agentes 360. |

La automatización almacena únicamente el `credentialId`.

## Campos del paso

| Campo | Requerido | Descripción |
| - | - | - |
| `actionKey` | Sí | Debe ser `qualitas.pending-collections`. |
| `credentialId` | Sí | Credencial `qualitas.portal` del mismo tenant. |
| `name` | No | Nombre legible del paso. |

## Ejemplo

```json theme={null}
{
  "name": "Cobranza pendiente Quálitas",
  "trigger": {
    "type": "cron",
    "cron": "0 8 * * *",
    "timezone": "America/Mexico_City"
  },
  "steps": [
    {
      "name": "Reporte de recibos pendientes",
      "actionKey": "qualitas.pending-collections",
      "credentialId": "cred_0123456789ab"
    }
  ]
}
```

## Output

```json theme={null}
{
  "schemaVersion": "insurance.policy-receipt-dataset.v1",
  "generatedAt": "2026-09-25T20:00:00.000Z",
  "summary": {
    "policies": 22,
    "receipts": 22,
    "documents": 0,
    "failed": 0
  },
  "issues": [],
  "dataset": {
    "id": "<file-id>",
    "name": "dataset.json",
    "type": "application/json",
    "size": 18420,
    "sha256": "<sha256>",
    "sourceStepIndex": 0
  },
  "report": {
    "id": "<file-id>",
    "name": "Reporte_Cobranza_Qualitas.xls",
    "type": "application/vnd.ms-excel",
    "size": 54272,
    "sha256": "<sha256>",
    "sourceStepIndex": 0
  }
}
```

`report` es `null` si el portal no ofrece la exportación. En ese caso el paso
sigue publicando `dataset` y `issues` incluye la incidencia
`QUALITAS_RAW_REPORT_UNAVAILABLE`.

Ambos archivos quedan disponibles para pasos posteriores:

```javascript theme={null}
const archivos = files.fromStep(0);
const raw = archivos.find((archivo) => archivo.name.endsWith(".xls"));
const limpio = archivos.find((archivo) => archivo.type === "application/json");
if (!limpio) throw new Error("El paso no publicó el JSON normalizado");
const dataset = await limpio.json();

output = {
  tieneRaw: Boolean(raw),
  polizas: dataset.summary.policies,
  recibos: dataset.summary.receipts,
};
```

## JSON normalizado

El archivo `dataset.json` usa el schema compartido
`PolicyReceiptDatasetSchema` y contiene:

* aseguradora, póliza, ramo, endoso y asegurado;
* recibos agrupados por póliza;
* vencimiento, periodo de gracia, estado, moneda e importe;
* `rawFields` con los valores originales del portal;
* `extensions.qualitas` para serie, forma de pago y claves específicas;
* fuentes, incidencias y conteos consistentes.

Los importes sin moneda reconocida permanecen en `rawFields`; el paso no
inventa una divisa.

## Reporte raw

El portal actualmente entrega un archivo legacy Excel `.xls` mediante
`verExcelCobranza`. Antes de publicarlo, el paso valida:

* respuesta autenticada y no vacía;
* MIME `application/vnd.ms-excel`;
* magic bytes `D0 CF 11 E0`;
* máximo 10 MiB.

## Errores

El paso falla si las credenciales o el CAPTCHA no permiten ingresar, si la
tabla cambia de contrato o si el JSON no cumple el schema estándar. La ausencia
del raw produce una advertencia, no un fallo total.

> [!WARNING]
>
> El reporte y el JSON contienen nombres, pólizas y otros datos personales.
> Limita el acceso a usuarios autorizados del tenant.

## Relacionado

* [Tipos de paso](/automatizaciones/tipos-de-paso)
* [Archivos entre pasos](/automatizaciones/archivos-entre-pasos)
* [Crear automatización](/automatizaciones/crear-automatizacion)
* [Listar pasos de una ejecución](/automatizaciones/listar-pasos-ejecucion)


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