Fixed - API de Integración

Versión 1.0.0. API de Fixed para integradores externos. Autenticación con x-api-key y x-api-secret provistos por Fixed. La empresa se resuelve automáticamente en el servidor; no se envía RUT ni id interno en los requests.

URL de producción: https://southamerica-east1-fixedproduccion-fiv2q.cloudfunctions.net/apiFixed
URL de testing: https://southamerica-east1-fixedtesting-10ce2.cloudfunctions.net/apiFixed

Autenticación

Endpoints

POST /ventaCrear

Ventas

Emite un Comprobante Fiscal Electrónico (CFE). En Swagger: Try it out → elegí un ejemplo del dropdown → editá los campos → Execute.

La respuesta incluye tres opciones para imprimir o mostrar el comprobante:

Identificación del cliente

Cómo identifica Fixed a un cliente ya existente (para actualizarlo) en vez de crear uno nuevo, dentro de la misma empresa y mismo tipoDocumento:

  1. Si documento no viene vacío: busca por documento. Si encuentra, actualiza ese cliente. Si no encuentra ningún cliente con ese documento, busca por mailEnvioFactura (ver punto 2); si tampoco encuentra por mail, crea un cliente nuevo con ese documento.
  2. Si documento viene vacío pero mailEnvioFactura no: busca por mailEnvioFactura (sin distinguir mayúsculas/minúsculas ni espacios). Si encuentra, actualiza ese cliente. Si no encuentra, crea uno nuevo.
  3. Si tanto documento como mailEnvioFactura vienen vacíos: siempre crea un cliente nuevo.

Esto permite, por ejemplo, facturar a nombre de clientes de e-commerce que en un primer pedido no informan documento (solo mail), y que si en un pedido posterior sí lo informan, Fixed complete el documento en la misma ficha de cliente en vez de duplicarla.

Límites de caracteres

Estos campos tienen un largo máximo; si se supera, la request se rechaza con un error (no se trunca en silencio):

Reintentos seguros (idempotencia)

Si no recibiste la respuesta de un llamado anterior (por ejemplo por un corte de red) y no sabés si la venta se llegó a emitir, no reintentes a ciegas: mandá el campo idempotencyKey la primera vez que intentás emitir esa venta, y reusá exactamente el mismo valor, con exactamente los mismos datos, para reintentar esa misma venta. Fixed te devuelve la misma respuesta de la primera vez (sea éxito o error) en vez de reprocesar.

Una idempotencyKey queda asociada para siempre a los datos de esa venta puntual: no se puede reusar para una venta distinta, ni para reintentar la misma venta con datos corregidos. Si mandás la misma idempotencyKey con datos diferentes a los originales, Fixed devuelve el error E23. Para emitir una venta distinta, o la misma venta con datos corregidos, generá una idempotencyKey nueva.

Cómo generar la idempotencyKey: tiene que identificar el intento de emisión en sí, nunca derivarse del contenido de la venta. Si la generás a partir de los datos de la venta (por ejemplo un hash de sus campos), dos ventas distintas que coincidan en todos sus datos (mismo cliente, mismo importe, etc.) van a chocar contra la misma key, y la segunda no se va a emitir: va a recibir de vuelta el resultado de la primera.

idempotencyKey es opcional: si no lo mandás, el comportamiento es el de siempre, sin protección contra reintentos duplicados.

Body

IAPIFixedVentaCrearEntrada

CampoTipoRequeridoDescripciónEjemplo
clienteIAPIFixedClientesí
fechastringsíFecha del comprobante en formato dd/mm/aaaa.23/06/2026
monedastringsíCódigo ISO de la moneda del comprobante (UYU, USD, EUR, etc.).UYU
montoBruto0 | 1sí0=precios sin IVA (neto), 1=precios con IVA incluido.1
lineasVentaIAPIFixedVentaLineaCrearEntrada[]síLíneas del comprobante (al menos una).
observacionesstringsíObservaciones del comprobante.
totalAPagarnumber (double)síTotal a pagar calculado por el integrador; debe coincidir con el calculado por Fixed.120
redondearbooleansíSi se aplica redondeo al total.false
localstringId de local (opcional). Consultar /localesListado.
formaDePago"contado" | "credito"Forma de pago (opcional, default "contado").contado
cotizacionnumber (double)Cotización del dólar a usar cuando moneda es "USD" (opcional). Si no se envía, se usa la cotización BCU vigente de la empresa. Se ignora si moneda es "UYU".
idempotencyKeystringClave de idempotencia (opcional). Si reintentás un llamado a /ventaCrear (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

No se aceptan campos adicionales.

IAPIFixedCliente

CampoTipoRequeridoDescripciónEjemplo
tipoDocumentonumber (double)síTipo de documento: 2=RUT, 3=CI, 4=Otros, 5=Pasaporte, 6=DNI, 7=NIFE.2
documentostringsíNúmero de documento (RUT, CI, etc.). Obligatorio para tipoDocumento 2 (RUT); opcional para el resto. Ver sección "Identificación del cliente" en la descripción de POST /ventaCrear.219314970014
paisstringCódigo ISO de país (2 letras). Obligatorio para tipoDocumento 4 (Otros), 5 (Pasaporte), 6 (DNI) y 7 (NIFE). Para tipoDocumento 6 (DNI) solo se admite AR, BR, CL o PY.AR
razonSocialstringsíRazón social del cliente.Panadería El Buen Pan S.A.
nombreComercialstringsíNombre comercial.El Buen Pan
domiciliostringsíDomicilio fiscal.Av. Italia 1234
localidadstringsíLocalidad.Montevideo
departamentostringsíDepartamento.Montevideo
domicilioEntregastringsíDomicilio de entrega.Av. Italia 1234
mailEnvioFacturastringsíEmail para envío de factura. Si no se envía documento, se usa para identificar al cliente (ver sección "Identificación del cliente" en la descripción de POST /ventaCrear).facturacion@ejemplo.com
telefonostringsíTeléfono de contacto.099123456
observacionesstringsíObservaciones del cliente.

No se aceptan campos adicionales.

IAPIFixedVentaLineaCrearEntrada

CampoTipoRequeridoDescripciónEjemplo
cantidadnumber (double)síCantidad de unidades vendidas.1
descripcionstringsíNombre corto del ítem en el comprobante.Pan francés
descripcionLargastringsíDetalle adicional de la línea.Pan francés artesanal
rubrostringsíNombre o id del rubro de servicios; se crea si no existe.Panadería
tasaIvaCfeDgiTasaIvasíValor cfeDgi de la tasa de IVA configurada en Fixed. Debe ser exactamente uno de los valores del enum CfeDgiTasaIva.Basic
descuentoMontonumber (double)síMonto de descuento en la línea (no porcentaje).0
precioUnitarionumber (double)síPrecio unitario según montoBruto.120
codigostringCódigo del ítem (opcional), por ejemplo código de barras o código interno. Se guarda bajo el primer tipo de código que la empresa tenga configurado para impresión en Fixed (o "Código" si no tiene ninguno configurado), y así viaja en el comprobante fiscal igual que si se hubiera cargado a mano.7791234567890

No se aceptan campos adicionales.

CfeDgiTasaIva

Valor del campo cfeDgi de la tasa de IVA configurada en Fixed. Debe coincidir exactamente con uno de estos valores (sensible a mayúsculas): - Basic: Tasa básica (22%) - Min: Tasa mínima (10%) - Exe: Exento de IVA - Exp: Exportación - Otro: Otras tasas - NoFac: No facturable - Suspenso: Suspenso - Percibido: Percibido - literalE: Literal E

Valores: "Basic", "Exp", "Min", "Exe", "Otro", "NoFac", "Suspenso", "Percibido", "literalE", ""

Ejemplos

Venta a consumidor final

Sin cliente identificado. Una línea en UYU con IVA incluido en precio.

{
  "cliente": null,
  "fecha": "23/06/2026",
  "moneda": "UYU",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 1,
      "descripcion": "Pan francés",
      "descripcionLarga": "Pan francés artesanal",
      "rubro": "Panadería",
      "tasaIva": "Basic",
      "descuentoMonto": 0,
      "precioUnitario": 120
    }
  ],
  "observaciones": "",
  "totalAPagar": 120,
  "redondear": false
}

Venta con múltiples líneas

Caso típico en POS/e-commerce: varias líneas con distintos rubros y tasas de IVA. Ajustá tasaIva según lo configurado en Fixed (Basic=22%, Min=10%, Exe=0%).

{
  "cliente": null,
  "fecha": "23/06/2026",
  "moneda": "UYU",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 2,
      "descripcion": "Pan francés",
      "descripcionLarga": "Pan francés artesanal",
      "rubro": "Panadería",
      "tasaIva": "Basic",
      "descuentoMonto": 0,
      "precioUnitario": 120
    },
    {
      "cantidad": 1,
      "descripcion": "Leche entera",
      "descripcionLarga": "Leche entera 1 litro",
      "rubro": "Lácteos",
      "tasaIva": "Min",
      "descuentoMonto": 0,
      "precioUnitario": 55
    },
    {
      "cantidad": 3,
      "descripcion": "Bolsa reciclable",
      "descripcionLarga": "Bolsa biodegradable",
      "rubro": "Accesorios",
      "tasaIva": "Exe",
      "descuentoMonto": 0,
      "precioUnitario": 10
    }
  ],
  "observaciones": "",
  "totalAPagar": 325,
  "redondear": false
}

Venta con cliente identificado

Cliente con RUT. Si ya existe, se actualizan sus datos.

{
  "cliente": {
    "tipoDocumento": 2,
    "documento": "219314970014",
    "razonSocial": "Panadería El Buen Pan S.A.",
    "nombreComercial": "El Buen Pan",
    "domicilio": "Av. Italia 1234",
    "localidad": "Montevideo",
    "departamento": "Montevideo",
    "domicilioEntrega": "Av. Italia 1234",
    "mailEnvioFactura": "facturacion@ejemplo.com",
    "telefono": "099123456",
    "observaciones": ""
  },
  "fecha": "23/06/2026",
  "moneda": "UYU",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 2,
      "descripcion": "Docena de medialunas",
      "descripcionLarga": "Medialunas de manteca",
      "rubro": "Panadería",
      "tasaIva": "Basic",
      "descuentoMonto": 0,
      "precioUnitario": 450
    }
  ],
  "observaciones": "Pedido mostrador",
  "totalAPagar": 900,
  "redondear": false,
  "local": ""
}

Venta en dólares

Comprobante en USD. Verificar cotización vigente de la empresa.

{
  "cliente": null,
  "fecha": "23/06/2026",
  "moneda": "USD",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 1,
      "descripcion": "Servicio exportación",
      "descripcionLarga": "",
      "rubro": "Servicios",
      "tasaIva": "Exp",
      "descuentoMonto": 0,
      "precioUnitario": 50
    }
  ],
  "observaciones": "",
  "totalAPagar": 50,
  "redondear": false
}

Venta a crédito

Igual a una venta simple, pero con formaDePago: "credito" en vez del default "contado".

{
  "cliente": null,
  "fecha": "23/06/2026",
  "moneda": "UYU",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 1,
      "descripcion": "Pan francés",
      "descripcionLarga": "Pan francés artesanal",
      "rubro": "Panadería",
      "tasaIva": "Basic",
      "descuentoMonto": 0,
      "precioUnitario": 120
    }
  ],
  "observaciones": "",
  "totalAPagar": 120,
  "redondear": false,
  "formaDePago": "credito"
}

Venta con descuento en una línea

descuentoMonto es un importe (no un porcentaje): se resta del precioUnitario x cantidad de esa línea antes de calcular el IVA.

{
  "cliente": null,
  "fecha": "23/06/2026",
  "moneda": "UYU",
  "montoBruto": 1,
  "lineasVenta": [
    {
      "cantidad": 2,
      "descripcion": "Docena de medialunas",
      "descripcionLarga": "Medialunas de manteca",
      "rubro": "Panadería",
      "tasaIva": "Basic",
      "descuentoMonto": 100,
      "precioUnitario": 450
    }
  ],
  "observaciones": "Descuento por pronto pago",
  "totalAPagar": 800,
  "redondear": false
}

Respuestas

HTTP 200

CFE emitido. Respuesta incluye urlA4, urlTicket y htmlTicket

IAPIFixedVentaCrearSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
idCFEstringsí
numeronumber (double)sí
seriestringsí
tipoCFEnumber (double) | stringsí
comprobantestringsí
urlA4stringsíURL del PDF del comprobante en formato A4.
urlVerificarCFEstringsí
idVentastring
urlTicketstringURL del ticket térmico en PDF. Formato estrecho para impresoras de ticket.
htmlTicketstringTicket en HTML. Útil para preview en pantalla o impresión desde el navegador.
pdfBase64stringPDF del comprobante en formato A4, en base64.
xmlstring
observacionesstring

No se aceptan campos adicionales.

HTTP 500

Error de validación o negocio (ver codigoError)

Example 1

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

POST /ventaDevolucionTotalCrear

Ventas

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.

Body

IAPIFixedVentaDevolucionTotalEntrada

CampoTipoRequeridoDescripciónEjemplo
idCFEstringsíidCFE de la venta original a devolver.REEMPLAZAR_CON_ID_CFE
fechastringsíFecha de la nota de crédito en formato dd/mm/aaaa.23/06/2026
cotizacionnumber (double)síCotización para USD; 1 usa la cotización original de la venta.1
ordenComprastringsíNúmero de orden de compra (opcional).
localstringsíId de local; vacío usa el de la venta original.
adendastringsíTexto de adenda (opcional).
totalADevolvernumber (double)síImporte total a devolver; debe coincidir con el total de la factura original.120
idempotencyKeystringClave 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

No se aceptan campos adicionales.

Ejemplos

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

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
}

Respuestas

HTTP 200

Nota de crédito emitida correctamente

IAPIFixedVentaDevolucionTotalCrearSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
idCFEstringsí
numeronumber (double)sí
seriestringsí
tipoCFEnumber (double) | stringsí
comprobantestringsí
urlA4stringsíURL del PDF del comprobante en formato A4.
urlVerificarCFEstringsí
idVentastring
htmlTicketstring
pdfBase64stringPDF del comprobante en formato A4, en base64.
xmlstring
observacionesstring

No se aceptan campos adicionales.

HTTP 500

Error de validación o negocio

Example 1

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

POST /ventaConsulta

Ventas

Consulta el estado y datos de un CFE emitido previamente.

Body

IAPIFixedVentaConsultaEntrada

CampoTipoRequeridoDescripciónEjemplo
idCFEstringsíIdentificador del CFE devuelto por /ventaCrear.REEMPLAZAR_CON_ID_CFE

No se aceptan campos adicionales.

Ejemplos

Consultar estado de un CFE

{
  "idCFE": "REEMPLAZAR_CON_ID_CFE"
}

Respuestas

HTTP 200

Datos del CFE

IAPIFixedVentaConsultaSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
idCFEstringsí
numeronumber (double)sí
seriestringsí
tipoCFEnumber (double) | stringsí
comprobantestringsí
urlA4stringsíURL del PDF del comprobante en formato A4.
urlVerificarCFEstringsí
estadoDGIstring
motivoRechazoDGIstring

No se aceptan campos adicionales.

HTTP 500

CFE no encontrado u otro error

Example 1

{
  "descripcion": "El idCFE no existe para la empresa",
  "codigoError": "C08",
  "idCFE": "",
  "estadoDGI": "",
  "motivoRechazoDGI": "",
  "numero": 0,
  "serie": "",
  "tipoCFE": "",
  "comprobante": "",
  "urlA4": "",
  "urlVerificarCFE": ""
}

POST /consultaFacturacionDia

Ventas

Lista los comprobantes emitidos en una fecha.

Body

IAPIFixedConsultaFacturacionDiaEntrada

CampoTipoRequeridoDescripciónEjemplo
fechastringsíFecha a consultar en formato dd/mm/aaaa.23/06/2026

No se aceptan campos adicionales.

Ejemplos

Comprobantes de un día

{
  "fecha": "23/06/2026"
}

Respuestas

HTTP 200

Listado de comprobantes del día

IAPIFixedConsultaFacturacionDiaSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
comprobantesConsultaFacturacion[]sí

No se aceptan campos adicionales.

ConsultaFacturacion

CampoTipoRequeridoDescripciónEjemplo
formaDePago"contado" | "credito"sí
fechaComprobantestringsí
fechaCreacionstringsí
comprobantestringsí
documenoClientestringsí
nombreClientestringsí
idCFEstringsí
tipoCFEnumber (double)sí
seriestringsí
numeronumber (double)sí
importenumber (double)sí
moneda"UYU" | "USD"sí
cotizacionnumber (double)sí
tipo"venta" | "devolucion"sí
creadaDesde"web" | "FixedTesting" | "Fixed_API" | "Otro"sí
motivoRechazoDGIstringsí
estadoDGI"aceptado" | "rechazado" | "sinrespuesta"sí

No se aceptan campos adicionales.

HTTP 500

Error de validación

Example 1

{
  "descripcion": "Formato fecha inválida",
  "codigoError": "E08",
  "comprobantes": []
}

POST /imprimirCFE

Ventas

Genera o regenera las URLs e HTML de impresión de un CFE emitido. Útil si el CFE ya existe pero se necesita volver a obtener sus URLs de impresión.

La respuesta incluye:

Body

Ejemplos

Obtener ticket y PDF de un CFE

Devuelve urlA4, urlTicket (ticket térmico) y htmlTicket para imprimir o mostrar el comprobante.

{
  "idCFE": "REEMPLAZAR_CON_ID_CFE"
}

Respuestas

HTTP 200

CFE encontrado. Respuesta incluye urlA4, urlTicket y htmlTicket

IAPIFixedImprimirCFESalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
idCFEstringsí
numeronumber (double)sí
seriestringsí
tipoCFEnumber (double) | stringsí
comprobantestringsí
urlA4stringsíURL del PDF del comprobante en formato A4.
urlVerificarCFEstringsí
estadoDGIstring
motivoRechazoDGIstring
urlTicketstringURL del ticket térmico en PDF. Formato estrecho para impresoras de ticket.
htmlTicketstringTicket en HTML. Útil para preview en pantalla o impresión desde el navegador.
pdfBase64stringPDF del comprobante en formato A4, en base64.
xmlstring

No se aceptan campos adicionales.

HTTP 500

CFE no encontrado u otro error

Example 1

{
  "descripcion": "El idCFE no existe para la empresa",
  "codigoError": "C08",
  "idCFE": "",
  "estadoDGI": "",
  "motivoRechazoDGI": "",
  "numero": 0,
  "serie": "",
  "tipoCFE": "",
  "comprobante": "",
  "urlA4": "",
  "urlVerificarCFE": ""
}

POST /obtenerProximoNumero

Ventas

Consulta la serie y el próximo número que se usaría al emitir, sin emitir nada. El tipo de comprobante se deriva de tipoDocumento y tipo (venta/devolución): RUT es e-Factura / e-Factura Nota de Crédito, el resto es e-Ticket / e-Ticket Nota de Crédito. No contempla comprobantes de exportación.

Es solo informativo: el número puede cambiar si otro comprobante se emite entre esta consulta y el llamado real a ventaCrear (no reserva el número).

Body

IAPIFixedObtenerProximoNumeroEntrada

CampoTipoRequeridoDescripciónEjemplo
tipoDocumentonumber (double)síTipo de documento del cliente a facturar: 2=RUT, 3=CI, 4=Otros, 5=Pasaporte, 6=DNI, 7=NIFE. Determina, junto con tipo, qué tipo de comprobante (CFE) se va a emitir y por lo tanto a qué CAE consultar: RUT (2) es e-Factura, el resto es e-Ticket.2
tipo"venta" | "devolucion"síSi se va a emitir una venta o una devolución (nota de crédito).venta

No se aceptan campos adicionales.

Respuestas

HTTP 200

Serie y próximo número a usar

IAPIFixedObtenerProximoNumeroSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
seriestringsíSerie del CAE que se va a usar.A
numeronumber (double)síPróximo número a usar dentro de esa serie.1523
tcfenumber (double)síTipo de comprobante consultado.111

No se aceptan campos adicionales.

HTTP 500

Error de validación o negocio (ver codigoError)

Example 1

{
  "descripcion": "No existe un CAE disponible para el tipo de comprobante 111.",
  "codigoError": "E02",
  "serie": "",
  "numero": 0,
  "tcfe": 111
}

GET /keepAlive

General

Verifica que la API esté activa. No requiere autenticación ni body.

Respuestas

HTTP 200

API activa

POST /validarCredenciales

General

Verifica que el par x-api-key / x-api-secret sea válido y devuelve los datos no sensibles de la empresa asociada. Recomendado como primer paso al integrar.

Respuestas

HTTP 200

Credenciales válidas

IAPIFixedValidarCredencialesSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
rutstringsíRUT de la empresa autenticada.
nombreEmpresastringsíNombre de la empresa autenticada.

No se aceptan campos adicionales.

HTTP 401

Credenciales inválidas

Example 1

{
  "descripcion": "API key inválida o inactiva",
  "codigoError": "A02",
  "rut": "",
  "nombreEmpresa": ""
}

POST /consultarCFERecibidos

Compras

Consulta los CFEs recibidos (comprobantes de compra) emitidos por otras empresas hacia la empresa, dentro de un rango de fechas, opcionalmente filtrados por el RUT del emisor/proveedor.

fechaDesde y fechaHasta son formato dd/mm/aaaa, inclusive. El rango entre ambos no puede superar los 31 días.

Por default, solo consulta lo que Fixed ya tiene guardado. Con consultarNuevos: true se fuerza además una consulta en vivo a DGI por CFEs nuevos en ese rango (igual que el botón "Consultar en DGI nuevos CFEs recibidos" de la web) — puede demorar bastante más, y depende de que el mail con el comprobante ya le haya llegado a Fixed para poder guardarlo (DGI solo informa metadatos, no el XML). Si esa consulta falla por cualquier motivo, la respuesta igual incluye los datos ya guardados, con una advertencia en descripcion.

Body

IAPIFixedConsultarCFERecibidosEntrada

CampoTipoRequeridoDescripciónEjemplo
rutstringRUT del emisor/proveedor a filtrar (opcional). Si no se envía, devuelve todos los CFEs recibidos en el rango de fechas.219314970014
fechaDesdestringsíFecha desde (inclusive), formato dd/mm/aaaa. El rango entre fechaDesde y fechaHasta no puede superar los 31 días.01/06/2026
fechaHastastringsíFecha hasta (inclusive), formato dd/mm/aaaa. El rango entre fechaDesde y fechaHasta no puede superar los 31 días.30/06/2026
consultarNuevosbooleanSi es true, antes de responder Fixed consulta a DGI en vivo por CFEs nuevos en el rango indicado (mismo mecanismo que el botón "Consultar en DGI nuevos CFEs recibidos" de la web). Importante: DGI solo informa metadatos del comprobante, no el XML — un CFE recién reportado por DGI solo se guarda si el mail con el XML adjunto ya le llegó a Fixed. Si ese mail no llegó todavía, no va a aparecer en el resultado por más que se use este parámetro. Puede demorar bastante más que una consulta normal. Si falla (sin firma electrónica vigente, timeout, o error de DGI), igual se devuelven los datos ya guardados en Fixed, con una advertencia en descripcion. Opcional, default false.false

No se aceptan campos adicionales.

Respuestas

HTTP 200

Listado de CFEs recibidos en el rango de fechas

IAPIFixedConsultarCFERecibidosSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
cfesRecibidosIAPIFixedCFERecibido[]sí

No se aceptan campos adicionales.

IAPIFixedCFERecibido

CampoTipoRequeridoDescripciónEjemplo
idCFEstringsíId interno del CFE recibido en Fixed.
emisorNombrestringsíNombre del emisor/proveedor.
rutEmisorstringsíRUT del emisor/proveedor.
tipo"compra" | "recibo" | "remito" | "resguardo"síTipo de documento recibido.
tcfenumber (double)síTipo de CFE (código numérico DGI).
numeronumber (double)sí
seriestringsí
comprobantestringsí
fechaComprobantenumber (double)síFecha del comprobante, timestamp en milisegundos (epoch).
monedastringsí
totalnumber (double)sí
formaPago"contado" | "credito" | ""sí
estado"aceptado" | "rechazado" | "sinRespuesta"síEstado de la respuesta ante DGI.
anuladobooleansí
xmlstringsíXML del comprobante.

No se aceptan campos adicionales.

HTTP 500

Error de validación (ver codigoError)

Example 1

{
  "descripcion": "El rango entre fechaDesde y fechaHasta no puede superar los 31 días.",
  "codigoError": "E02",
  "cfesRecibidos": []
}

POST /clienteMostrar

Clientes

Busca un cliente activo por tipo y número de documento.

Body

IAPIFixedClienteMostrarEntrada

CampoTipoRequeridoDescripciónEjemplo
tipoDocumentonumber (double)sí2 = RUT, 3 = cédula de identidad.3
documentostringsíNúmero de documento sin puntos ni guiones.12345678

No se aceptan campos adicionales.

Ejemplos

Buscar cliente por RUT

{
  "tipoDocumento": 2,
  "documento": "219314970014"
}

Buscar cliente por cédula

{
  "tipoDocumento": 3,
  "documento": "12345678"
}

Respuestas

HTTP 200

Cliente encontrado o null si no existe

IAPIFixedClienteMostrarSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
clienteClientesí

No se aceptan campos adicionales.

Cliente

CampoTipoRequeridoDescripciónEjemplo
idstringsí
tipoDocumentonumber (double)sí
documentostringsí
razonSocialstringsí
paisstringsí
nombreComercialstringsí
direccionstringsí
latitudnumber (double)sí
longitudnumber (double)sí
localidadstringsí
departamentostringsí
direccionEntregastringsí
descuentostringsí
emailsstring[]sí
mailDgistringsí
mailCopiaXmlstring[]sí
vendedorIdstringsí
rubroServiciosVentaIdstringsí
listaPrecioServiciosstring[]sí
listaPrecioProductosstring[]sí
formaDePagostringsí
activobooleansí
campoExtraobjectsí
saldoCuentasobjectsí
topeCuentasobjectsí
buscablePorstring[]sí
comentariosstringsí
claveAnalisisDeudastringsí
infoAdicionalstringsí
whatsAppstringsí

No se aceptan campos adicionales.

CampoTipoRequeridoDescripciónEjemplo
CampoTipoRequeridoDescripciónEjemplo
CampoTipoRequeridoDescripciónEjemplo

HTTP 500

Error al buscar cliente

Example 1

{
  "descripcion": "No existe cliente con documento y/o tipo documento indicado",
  "codigoError": "0",
  "cliente": null
}

POST /consultarRUTDGI

Clientes

Consulta los datos de un RUT en DGI (razón social, domicilio fiscal y tipo de contribuyente), útil para prellenar los datos de un cliente antes de emitir un comprobante. Requiere que la empresa cuente con firma electrónica vigente en Fixed.

Límite: 20 consultas por minuto por empresa. Si se supera, responde 429.

Body

IAPIFixedConsultarRUTDGIEntrada

CampoTipoRequeridoDescripciónEjemplo
rutstringsíRUT a consultar en DGI.219314970014

No se aceptan campos adicionales.

Respuestas

HTTP 200

Datos del RUT encontrados en DGI

IAPIFixedConsultarRUTDGISalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
razonSocialstringsíRazón social del contribuyente según DGI.Panadería El Buen Pan S.A.
domicilioFiscalstringsíDomicilio fiscal tal cual lo devuelve DGI (dirección y localidad juntas, sin separar).Av. Italia 1234 - Montevideo
tipoContribuyentestringsíTipo de contribuyente según DGI.IVA MINIMO

No se aceptan campos adicionales.

HTTP 500

Error al consultar el RUT (ver codigoError)

Example 1

{
  "descripcion": "El RUT '219314970014' no fue encontrado en DGI.",
  "codigoError": "E03",
  "razonSocial": "",
  "domicilioFiscal": "",
  "tipoContribuyente": ""
}

POST /localesListado

Catálogos

Listado de locales de la empresa. No requiere body.

Respuestas

HTTP 200

Listado de locales de la empresa

IAPIFixedLocalesListadoSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
localesIAPIFixedLocal[]

No se aceptan campos adicionales.

IAPIFixedLocal

CampoTipoRequeridoDescripciónEjemplo
idstringsí
nombreComercialstringsí
nombrestringsí
direccionstringsí
localidadstringsí
departamentostringsí
codigoDginumber (double)sí
activobooleansí

No se aceptan campos adicionales.

HTTP 500

Error al obtener catálogo

Example 1

{
  "descripcion": "Empresa no encontrada",
  "codigoError": "E02"
}

POST /serviciosRubrosListado

Catálogos

Listado de rubros de servicios. No requiere body.

Respuestas

HTTP 200

Listado de rubros de servicios

IAPIFixedServiciosRubrosListadoSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
rubrosServiciosServiciosRubro[]

No se aceptan campos adicionales.

ServiciosRubro

CampoTipoRequeridoDescripciónEjemplo
versionnumber (double)sí
idstringsí
codigostringsí
nombrestringsí
padreIdstringsí
nombreCompletostringsí
activobooleansí
esHojabooleansí
ultimaEdicionnumber (double)sí

No se aceptan campos adicionales.

HTTP 500

Error al obtener catálogo

Example 1

{
  "descripcion": "Empresa no encontrada",
  "codigoError": "E02"
}

POST /consultaCAE

Catálogos

Consulta los CAE (autorizaciones de numeración) de la empresa, con su información completa.

Con soloDisponibles: true devuelve solo los vigentes (disponible == true y no vencidos). Sin ese campo, o en false, devuelve todos los CAE cargados, vencidos o agotados incluidos.

Body

IAPIFixedConsultaCAEEntrada

CampoTipoRequeridoDescripciónEjemplo
soloDisponiblesbooleanSi es true, devuelve solo los CAE vigentes (disponibles y no vencidos). Si es false o no se envía, devuelve todos los CAE cargados en el sistema.false

No se aceptan campos adicionales.

Respuestas

HTTP 200

Listado de CAE

IAPIFixedConsultaCAESalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
caesIAPIFixedCAE[]sí

No se aceptan campos adicionales.

IAPIFixedCAE

CampoTipoRequeridoDescripciónEjemplo
tcfenumber (double)síTipo de CFE (código numérico DGI).
seriestringsí
desdeNumeronumber (double)sí
hastaNumeronumber (double)sí
numeroAutorizacionstringsí
fechaAutorizacionstringsíFormato dd/mm/aaaa.
fechaVencimientostringsíFormato dd/mm/aaaa.
caeEspecial"0" | "1" | "2" | "3" | "4"sí0=ninguno, 1=exonerado, 2=Literal E, 3=Monotributo, 4=Monotributo MIDES.
disponiblebooleansí
ultimoUsadonumber (double)sí
numerosDisponiblesnumber (double)síCantidad de números todavía disponibles en este CAE.
xmlstringsíXML de autorización del CAE emitido por DGI.

No se aceptan campos adicionales.

HTTP 500

Error de validación

Example 1

{
  "descripcion": "Empresa no encontrada",
  "codigoError": "E01",
  "caes": []
}

POST /serviciosRubrosAgregarEditar

Catálogos

Crea o edita un rubro de servicios.

Body

IAPIFixedServiciosRubrosAgregarEditarEntrada

CampoTipoRequeridoDescripciónEjemplo
rubroServiciosRubrosíRubro a crear o modificar.
accion"agregar" | "editar"sí"agregar" crea un rubro nuevo; "editar" actualiza uno existente.agregar

No se aceptan campos adicionales.

Ejemplos

Agregar rubro de servicios

{
  "accion": "agregar",
  "rubro": {
    "version": 1,
    "id": "",
    "codigo": "PAN",
    "nombre": "Panadería",
    "padreId": null,
    "nombreCompleto": "Panadería",
    "activo": true,
    "esHoja": true,
    "ultimaEdicion": 0
  }
}

Editar rubro existente

Usá el id del rubro obtenido desde /serviciosRubrosListado.

{
  "accion": "editar",
  "rubro": {
    "version": 1,
    "id": "REEMPLAZAR_CON_ID_RUBRO",
    "codigo": "PAN",
    "nombre": "Panadería y confitería",
    "padreId": null,
    "nombreCompleto": "Panadería y confitería",
    "activo": true,
    "esHoja": true,
    "ultimaEdicion": 0
  }
}

Respuestas

HTTP 200

Rubro creado o editado correctamente

IAPIFixedServiciosRubrosAgregarEditarSalida

CampoTipoRequeridoDescripciónEjemplo
descripcionstringsí
codigoErrorstringsí
rubroServiciosRubrosí

No se aceptan campos adicionales.

HTTP 500

Error de validación

Example 1

{
  "descripcion": "Acción no es correcta, debe ser agregar o editar",
  "codigoError": "E01",
  "rubro": null
}