Obtener o generar CUFD
/api/v1/codigos/cufdObtiene el CUFD operativo del punto de venta. Si la base de datos conserva uno cuya vigencia no terminó y su CUIS asociado sigue activo, lo reutiliza sin llamar al SIAT ni descifrar credenciales. Cuando no existe, está vencido o su CUIS fue invalidado, solicita los códigos necesarios y conserva la relación CUIS-CUFD en el esquema fiscal del tenant.
X-API-KeyVer operaciones de Códigos fiscales Contrato de la operación
Obtiene el CUFD operativo del punto de venta. Si la base de datos conserva uno cuya vigencia no terminó y su CUIS asociado sigue activo, lo reutiliza sin llamar al SIAT ni descifrar credenciales. Cuando no existe, está vencido o su CUIS fue invalidado, solicita los códigos necesarios y conserva la relación CUIS-CUFD en el esquema fiscal del tenant.
Autorización y cuerpo
Requiere X-API-Key con permiso codigos.administrar. El cuerpo contiene únicamente puntoVentaId, UUID obligatorio de un punto activo de la empresa de la clave. El backend deriva su sucursal y código SIAT; la clave determina el ambiente. No envíes NIT emisor, sucursal, CUIS ni Token Delegado.
codigoPuntoVenta ya no se acepta. Un UUID vacío, inválido o ajeno a la empresa devuelve 404; un cuerpo ausente o con campos desconocidos devuelve 400. Consulta [migracion.md](migracion.md).
Respuestas
200 OK devuelve el CUFD, su código de control y fecha de vigencia, tanto si fue reutilizado como si fue generado. Cada punto conserva su propio CUIS cifrado. Si SIAT rechaza expresamente ese CUIS al generar el CUFD, el servicio invalida también sus CUFD relacionados, obtiene otro CUIS y repite una sola vez la solicitud; otros rechazos no se reintentan. 400 indica un cuerpo inválido; 401 o 403, una clave inválida o sin permiso; 404, punto inexistente; 422, rechazo del SIAT; 503, una falla temporal del SIAT.
El código y su c...
Ejemplo
Solicitud de ejemplo
{
"puntoVentaId": "{{puntoVentaId}}"
}Respuesta
Ejemplo de respuesta
application/json{
"message": "CUFD generado correctamente",
"data": {
"cufd": "BQW5FZ...",
"codigoControl": "A1B2C3",
"vigencia": "2026-08-28T00:00:00Z"
}
}Datos ficticios; los identificadores y valores cambian en cada respuesta.