Primeros pasos
Primera factura
La URL base de testing está en Ambientes.
En todos los pasos menos el primero, enviá x-api-key y x-api-secret. Cómo obtenerlos está en Credenciales.
1. Verificá que la API responde
Sección titulada «1. Verificá que la API responde»GET /keepAlive no lleva credenciales ni cuerpo. Una respuesta con texto indica que el ambiente está activo.
curl "https://southamerica-east1-fixedtesting-10ce2.cloudfunctions.net/apiFixed/keepAlive"2. Validá las credenciales
Sección titulada «2. Validá las credenciales»POST /validarCredenciales no lleva cuerpo. Si el par es válido, codigoError viene vacío y la respuesta trae el RUT y el nombre de la empresa.
3. Emití un e-Ticket de prueba
Sección titulada «3. Emití un e-Ticket de prueba»Este ejemplo es el caso “venta a consumidor final” de la referencia: una línea en pesos, con IVA incluido, sin cliente. Una venta sin RUT se emite como e-Ticket (código 101).
Generá un UUID y mandalo en idempotencyKey. Si la conexión se corta, reintentá el mismo JSON con la misma clave. El detalle está en Idempotencia.
{ "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, "idempotencyKey": "a1b2c3d4-e5f6-4a1b-9c2d-1234567890ab"}totalAPagar tiene que coincidir con el total que calcula Fixed. tasaIva tiene que ser un valor cfeDgi configurado en la empresa, por ejemplo Basic.
4. Guardá la respuesta
Sección titulada «4. Guardá la respuesta»Si salió bien, codigoError viene vacío. Guardá idCFE: lo vas a usar para consultar, imprimir o devolver. También guardá serie, numero, tipoCFE y comprobante.
{ "descripcion": "", "codigoError": "", "idCFE": "id-generado-por-fixed", "idVenta": "id-de-la-venta", "numero": 1523, "serie": "A", "tipoCFE": 101, "comprobante": "e-Ticket A 1523", "urlA4": "https://testing.fixed.uy/verificarCFEverPDF/...", "urlTicket": "https://testing.fixed.uy/verificarCFEverTicket/...", "urlVerificarCFE": "https://testing.fixed.uy/verificarCFE/...", "htmlTicket": "<html>...</html>", "pdfBase64": "...", "xml": "<?xml version=\"1.0\" ...>", "observaciones": ""}Los identificadores, el número y el final de cada URL los completa Fixed. urlA4 es el PDF, urlTicket el ticket térmico y htmlTicket el ticket para mostrar en el navegador.
Si codigoError está vacío pero las URLs vienen vacías, el comprobante igual se emitió. No vuelvas a llamar a ventaCrear. Pedí las URLs con POST /imprimirCFE usando ese idCFE.
El resto de los ejemplos está en Crear una venta. Para pasar a comprobantes reales, seguí Pasar a producción.