Ir al contenido

Referencia · Ventas

Devolver una venta

POST/ventaDevolucionTotalCrear

Emite una nota de crédito por devolución total de un CFE existente.

Solo se admiten devoluciones totales: no es posible devolver un importe parcial. totalADevolver debe coincidir exactamente con el total de la factura original.

Admite idempotencyKey para reintentos seguros, con el mismo comportamiento que en POST /ventaCrear (ver esa sección para el detalle, incluyendo cómo generar la key correctamente): mismos datos + misma key devuelve el resultado cacheado; datos distintos con la misma key devuelve E23.

La guía correspondiente está en Devolver un CFE.

La ruta POST /ventaDevolucionTotalCrear se agrega a la URL base del ambiente.

Enviá los headers x-api-key y x-api-secret. Cómo obtenerlos está en Credenciales.

El cuerpo es JSON (Content-Type: application/json).

Si falta un campo obligatorio, la API rechaza la solicitud.

Campo Tipo Obligatorio Descripción Ejemplo
idCFE string Sí idCFE de la venta original a devolver. REEMPLAZAR_CON_ID_CFE
fecha string Sí Fecha de la nota de crédito en formato dd/mm/aaaa. 23/06/2026
cotizacion number No Cotización de la nota de crédito cuando la venta original es en una moneda distinta de UYU (opcional): cuántos pesos uruguayos vale una unidad de esa moneda. Si no se envía, o se envía 1, se usa la misma cotización de la venta original (recomendado, así la nota de crédito anula exactamente la venta). Otro valor se usa tal cual; debe ser mayor a 0 (E21). Si la venta original es en UYU, se ignora. 1
ordenCompra string No Número de orden de compra (opcional). ""
local string No Id de local (opcional). Si no se envía, o se envía vacío, se usa el de la venta original. Consultar /localesListado. ""
adenda string Sí Texto de adenda de la nota de crédito. Obligatorio: si no lleva adenda, enviar “” (vacío). Máximo 2000 caracteres (E25). ""
totalADevolver number Sí Importe total a devolver; debe coincidir con el total de la factura original. 120
idempotencyKey string No Clave de idempotencia (opcional). Si reintentás un llamado a /ventaDevolucionTotalCrear (por ejemplo porque no recibiste la respuesta anterior por un corte de red) usando la misma idempotencyKey y exactamente los mismos datos, Fixed devuelve el mismo resultado de la primera vez (éxito o error) en vez de reprocesar. Reusarla con datos distintos devuelve el error E23. Ver sección “Reintentos seguros (idempotencia)” en la descripción de POST /ventaCrear, especialmente cómo generar este valor correctamente. a1b2c3d4-e5f6-4a1b-9c2d-1234567890ab

Nota de crédito emitida correctamente

Si la operación sale bien, codigoError viene vacío.

Si la nota de crédito ya se emitió y después falla el armado de las URLs, la respuesta sigue siendo HTTP 200, con codigoError vacío y las URLs vacías. Usá el idCFE nuevo para consultar o imprimir.

Campo Tipo Obligatorio Descripción Ejemplo
descripcion string Sí Texto libre. Vacío cuando la operación sale bien. —
codigoError string Sí Vacío cuando la operación sale bien. Con valor, es un código de error de esta operación. —
idCFE string Sí Identificador del CFE en Fixed. Guardalo: lo piden la consulta, la impresión y la devolución. —
numero number Sí Número del comprobante dentro de la serie. —
serie string Sí Serie del comprobante. —
tipoCFE number | string Sí Código numérico del comprobante según DGI. Una venta sin RUT es 101 (e-Ticket) y con RUT es 111 (e-Factura). La nota de crédito correspondiente es 102 o 112. En un error puede venir como texto vacío. —
comprobante string Sí Texto legible armado como «tipo serie número». Por ejemplo, e-Ticket A 1523. —
urlA4 string Sí URL del PDF del comprobante en formato A4. —
urlVerificarCFE string Sí Página para verificar el comprobante. En testing empieza con https://testing.fixed.uy/verificarCFE/ y en producción con https://acceso.fixed.uy/verificarCFE/. —
idVenta string No Identificador de la nota de crédito en Fixed. —
htmlTicket string No — —
pdfBase64 string No PDF del comprobante en formato A4, en base64. —
xml string No XML de la nota de crédito firmada. —
observaciones string No Adenda de la devolución. —

Una respuesta de error trae codigoError y descripcion. El mismo código puede significar cosas distintas según el endpoint. El índice completo está en Códigos de error.

Si fallan las credenciales o el formato del body, aplican los códigos comunes: A01 a A06, V01 y V02.

Código Significado
E03 Empresa no encontrada
E04 Sin firma electrónica vigente
E05 Sin CAE disponible
E08 Formato de fecha inválido, debe ser dd/mm/aaaa
E10 Venta original no encontrada
E11 La venta original fue rechazada por DGI, no se puede emitir una NC sobre ella
E17 totalADevolver no coincide con el total de la factura original
E21 cotizacion inválida (debe ser mayor a 0)
E22 Ya hay una emisión en curso con esa idempotencyKey
E23 Esa idempotencyKey ya fue usada con datos distintos
E25 adenda supera los 500 caracteres
X03 Error inesperado generando la nota de crédito
X04 Error inesperado
X05 Error inesperado generando la devolución
X06 Error inesperado obteniendo la venta original

Error de validación o negocio

{
"descripcion": "Moneda incorrecta",
"codigoError": "E02",
"idCFE": "",
"numero": 0,
"serie": "",
"tipoCFE": "",
"comprobante": "",
"urlA4": "",
"urlVerificarCFE": ""
}

Reemplazá idCFE y totalADevolver con los de la venta original.

{
"idCFE": "REEMPLAZAR_CON_ID_CFE",
"fecha": "23/06/2026",
"cotizacion": 1,
"ordenCompra": "",
"local": "",
"adenda": "",
"totalADevolver": 120
}

cotizacion: 1 usa la cotización original de la venta (recomendado). Solo poné otro valor si necesitás forzar una cotización distinta.

{
"idCFE": "REEMPLAZAR_CON_ID_CFE",
"fecha": "23/06/2026",
"cotizacion": 1,
"ordenCompra": "",
"local": "",
"adenda": "",
"totalADevolver": 50
}