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

# Inferencia automática

> Cómo deducimos emisor y receptor en los endpoints _auto a partir de la CLABE o tarjeta.

Banxico requiere que las consultas de CEP incluyan el **código de banco emisor y receptor** (`5 dígitos` cada uno). Para evitar que tengas que mantener esa tabla, los endpoints terminados en `_auto` infieren ambos valores automáticamente.

## Reglas

<Steps>
  <Step title="Receptor desde la cuenta">
    Si la `cuenta` es **CLABE de 18 dígitos**, los **3 primeros dígitos** identifican el banco con precisión 100% (catálogo `clabe.BANKS`).
  </Step>

  <Step title="Emisor desde la clave de rastreo">
    Algunos prefijos de `clave_rastreo` están mapeados a CLABE → código Banxico (`EMISOR_PREFIX_TO_CLABE`). Si hay match, lo usamos directamente.
  </Step>

  <Step title="Fallback: lista de candidatos">
    Si no podemos deducir el emisor por prefijo, probamos contra una lista corta de bancos comunes (`CANDIDATE_EMISOR_CLABES`) y devolvemos el primero que responda con un CEP válido.
  </Step>

  <Step title="Si nada funciona">
    Devolvemos **`400 INFERENCE_FAILED`** indicando qué pieza falta. Tu cliente debe llamar el endpoint sin `_auto` con `emisor` (y opcionalmente `receptor`) explícitos.
  </Step>
</Steps>

## Cuándo usar cada modo

| Caso                                               | Endpoint recomendado                                 |
| -------------------------------------------------- | ---------------------------------------------------- |
| Tienes la CLABE del receptor (lo más común)        | `/v1/cep/xml_auto` o `/v1/cep/pdf_auto`              |
| Tienes tarjeta (no CLABE)                          | `_auto` igual; intentamos por candidatos             |
| Conoces emisor + receptor (por integración previa) | Versión sin `_auto` (más rápida, no hace reintentos) |
| Quieres PDF + XML en un solo request               | `/v1/cep/zip_auto`                                   |

## Headers de trazabilidad

Las respuestas exitosas de `_auto` incluyen:

| Header                | Significado                                                     |
| --------------------- | --------------------------------------------------------------- |
| `X-Inferred-Emisor`   | Código Banxico que dedujimos como emisor                        |
| `X-Inferred-Receptor` | Código Banxico que dedujimos como receptor                      |
| `X-Attempts`          | Cuántos candidatos probamos antes del hit (útil para debugging) |
| `X-Date-Used`         | Fecha exacta usada en la consulta a Banxico                     |

## Tabla de prefijos comunes

```text theme={null}
BANXICO 002  → BANAMEX
BANXICO 012  → BBVA
BANXICO 014  → SANTANDER
BANXICO 021  → HSBC
BANXICO 030  → BAJÍO
BANXICO 036  → INBURSA
BANXICO 058  → BANREGIO
BANXICO 072  → BANORTE
BANXICO 127  → AZTECA
BANXICO 137  → BANCOPPEL
BANXICO 138  → STP
BANXICO 646  → STP CLABE
```

<Note>
  El catálogo completo se mantiene en el backend Python; cualquier banco con prefijo CLABE estándar es soportado.
</Note>
