Saltearse al contenido

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 cambio al 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: true indica que el BCU no publicó cotización para fechaSolicitada (típicamente fin de semana o feriado) y devolvemos la última cotización disponible.

Cotizaciones vigentes

nullable
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
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español

string
details

Información adicional (puede ser objeto, array o string)

nullable
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
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"
}

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
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español

string
details

Información adicional (puede ser objeto, array o string)

nullable
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
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"
}

Rate limit excedido. Esperá los segundos indicados en el header Retry-After.

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español

string
details

Información adicional (puede ser objeto, array o string)

nullable
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
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"
}
Retry-After
integer
Ejemplo
42

Segundos hasta que se libera la ventana de rate limit

Error obteniendo cotizaciones del BCU (downtime del servicio)

object
error
required
object
code
required

Identificador estable del error en SCREAMING_SNAKE_CASE

string
message
required

Mensaje legible en español

string
details

Información adicional (puede ser objeto, array o string)

nullable
requestId

UUID de correlación; mismo valor que el header X-Request-ID

string format: uuid
Ejemplos

BCU no respondió

{
"error": {
"code": "COTIZACIONES_FETCH_FAILED",
"message": "Error obteniendo cotizaciones del BCU"
},
"requestId": "5b2c7c8a-1f6e-4d29-9a0b-7c3a8d1e2f4c"
}