Saltar al contenido principal

Clientes Oficiales

Facturo ECF ofrece clientes oficiales, de un solo archivo y sin dependencias pesadas, que encapsulan la autenticación, las rutas, la serialización y el manejo de errores de la API.

LenguajeArchivoRequisitosGuía
Python (scripts, microservicios)ecf_client.pyPython 3.7+, requestsPython
Odoo (l10n_do_ecf_connect)ecf_client.pyOdoo 14 – 18Odoo
C# / .NETFacturoClient.cs.NET Standard 2.0+, .NET 6 – 9.NET
Node.js / TypeScriptfacturo-client.tsNode.js 18+, Bun, Deno, WorkersNode.js

Copia el archivo en tu proyecto y úsalo directamente.

Configuración común​

Todos los clientes comparten los mismos parámetros:

ParámetroDescripciónValor por defecto
URL baseURL de la API de Facturohttps://ecf.facturord.app/
API KeyClave de integración, enviada en el header X-API-Key— (requerida)
Company IDUUID de la empresa por defecto. Puede sobrescribirse en cada llamada.—
TimeoutTiempo máximo por petición30 segundos

Métodos disponibles​

OperaciónPython.NETNode.jsEndpoint
Anular rangos (ANECF)cancel_rangesCancelRangesAsynccancelRangesPOST /emission/cancel-ranges
Anular un e-NCFcancel_single_sequenceCancelSingleSequenceAsynccancelSingleSequencePOST /emission/cancel-ranges
Anular un rango continuocancel_sequence_rangeCancelSequenceRangeAsynccancelSequenceRangePOST /emission/cancel-ranges
Emitir e-CFemit_rich_ecfEmitRichECFAsyncemitRichECFPOST /emission/ecf
Estado por Track IDget_tracking_statusGetTrackingStatusAsyncgetTrackingStatusGET /emission/invoices/{track_id}/status
XML firmadoget_signed_xmlGetSignedXmlAsyncgetSignedXmlGET /emission/documents/{id}/signed-xml
Reintentar emisiónretry_emissionRetryEmissionAsyncretryEmissionPOST /emission/documents/{id}/retry

Todas las rutas son relativas a /api/v1/companies/{company_id}. Consulta la referencia de la API para el detalle de cada campo.

Constantes de la DGII​

Los clientes incluyen constantes para los ambientes y tipos de e-CF:

TipoDescripciónPython (ECFType).NET (EcfTypes)
31Factura de Crédito Fiscal ElectrónicaE31_CREDITO_FISCALFacturaCreditoFiscal
32Factura de Consumo ElectrónicaE32_CONSUMOFacturaConsumo
33Nota de Débito ElectrónicaE33_NOTA_DEBITONotaDebito
34Nota de Crédito ElectrónicaE34_NOTA_CREDITONotaCredito
41Compras ElectrónicoE41_COMPRASCompras
43Gastos Menores ElectrónicoE43_GASTOS_MENORESGastosMenores
44Regímenes Especiales ElectrónicaE44_REGIMENES_ESPECIALESRegimenesEspeciales
45Gubernamental ElectrónicoE45_GUBERNAMENTALGubernamental
46Comprobante para Exportaciones ElectrónicoE46_EXPORTACIONESExportaciones
47Comprobante para Pagos al Exterior ElectrónicoE47_PAGOS_EXTERIORPagosAlExterior
AmbientePython (DGIIEnv).NET (DgiiEnvironment)Node.js (DGIIEnv)
PruebasDGIIEnv.TESTECFDgiiEnvironment.TestECF'testecf'
CertificaciónDGIIEnv.CERTECFDgiiEnvironment.CertECF'certecf'
ProducciónDGIIEnv.ECFDgiiEnvironment.ECF'ecf'

En Node.js, ECFType es un tipo numérico (31 | 32 | …).

Manejo de errores​

Cada cliente lanza una excepción tipada cuando la API responde con un error HTTP:

LenguajeExcepciónPropiedades
PythonFacturoAPIErrorstatus_code, payload
.NETFacturoApiExceptionStatusCode, RawPayload
Node.jsFacturoAPIErrorstatusCode, payload

En Python y Node.js, los timeouts y fallos de red también se lanzan como FacturoAPIError. En .NET se propagan las excepciones estándar de HttpClient (TaskCanceledException por timeout, HttpRequestException por red).

Ver Manejo de errores.