Referencia · Ventas
Devolver una venta
/ventaDevolucionTotalCrearEmite 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.
Solicitud
Sección titulada «Solicitud»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 |
Respuesta 200
Sección titulada «Respuesta 200»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. | — |
Errores
Sección titulada «Errores»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 |
HTTP 500
Sección titulada «HTTP 500»Error de validación o negocio
{ "descripcion": "Moneda incorrecta", "codigoError": "E02", "idCFE": "", "numero": 0, "serie": "", "tipoCFE": "", "comprobante": "", "urlA4": "", "urlVerificarCFE": ""}Ejemplos
Sección titulada «Ejemplos»Devolución total de un CFE
Sección titulada «Devolución total de un CFE»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}Devolución de una venta en USD
Sección titulada «Devolución de una venta en USD»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}