API DE COMERCIO EXTERIOR
Exporta sin que se te atore la aduana
El complemento que acompaña a tus facturas de exportación: fracción arancelaria, Incoterm, valor en dólares y domicilio del destinatario en el extranjero.
¿Qué es el complemento de comercio exterior?
Es la extensión del CFDI que se usa cuando exportas mercancía de forma definitiva. Añade a la factura lo que la aduana necesita saber y una factura normal no lleva: qué es exactamente lo que sale del país, bajo qué fracción arancelaria, con qué Incoterm y cuánto vale en dólares.
Sin él, tu pedimento no cuadra. Y un pedimento que no cuadra es mercancía detenida en la frontera — que suele costar bastante más que el tiempo de programar la integración.
El endpoint y el nodo
El complemento va dentro del comprobante, en Complemento.ForeignTrade:
"Complemento": {
"ForeignTrade": {
"OperationType": "2",
"RequestCode": "A1",
"Incoterm": "CFR",
"ExchangeRateUSD": 17.05,
"TotalUSD": 4820.00,
"OriginCertificate": false,
"Receiver": {
"Address": {
"Street": "Sunset Blvd",
"ExteriorNumber": "1420",
"Municipality": "Los Angeles",
"State": "CA",
"Country": "USA",
"ZipCode": "90026"
}
},
"Commodity": [
{
"IdentificationNumber": "SKU-4471",
"TariffFraction": "84713001",
"CustomsQuantity": 12,
"CustomsUnit": "06",
"CustomsUnitValue": 401.66,
"SpecificDescriptions": [
{
"Brand": "Genérica",
"Model": "X-200",
"SerialNumber": "SN-0099"
}
]
}
]
}
}
Los cuatro campos que dan problemas
Fracción arancelaria
TariffFraction clasifica tu producto según la tarifa de la ley de importación y
exportación. No es un dato que puedas deducir: lo determina tu agente aduanal. Guárdalo en tu
catálogo de productos junto al SKU, porque volver a preguntarlo en cada exportación es una
fuente garantizada de retrasos.
Unidad de medida aduanera
CustomsUnit no es la misma unidad que usas en el concepto de la factura. La
aduana tiene su propio catálogo, y tu "pieza" comercial puede ser "kilogramo" para ellos.
Son dos campos distintos con dos catálogos distintos, y confundirlos es de los errores más
frecuentes.
Tipo de cambio
ExchangeRateUSD y TotalUSD tienen que ser coherentes con el
importe de la factura. Si facturas en pesos, el total en dólares debe corresponder al tipo de
cambio que declaras — y ese tipo de cambio es el del día de la operación, no el de hoy.
Si automatizas la conversión, congela la tasa al momento de emitir y guárdala.
Incoterm
Incoterm define quién paga el flete y quién asume el riesgo en cada tramo. Sale
del contrato con tu cliente, no de una decisión técnica. Si en la factura pones uno y en el
contrato dice otro, el problema no es fiscal: es comercial, y aparece cuando algo se pierde
en tránsito.
El domicilio del destinatario
El nodo Receiver.Address lleva la dirección en el extranjero, con su país y su
código postal en formato local. Aquí no aplican las validaciones del catálogo de códigos
postales del SAT: un ZIP de California o un postcode británico se registran tal cual.
Si tu sistema valida direcciones contra el catálogo mexicano, tendrás que hacer una excepción para las de exportación. Es un detalle pequeño que suele descubrirse tarde, con la primera venta a Estados Unidos.
Ciclo de vida y SDKs
La respuesta trae Id y UUID. Desde ahí: consulta, descarga de XML y PDF, envío
por correo y cancelación. Librerías oficiales en PHP, Python, JavaScript, Java, Ruby
y .NET (4.5+).
Si además mueves la mercancía por territorio nacional antes de que salga del país, probablemente necesites también el complemento Carta Porte. Son cosas distintas y no se sustituyen: uno describe la exportación, el otro el traslado.
Preguntas frecuentes
¿Toda exportación necesita este complemento?
Las exportaciones definitivas de mercancía sí. Los servicios prestados a clientes en el extranjero no llevan complemento de comercio exterior: son una factura normal con receptor extranjero.
¿De dónde saco la fracción arancelaria?
De tu agente aduanal. Depende de la naturaleza del producto y no admite aproximaciones — una fracción incorrecta cambia los aranceles aplicables.
¿Puedo facturar en dólares?
Sí. En cualquier caso debes declarar ExchangeRateUSD y TotalUSD
de forma coherente con la moneda del comprobante.
¿Comercio exterior y Carta Porte son lo mismo?
No. Comercio exterior documenta la operación de exportación; Carta Porte documenta el traslado físico de la mercancía por territorio nacional. Una exportación por carretera puede necesitar ambos.
Prueba tu primera exportación en sandbox
Valida el XML con tu agente aduanal antes de que salga el primer embarque real.
Crear cuenta y probar Hablar con un ingeniero