e-CF 46 — Comprobante de Exportaciones Electrónico¶
El emisor.rnc del cuerpo dice de qué empresa es el comprobante y, a la vez, en nombre de quién se emite: la API
comprueba que su token esté habilitado para esa empresa (cómo funciona).
Ampara las ventas al exterior. Las exportaciones están gravadas a tasa 0%, y el comprobante incorpora la información aduanera de la operación.
Particularidades¶
| Aspecto | Regla |
|---|---|
| Numeración | id_doc.e_ncf (E46 + 10 dígitos) y id_doc.fecha_vencimiento_secuencia (dd-MM-aaaa) obligatorios: la numeración la lleva su sistema. Ver numeracion.md. |
| Comprador | Suele ser extranjero: rnc opcional, se admite identificador_extranjero y pais. razon_social obligatoria. |
| ITBIS | Sólo la tasa 3 (0%). No existen itbis1, itbis2 ni monto_exento en totales. |
| Montos de la tasa 3 | Obligatorios aunque sean cero: monto_gravado_i3, itbis3 (= 0) y total_itbis3 (= 0.00). |
indicador_facturacion de los ítems |
3 (gravado a tasa 0%). |
| Retenciones | No lleva bloque de retención por ítem. |
| Impuestos adicionales (ISC) | No aplican en los ítems. |
| Bloques propios | informaciones_adicionales (aduana) y transporte. |
| Líneas de detalle | Máximo 1.000. |
Bloques aduaneros¶
Ambos son opcionales, pero la aduana suele exigirlos. Se envían junto al resto del documento:
"informaciones_adicionales": {
"fecha_embarque": "05-08-2026",
"numero_embarque": "EMB-2026-0044",
"condiciones_entrega": "FOB", // incoterm
"total_fob": 25000.00,
"seguro": 300.00,
"flete": 1200.00,
"total_cif": 26500.00,
"regimen_aduanero": "Exportación definitiva",
"peso_bruto": 520.5,
"peso_neto": 500.0,
"unidad_peso_bruto": "KGM",
"unidad_peso_neto": "KGM"
},
"transporte": {
"via_transporte": "1", // marítimo, aéreo, terrestre…
"pais_origen": "República Dominicana",
"pais_destino": "Estados Unidos"
}
Los países se escriben con su nombre, no con el código ISO: sin números, al menos 3 letras. Un "US" o un
"DO" pasaba esta validación en su día y el comprobante quedaba en system_error al validar el XML.
Los valores de condiciones_entrega, unidad_peso_* y via_transporte están en
catálogos.
Ejemplo¶
Exportación de cacao a Estados Unidos.
{
"emisor": {
"rnc": "133802074"
},
"comprador": {
"identificador_extranjero": "US-4457821",
"razon_social": "GLOBAL IMPORTS LLC",
"pais": "Estados Unidos"
},
"id_doc": {
"e_ncf": "E460000000001",
"fecha_vencimiento_secuencia": "31-12-2028",
"tipo_ingresos": "01",
"tipo_pago": "2",
"fecha_limite_pago": "31-12-2030",
"formas_pago": [
{ "forma": "4", "monto": 25000.0 }
]
},
"items": [
{
"nombre": "Cacao en grano",
"cantidad": 500,
"unidad_medida": "21",
"precio_unitario": 50.0,
"monto": 25000.0,
"indicador_facturacion": 3,
"indicador_bien_servicio": "1"
}
],
"totales": {
"monto_gravado_total": 25000.0,
"monto_gravado_i3": 25000.0,
"itbis3": 0,
"total_itbis3": 0.0,
"total_itbis": 0.0,
"monto_total": 25000.0
}
}
Archivo: ejemplos/ecf-46-minimo.json
TrackID. La respuesta
202siempre traetrack_id: null: la transmisión ocurre después, en segundo plano. Al transmitirse, este tipo completo recibe su TrackID y el documento pasa ain_process_dgii(dónde aparece el TrackID).
Errores frecuentes¶
Cada mensaje llega en un 422 dentro de document.errors (y, por campo, en document.detailed_errors); la forma completa está en Cómo responde la API.
| Mensaje | Causa |
|---|---|
| El campo ITBIS 1 no está permitido. | La exportación sólo maneja la tasa 3 (0%). |
| El campo monto exento no está permitido. | En el 46 no hay exentos: todo va gravado a tasa 0. |
| El campo razón social del comprador es obligatorio. | Aunque el cliente sea extranjero, hay que nombrarlo. |
| Hay ítems con indicador de facturación 3, así que el monto gravado a ITBIS tasa 3 … es obligatorio. | Declare monto_gravado_i3, itbis3 y total_itbis3, aunque el impuesto sea cero. |
| El campo fecha límite de pago es obligatorio cuando tipo de pago es 2. | Una venta a crédito siempre declara su fecha_limite_pago. |
| La fecha límite de pago (…) no puede ser anterior a la fecha de emisión, que es la de hoy (…). | id_doc.fecha_limite_pago está en el pasado. Con tipo_pago 2 (crédito) es obligatoria y tiene que ser igual o posterior a hoy. |
| Escriba el país con su nombre …, sin números y con al menos 3 letras… | comprador.pais, transporte.pais_origen y transporte.pais_destino llevan el nombre del país ("Estados Unidos"), no su código ("US"). |