Inicio rápido
De cero a un comprobante autorizado por el SRI en cinco llamadas. Todos los ejemplos corren tal cual contra el ambiente de pruebas.
Necesitas tu llave fk_test_... y el RUC del emisor asignado a tu cuenta. En
los ejemplos: https://api-test.facto.lat como URL base.
-
Confirma quién eres.
La primera llamada de toda integración: verifica que la llave funciona y contra qué ambiente emites.
Ventana de terminal curl -s https://api-test.facto.lat/v1/llaves/actual \-H "x-api-key: $LLAVE" -
Sube el certificado de firma.
Una vez por contribuyente. El
.p12viaja como archivo y queda cifrado; la respuesta confirma titular, certificadora y vencimiento.Ventana de terminal curl -X PUT https://api-test.facto.lat/v1/emisores/0999999999001/certificado \-H "x-api-key: $LLAVE" \-F "certificado=@firma.p12" \-F "contrasena=la-contrasena-del-p12" -
Declara la numeración.
desdees el próximo número a emitir. Si el contribuyente ya facturaba en otro sistema, este dato evita el error 45 del SRI («secuencial registrado»).Ventana de terminal curl -X POST https://api-test.facto.lat/v1/puntos-emision \-H "x-api-key: $LLAVE" -H "Content-Type: application/json" \-H "Idempotency-Key: $(uuidgen)" \-d '{"ruc": "0999999999001","establecimiento": "001","puntoEmision": "001","tipoComprobante": "01","desde": 1}' -
Emite.
Ventana de terminal curl -X POST https://api-test.facto.lat/v1/facturas \-H "x-api-key: $LLAVE" -H "Content-Type: application/json" \-H "Idempotency-Key: $(uuidgen)" \-d '{"emisor": {"ruc": "0999999999001","razonSocial": "MI EMPRESA S.A.","dirMatriz": "Av. Amazonas y Colon"},"establecimiento": "001","puntoEmision": "001","comprador": {"tipoIdentificacion": "05","identificacion": "0928548817","razonSocial": "JUAN PEREZ","direccion": "Guayaquil"},"detalles": [{"codigoPrincipal": "SRV-1","descripcion": "Servicio de consultoria","cantidad": "2","precioUnitario": "50.00","codigoPorcentajeIva": "4"}],"pagos": [{ "formaPago": "20", "total": "115.00" }],"camposAdicionales": { "Email": "cliente@ejemplo.ec" }}'Responde 202 al instante, sin esperar al SRI:
{"id": "42de1d6f-98d5-48b6-b81e-03e75c62b984","claveAcceso": "1108202601099999999900110010010000000018190265919","estado": "FIRMADO","numeroComprobante": "001-001-000000001","importeTotal": "115.00"}El envío y la autorización van por cola: si el SRI está caído, la petición no se bloquea y facto reintenta solo.
-
Mira en qué acabó.
Unos segundos después, con el
iddel paso anterior:Ventana de terminal curl -s https://api-test.facto.lat/v1/comprobantes/$ID \-H "x-api-key: $LLAVE"{"estado": "AUTORIZADO","numeroAutorizacion": "1108202601099999999900110010010000000018190265919","fechaAutorizacion": "2026-08-11T22:56:17.000Z"}RECIBIDAno es lo mismo que autorizado: significa que el SRI aceptó procesarlo. El veredicto esAUTORIZADOoNO_AUTORIZADO, ymensajes[]trae la respuesta del SRI textual con una guía de qué hacer.
Lo que sigue
Sección titulada «Lo que sigue»- El XML autorizado y el PDF: Consulta, XML y RIDE.
- Que el comprador lo reciba solo: Correo al comprador.
- Enterarte del veredicto sin sondear: Webhooks.
- Por qué toda escritura lleva
Idempotency-Key: Idempotencia.