DGII e-CF SDKs¶
Dos SDKs publicables y orientados a producción para el sistema de facturación electrónica (e-CF) de la DGII de República Dominicana:
| Lenguaje | Paquete | Registro |
|---|---|---|
| TypeScript | @deuriib/dgii-ecf |
npm |
| Python | py-dgii-ecf |
PyPI |
Ambos SDKs comparten el mismo diseño:
- Patrón Result —
neverthrow(TS) yresult(Python). Sin excepciones ocultas. - Resiliencia — reintentos, circuit breaker y timeout en cada llamada externa.
- Envío idempotente — con clave basada en
RNC + eNCF + SHA-256(signed XML). - XMLDSig correcto — C14N 1.0 inclusivo, firma enveloped, RSA-SHA256.
- Superficie completa de la API — autenticación (SEED), envío de documentos, facturas de resumen (RFCE), consultas de estado, directorio de clientes, aprobación comercial y anulación de e-NCF.
Solo del lado del servidor
Estos SDKs manejan claves privadas y credenciales. Nunca los ejecutes en un navegador ni los empaquetes en un bundle del lado del cliente.
Inicio rápido¶
bun add @deuriib/dgii-ecf
import { ECF, Environment, P12Reader, Signature } from '@deuriib/dgii-ecf';
const credentials = new P12Reader(process.env.CERT_PASSWORD ?? '')
.getKeyFromFile('identity.p12');
if (credentials.isErr()) throw credentials.error;
const ecf = new ECF(credentials.value, Environment.Cert);
const auth = await ecf.authenticate();
uv add py-dgii-ecf
from py_dgii_ecf import ECF, Environment, P12Reader, Signature
credentials = P12Reader(password).get_key_from_file("identity.p12")
if credentials.is_err():
raise SystemExit(credentials.unwrap_err())
ecf = ECF(credentials.unwrap(), Environment.CERT)
auth = ecf.authenticate()
Empieza con Instalación y luego sigue la guía de tu lenguaje.