Saltar al contenido

Facture electrónicamente desde su propio sistema.

Si su empresa usa un sistema hecho a la medida, su programador integra la API de VELTIX y cada venta sale como e-CF válido ante la DGII: nosotros generamos el XML, lo firmamos con su certificado, lo enviamos y le devolvemos el estado, el XML y el PDF.

Cómo empezar

  1. 1. Certificación de la empresa. VELTIX certifica a la empresa ante la DGII como emisora electrónica y carga sus secuencias e-NCF autorizadas.
  2. 2. Clave de pruebas. Le entregamos una clave vx_test_… para integrar sin afectar la DGII: los comprobantes se firman de verdad, pero no consumen secuencias ni se envían.
  3. 3. Clave de producción. Con la integración lista, cambia a vx_live_… y cada llamada emite un e-CF real.

Autenticación

Todas las llamadas usan HTTPS y la cabecera Authorization: Bearer <clave>. La clave identifica a la empresa emisora; guárdela en el servidor, nunca en una aplicación de navegador o móvil. Envíe Idempotency-Key en cada emisión: si repite la llamada por un corte de red, recibe el mismo comprobante en lugar de uno nuevo.

URL base: https://app.veltixrd.com/api/v1

Endpoints

POST

/ecf

Emite un e-CF: toma la secuencia, firma, envía a la DGII y responde con el estado.

GET

/ecf/{encf}

Estado del e-CF. Si sigue en proceso, VELTIX consulta a la DGII antes de responder.

GET

/ecf/{encf}/xml

XML firmado, tal como se envió a la DGII.

GET

/ecf/{encf}/pdf

Representación impresa en PDF con QR y código de seguridad.

GET

/ecf?limit=50&desde=2026-11-01&estado=aceptado

Últimos comprobantes emitidos.

GET

/sequences

Secuencias e-NCF disponibles y vencimiento por tipo.

GET

/me

Empresa de la clave, modo y estado de la facturación electrónica.

Emitir un e-CF

curl -X POST https://app.veltixrd.com/api/v1/ecf \
  -H "Authorization: Bearer vx_live_…" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: pedido-10482" \
  -d '{
    "tipo": "31",
    "numero_interno": "F-10482",
    "referencia_externa": "pedido-10482",
    "comprador": { "rnc": "131880681", "nombre": "Distribuidora del Caribe SRL" },
    "items": [
      { "nombre": "Resma papel bond", "tipo": "bien", "cantidad": 10, "precio": 325, "itbis": 18 },
      { "nombre": "Instalación", "tipo": "servicio", "cantidad": 1, "precio": 2500, "descuento": 250, "itbis": 18 }
    ],
    "pago": { "tipo": "contado", "formas": [{ "forma": "transferencia", "monto": 6490 }] }
  }'

Respuesta (201)

{
  "id": "4f0c…",
  "encf": "E310000000123",
  "tipo": "31",
  "estado": "aceptado",
  "ambiente": "produccion",
  "total": 6490,
  "codigo_seguridad": "Xy7Kp2",
  "fecha_firma": "12-11-2026 10:42:05",
  "qr_url": "https://ecf.dgii.gov.do/ecf/ConsultaTimbre?RncEmisor=…",
  "dgii": { "estado": "Aceptado", "mensajes": [], "track_id": "a9c1…" },
  "referencia_externa": "pedido-10482",
  "enlaces": { "self": "…/ecf/E310000000123", "xml": "…/xml", "pdf": "…/pdf" }
}

Campos del comprobante

tipo
31 crédito fiscal · 32 consumo · 33 nota de débito · 34 nota de crédito · 41 compras · 43 gastos menores · 44 regímenes especiales · 45 gubernamental · 46 exportaciones · 47 pagos al exterior.
comprador
rnc (9 u 11 dígitos), nombre, correo, direccion; extranjero para el 47. Obligatorio en 31, 41 y 45, y en el 32 desde RD$250,000.
items[]
nombre, tipo (bien | servicio), cantidad, precio (sin ITBIS), descuento (monto), itbis (18 | 16 | 0 | "exento"). En 41 y 47: retencion_itbis y retencion_isr por línea.
pago
tipo (contado | credito | gratuito), fecha_limite (dd-MM-aaaa) y formas[] con forma (efectivo, transferencia, tarjeta, credito, bonos, permuta, nota_credito, otra) y monto.
referencia
Solo en 33 y 34: encf del comprobante modificado, fecha (dd-MM-aaaa), codigo (1 anula, 2 corrige texto, 3 corrige montos, 4 reemplazo de contingencia, 5 referencia consumo) y razon.
fecha_emision
Opcional (dd-MM-aaaa). Por defecto, la fecha de hoy en República Dominicana.
referencia_externa
Su identificador interno (pedido, venta). Se devuelve en cada consulta.

Los totales, el ITBIS por tasa, los exentos y el código de seguridad los calcula VELTIX. Los precios se envían sin ITBIS.

Estados

aceptado
La DGII aceptó el comprobante. Puede entregarlo al cliente.
aceptado_condicional
Aceptado con observaciones (vea dgii.mensajes). Es válido.
en_proceso
La DGII lo recibió y lo está validando. Consulte GET /ecf/{encf} en unos segundos.
contingencia
La DGII no respondió. El comprobante está firmado y VELTIX lo reenvía automáticamente.
rechazado
La DGII lo rechazó (motivo en dgii.mensajes). La secuencia se consumió: corrija y emita uno nuevo.
prueba
Emitido con una clave vx_test_: firmado con su certificado, sin secuencia real y sin envío a la DGII.

Errores

Formato: { "error": { "code", "message" } }

401 unauthorized
Clave inválida, revocada o empresa inactiva.
403 ecf_not_enabled
La empresa aún no tiene la facturación electrónica activa (certificación DGII pendiente).
422 validation_error / invalid_document
Datos incompletos o una regla de la DGII no se cumple; el mensaje indica cuál. No se consume secuencia.
429 rate_limited
Más de 120 solicitudes por minuto con la misma clave.
502 dgii_unavailable
La DGII no respondió; el comprobante queda en contingencia.

¿Su cliente tiene un sistema propio?

Escríbanos con el RNC de la empresa y el lenguaje del sistema; le preparamos la certificación y las claves de prueba.