> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.supay.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.supay.dev/_mcp/server.

# Sincronización de catálogos

Descarga los catálogos SIAT (monedas, pagos, unidades, actividades, productos,
leyendas...) al tenant. Sin catálogos listos, `emit` responde `409`: este es el
paso que más olvidos causa. Verifica siempre con `readiness`.

**En esta página aprenderás:** sincronizar todo o por operación, verificar readiness y consultar catálogos · **Prerrequisitos:** setup con CUIS/CUFD · **Tiempo:** \~10 min.

#### SDK TypeScript

```typescript
// Todo de una vez (recomendado tras el setup)
const sync = await supay.siat.syncCatalogs({ pointOfSaleId: pos.id });
// sync.operations[]: { operation, codigos, status, rows_saved }
// sync.readiness: { ready, missing }

// Una sola operación
const solo = await supay.siat.syncCatalogs({
  pointOfSaleId: pos.id,
  operation: "tipoMoneda",
});

// Verificar qué falta
const ready = await supay.catalogs.getReadiness({
  id: company.id,
  point_of_sale_id: pos.id,
});
// ready.ready === true, ready.missing === []
```

#### REST API

```bash
# Todo de una vez
curl -s -X POST "$BASE/v1/siat/sincronizar/$POS" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{}' | jq '.operations, .readiness'

# Una sola operación
curl -s -X POST "$BASE/v1/siat/sincronizar/$POS?operation=tipoMoneda" \
  -H "X-API-Key: $KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

# Verificar
curl -s "$BASE/v1/companies/$CID/catalogs/readiness?point_of_sale_id=$POS" \
  -H "X-API-Key: $KEY" | jq '{ready, missing}'
```

## Operaciones (`?operation=`)

Valor desconocido → `400`. Sin el parámetro sincroniza todo.

| Operación                    | Sincroniza                   |
| ---------------------------- | ---------------------------- |
| `tipoPuntoVenta`             | Tipos de punto de venta      |
| `tipoMoneda`                 | Monedas                      |
| `tipoMetodoPago`             | Métodos de pago              |
| `tipoDocumentoIdentidad`     | Documentos de identidad      |
| `tipoEmision`                | Tipos de emisión             |
| `tiposFactura`               | Tipos de factura             |
| `tipoHabitacion`             | Tipos de habitación          |
| `tipoDocumentoSector`        | Sectores por documento       |
| `unidadMedida`               | Unidades de medida           |
| `motivoAnulacion`            | Motivos de anulación         |
| `paisOrigen`                 | Países de origen             |
| `eventosSignificativos`      | Eventos significativos       |
| `mensajesServicios`          | Mensajes de servicios        |
| `actividades`                | Actividades económicas       |
| `productosServicios`         | Productos y servicios        |
| `leyendasFactura`            | Leyendas de factura          |
| `actividadesDocumentoSector` | Actividades por sector       |
| `fechaHora`                  | Fecha y hora SIAT            |
| `verificarComunicacion`      | Verificación de comunicación |

## Catálogos crudos y de emisión

| Recurso                                          | Uso                                                                             |
| ------------------------------------------------ | ------------------------------------------------------------------------------- |
| `GET /siat/catalogs` y `/siat/catalogs/{tipo}`   | Lectura directa de lo sincronizado (revisar)                                    |
| `GET /companies/{id}/catalogs/productos-sin`     | Buscar `codigo_producto_sin` para tus ítems                                     |
| `GET /companies/{id}/catalogs/emision-bootstrap` | Todo lo de emisión de una vez (actividades, sectores, leyendas, monedas, pagos) |

#### SDK TypeScript

```typescript
const todos = await supay.siat.listCatalogs();
const moneda = await supay.siat.getCatalog({ tipo: "tipoMoneda" });

const prods = await supay.catalogs.listProductosSin({
  id: company.id,
  q: "tornillo",
});

const boot = await supay.catalogs.getEmisionBootstrap({
  id: company.id,
  codigo_actividad: "620900",
});
```

#### REST API

```bash
curl -s "$BASE/v1/siat/catalogs" -H "X-API-Key: $KEY"
curl -s "$BASE/v1/siat/catalogs/tipoMoneda" -H "X-API-Key: $KEY"

curl -s "$BASE/v1/companies/$CID/catalogs/productos-sin?q=tornillo" \
  -H "X-API-Key: $KEY"

curl -s "$BASE/v1/companies/$CID/catalogs/emision-bootstrap?codigo_actividad=620900" \
  -H "X-API-Key: $KEY" | jq 'keys'
```

Siguiente: [Emitir factura](/facturacion/emitir-factura) · [CUIS y CUFD](/operaciones-siat/cuis-y-cufd).