Ir al contenido

EmpezandoPrimer comprobante

Primer comprobante

Ver como Markdown

Con una API key en mano (ver Autenticación rápida), emitir un comprobante es una sola llamada.

  1. Arma el payload. Este ejemplo emite una Factura de Crédito Fiscal Electrónica (tipo 31), la más común entre negocios:

    {
    "type": 31,
    "incomeType": "01",
    "internalNumber": "FAC-2026-00042",
    "buyer": {
    "rnc": "131880681",
    "name": "Mi Cliente SRL",
    "email": "pagos@micliente.do"
    },
    "payment": {
    "condition": "credit",
    "dueDate": "15-03-2026",
    "methods": [{ "type": "check_transfer", "amount": 2360.0 }]
    },
    "lines": [
    {
    "name": "Servicio de consultoría",
    "kind": "service",
    "quantity": 1,
    "unitOfMeasure": "43",
    "unitPrice": 2000.0,
    "itbisRate": 1
    }
    ]
    }

    type, buyer, payment y lines son lo mínimo. NovaFE calcula los totales, asigna el e-NCF y arma el resto del XML: no mandas RNC emisor, secuencia ni totales.

  2. Envíalo a POST /api/v1/ecf:

    Ventana de terminal
    curl -X POST https://api.novafe.example/api/v1/ecf \
    -H "X-API-Key: $NOVAFE_API_KEY" \
    -H "Content-Type: application/json" \
    -H "Idempotency-Key: $(uuidgen)" \
    -d @comprobante.json

    El header Idempotency-Key es opcional pero recomendado: si el request se repite con la misma clave y el mismo cuerpo, NovaFE devuelve la respuesta original en vez de emitir dos veces.

  3. NovaFE intenta resolver el estado fiscal dentro del propio request (unos 8 segundos). Si la DGII tarda más, la respuesta llega de todas formas con un estado intermedio y un worker de fondo termina el seguimiento:

    {
    "id": "018f...",
    "type": 31,
    "status": "accepted",
    "encf": "E310000000042",
    "issueDate": "10-01-2026"
    }
  4. Confirma el resultado final por webhook o consultando GET /api/v1/ecf/{id}.