Ir al contenido

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.

  1. 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"
  2. Sube el certificado de firma.

    Una vez por contribuyente. El .p12 viaja 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"
  3. Declara la numeración.

    desde es 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
    }'
  4. 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.

  5. Mira en qué acabó.

    Unos segundos después, con el id del 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"
    }

    RECIBIDA no es lo mismo que autorizado: significa que el SRI aceptó procesarlo. El veredicto es AUTORIZADO o NO_AUTORIZADO, y mensajes[] trae la respuesta del SRI textual con una guía de qué hacer.