Saltar a contenido

e-CF 46 — Comprobante de Exportaciones Electrónico

POST /api/v1/documents/46
Authorization: Bearer <su-token>
Content-Type: application/json

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 202 siempre trae track_id: null: la transmisión ocurre después, en segundo plano. Al transmitirse, este tipo completo recibe su TrackID y el documento pasa a in_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").

Referencias