Saltar al contenido
firmo
Docs / Emitir e-CF

Emitir e-CF

POST /v1/ecf: todos los campos de EmitirEcfInput, la respuesta y los estados de un e-CF.

POST/v1/ecf

Crea y envía un e-CF. Responde 202 con el e-CF en estado pendiente y lo procesa en segundo plano. Con ?wait=true espera hasta 20 segundos al resultado final y responde 200.

Manda siempre un header Idempotency-Key para poder reintentar sin duplicar. Ver Idempotencia.

Cuerpo de la solicitud (EmitirEcfInput)#

CampoTipoDescripción
tiponúmero, obligatorioTipo de e-CF: 31, 32, 33, 34, 41, 43, 44, 45, 46 o 47. Ver Tipos de e-CF.
encftextoe-NCF: E + tipo (2 dígitos) + secuencia (10 dígitos), por ejemplo E310000000001. Si se omite, Firmo asigna la siguiente secuencia disponible.
fechaEmisionfecha AAAA-MM-DDPor defecto, hoy en America/Santo_Domingo.
tipoIngresostextoPor defecto "01". 01 Operacionales, 02 Financieros, 03 Extraordinarios, 04 Arrendamientos, 05 Venta de activo depreciable, 06 Otros.
tipoPagonúmeroPor defecto 1. 1 Contado, 2 Crédito, 3 Gratuito.
fechaLimitePagofecha AAAA-MM-DDFecha límite de pago (ventas a crédito).
terminoPagotexto, máx. 15Término de pago, por ejemplo "30 días".
formasPagolista, máx. 7Cada elemento es { forma, monto }. Ver la tabla de formas de pago abajo.
compradorobjetoDatos del comprador. Ver Comprador.
itemslista, obligatorioDe 1 a 1,000 ítems. Ver Item.
referenciaobjetoObligatoria en notas de débito (33) y de crédito (34). Ver Referencia.
monedaobjeto{ tipo, tasaCambio }: código de moneda de 3 letras (por ejemplo USD) y tasa de cambio positiva.
idExternotexto, máx. 100Tu identificador interno. Único por empresa.
enviarCorreobooleanoPor defecto false. Envía el PDF al correo del comprador.
metadataobjetoPares clave/valor de texto que quieras guardar con el e-CF.

Comprador

CampoTipoDescripción
rnctextoRNC (9 dígitos) o cédula (11 dígitos), sin guiones.
identificadorExtranjerotexto, máx. 20Identificación de un comprador extranjero.
razonSocialtexto, máx. 150Nombre o razón social.
correocorreoCorreo al que se envía el PDF si enviarCorreo es true.
direcciontexto, máx. 100Dirección.
municipiotextoCódigo DGII de municipio (6 dígitos).
provinciatextoCódigo DGII de provincia (6 dígitos).
telefonotexto, máx. 12Teléfono.

Item

CampoTipoDescripción
codigotexto, máx. 35Código del producto o servicio en tu sistema.
descripciontexto, 1 a 80, obligatorioDescripción del ítem.
cantidadnúmero > 0, obligatorioCantidad.
unidadMedidatextoCódigo de unidad de medida de la DGII.
precioUnitariomonto, obligatorioPrecio unitario sin ITBIS. Montos no negativos con hasta 2 decimales.
descuentomontoDescuento del ítem.
indicadorFacturacionnúmeroPor defecto 1. 1 ITBIS 18%, 2 ITBIS 16%, 3 ITBIS 0%, 4 Exento, 0 No facturable.
indicadorBienServicionúmeroPor defecto 1. 1 Bien, 2 Servicio.
retencionobjetoindicadorAgente (1 Retención, 2 Percepción), montoItbisRetenido y montoIsrRetenido.

Referencia

Obligatoria en las notas de débito (33) y de crédito (34). Indica qué comprobante modificas.

CampoTipoDescripción
encfModificadotexto, obligatorioe-NCF del comprobante que se modifica.
fechaModificadofecha AAAA-MM-DD, obligatorioFecha de emisión de ese comprobante.
codigoModificacionnúmero 1 a 5, obligatorioCódigo de modificación de la DGII.
razontexto, máx. 90Razón de la modificación.

Formas de pago

formaSignificado
1Efectivo
2Cheque, transferencia o depósito
3Tarjeta de débito o crédito
4Venta a crédito
5Bonos o certificados de regalo
6Permuta
7Nota de crédito
8Otras formas de pago

Ejemplo: nota de crédito#

Cuerpo
{
  "tipo": 34,
  "comprador": { "rnc": "131000000", "razonSocial": "Ferretería El Puente SRL" },
  "referencia": {
    "encfModificado": "E310000000001",
    "fechaModificado": "2026-10-06",
    "codigoModificacion": 3,
    "razon": "Devolución de 2 sacos"
  },
  "items": [
    { "descripcion": "Cemento gris 42.5 kg", "cantidad": 2, "precioUnitario": 500 }
  ],
  "idExterno": "NC-2026-0042"
}

Respuesta (Ecf)#

200 con ?wait=true
{
  "id": "0f8c2a9e-6b1d-4c2a-9a51-3e7d1b2c4f60",
  "encf": "E310000000001",
  "tipo": 31,
  "estado": "aceptado",
  "ambiente": "sandbox",
  "esRfce": false,
  "trackId": "b1c7e4d2-5f3a-4e8b-9c0d-2a6f1e3b7d90",
  "codigoSeguridad": "Xk3P9a",
  "fechaEmision": "2026-10-06",
  "fechaFirma": "2026-10-06T10:14:03-04:00",
  "comprador": { "rnc": "131000000", "razonSocial": "Ferretería El Puente SRL" },
  "montoGravadoTotal": 10000,
  "montoExento": 0,
  "totalItbis": 1800,
  "montoTotal": 11800,
  "mensajes": [],
  "urls": {
    "xml": "https://api.firmo.do/v1/ecf/E310000000001/xml",
    "pdf": "https://api.firmo.do/v1/ecf/E310000000001/pdf",
    "qr": "https://api.firmo.do/v1/ecf/E310000000001/qr",
    "consultaDgii": null
  },
  "idExterno": null,
  "metadata": null,
  "creadoEn": "2026-10-06T14:14:02.511Z",
  "actualizadoEn": "2026-10-06T14:14:03.902Z"
}
CampoDescripción
idUUID del e-CF en Firmo.
encfe-NCF asignado.
estadoVer la tabla de estados.
ambientesandbox, test, cert o prod.
esRfcetrue si es una factura de consumo menor de RD$250,000 enviada como resumen. Ver RFCE.
trackIdIdentificador de seguimiento de la DGII, o null.
codigoSeguridadLos 6 primeros caracteres del SignatureValue. Va en la representación impresa.
fechaEmisionFecha de emisión.
fechaFirmaFecha y hora de la firma, o null.
compradorDatos del comprador, o null.
montoGravadoTotal, montoExento, totalItbis, montoTotalTotales calculados por Firmo.
mensajesMensajes de la DGII: lista de { codigo, valor }.
urlsxml, pdf, qr y consultaDgii (null si no aplica).
idExterno, metadataLo que mandaste, o null.
creadoEn, actualizadoEnFechas ISO 8601.

Estados de un e-CF#

estadoQué significa
pendienteFirmo lo recibió y está en cola.
en_procesoEnviado a la DGII, esperando el resultado.
aceptadoLa DGII lo aceptó.
aceptado_condicionalLa DGII lo aceptó con observaciones. Revisa mensajes.
rechazadoLa DGII lo rechazó. Revisa mensajes, corrige y emite un e-CF nuevo.
errorError técnico: no llegó a la DGII. Se reintenta solo; también puedes forzarlo con POST /v1/ecf/{idOEncf}/resend.
Los cambios de estado llegan por webhook: ecf.aceptado, ecf.aceptado_condicional, ecf.rechazado y ecf.error.