Tipos de cambio del BCU
GET /v1/cotizaciones
Devuelve las cotizaciones más recientes publicadas por el Banco Central del Uruguay (BCU) para las monedas que admite DGI en CFE: USD, EUR, BRL, ARS y UI (Unidad Indexada).
Cuándo usarlo
- Para llenar el campo
cambioal emitir un CFE en moneda extranjera. - Para mostrar cotización del día en tu UI.
Caché y esRespaldo
- La respuesta se cachea 24 horas del lado del servidor — pedirla 100 veces seguidas no golpea al BCU 100 veces.
esRespaldo: trueindica que el BCU no publicó cotización parafechaSolicitada(típicamente fin de semana o feriado) y devolvemos la última cotización disponible.
Autorizaciones
Sección titulada «Autorizaciones »Respuestas
Sección titulada « Respuestas »Cotizaciones vigentes
Ejemplos
Cotizaciones vigentes del BCU
{ "data": { "fechaCotizacion": "2026-05-16", "fechaSolicitada": "2026-05-17", "esRespaldo": false, "monedas": { "USD": { "compra": 39.8, "venta": 39.9, "arbitraje": null }, "EUR": { "compra": 42.1, "venta": 42.3, "arbitraje": null }, "BRL": { "compra": 7.95, "venta": 8.05, "arbitraje": null }, "ARS": { "compra": 0.04, "venta": 0.045, "arbitraje": null }, "UI": { "compra": 6.4234, "venta": null, "arbitraje": null } } }}No autenticado. La API_KEY no fue enviada o no es válida.
Códigos posibles: API_AUTH_HEADER_MISSING, API_AUTH_HEADER_INVALID, API_ACCESS_INVALID.
object
object
Identificador estable del error en SCREAMING_SNAKE_CASE
Mensaje legible en español
Información adicional (puede ser objeto, array o string)
UUID de correlación; mismo valor que el header X-Request-ID
Ejemplos
Falta header Authorization
{ "error": { "code": "API_AUTH_HEADER_MISSING", "message": "Se esperaba la cabecera Authorization con esquema Bearer" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}Secret key inválida o revocada
{ "error": { "code": "API_ACCESS_INVALID", "message": "Acceso no autorizado" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}Acceso prohibido. La credencial es válida pero el plan o el alcance de sucursal lo impiden.
Códigos posibles: API_FEATURE_DISABLED, API_ACCESS_BRANCH_MISMATCH.
object
object
Identificador estable del error en SCREAMING_SNAKE_CASE
Mensaje legible en español
Información adicional (puede ser objeto, array o string)
UUID de correlación; mismo valor que el header X-Request-ID
Ejemplos
El plan no incluye API
{ "error": { "code": "API_FEATURE_DISABLED", "message": "El plan de esta cuenta no tiene habilitado el acceso a la API" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}Header x-branch-id distinto al fijo del ApiAccess
{ "error": { "code": "API_ACCESS_BRANCH_MISMATCH", "message": "El ApiAccess está fijado a otra sucursal y no coincide con x-branch-id" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}Rate limit excedido. Esperá los segundos indicados en el header Retry-After.
object
object
Identificador estable del error en SCREAMING_SNAKE_CASE
Mensaje legible en español
Información adicional (puede ser objeto, array o string)
UUID de correlación; mismo valor que el header X-Request-ID
Ejemplos
Excediste el rate limit
{ "error": { "code": "API_RATE_LIMITED", "message": "Se superó el límite de requests para esta API key" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}Headers
Sección titulada «Headers »Ejemplo
42Segundos hasta que se libera la ventana de rate limit
Error obteniendo cotizaciones del BCU (downtime del servicio)
object
object
Identificador estable del error en SCREAMING_SNAKE_CASE
Mensaje legible en español
Información adicional (puede ser objeto, array o string)
UUID de correlación; mismo valor que el header X-Request-ID
Ejemplos
BCU no respondió
{ "error": { "code": "COTIZACIONES_FETCH_FAILED", "message": "Error obteniendo cotizaciones del BCU" }, "requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"}