Guía completa para entender, generar y validar el Complemento Carta Porte versión 3.1. Obligatorio para el traslado de mercancías por territorio nacional desde 2022.
El Complemento Carta Porte es un nodo adicional que se incorpora a un CFDI (generalmente de tipo Traslado o Ingreso) para amparar el traslado de mercancías por vía terrestre, aérea, marítima o ferroviaria dentro del territorio nacional.
Funciona como el documento legal que los transportistas y propietarios de la mercancía deben presentar ante las autoridades durante el traslado. Reemplazó a la antigua Carta Porte en papel.
El Complemento Carta Porte es obligatorio cuando:
| Situación | Obligatorio |
|---|---|
| Traslado de mercancías en vehículo propio o rentado por el dueño | Sí |
| Transporte contratado a un tercero (autotransportista) | Sí |
| Transporte entre estados o municipios | Sí |
| Traslado local (misma ciudad, corta distancia, mismo dueño) | No siempre |
| Paquetería y mensajería (envíos menores a 350 kg) | Exentos |
| Traslado de bienes intangibles / servicios | No aplica |
| Escenario | Tipo CFDI | Emisor del CFDI |
|---|---|---|
| El dueño de la mercancía traslada con vehículo propio | T - Traslado | El dueño de la mercancía |
| El dueño contrata un transportista externo | I - Ingreso | El transportista (quien cobra el flete) |
| Traslado de mercancias propias entre sucursales | T - Traslado | La empresa propietaria |
La versión 3.1 del complemento, vigente desde junio 2024, trajo cambios importantes:
Define el origen y el o los destinos del traslado. Se requiere al menos un origen (Origen) y un destino (Destino).
| Campo | Req. | Descripción |
|---|---|---|
| TipoUbicacion | Obligatorio | "Origen" o "Destino" |
| IDUbicacion | Obligatorio | Identificador único de la ubicación (OR000001, DE000001...) |
| RFCRemitenteDestinatario | Obligatorio | RFC del dueño de la mercancía en esa ubicación |
| FechaHoraSalidaLlegada | Obligatorio | Fecha y hora estimada de salida (origen) o llegada (destino). Formato ISO 8601. |
| Domicilio | Obligatorio | Dirección completa: Calle, Municipio, Estado, País, CodigoPostal |
| Latitud / Longitud | Obligatorio v3.1 | Coordenadas GPS. Nuevo en versión 3.1. |
| Campo | Req. | Descripción |
|---|---|---|
| PermSCT | Obligatorio | Tipo de permiso SCT del transportista (catálogo c_TipoPermiso) |
| NumPermisoSCT | Obligatorio | Número de permiso otorgado por la SCT |
| IdentificacionVehicular | Obligatorio | Datos del vehículo: ConfigVehicular, PesoBrutoVehicular, PlacaVM |
| Seguros | Obligatorio | Aseguradora de responsabilidad civil y número de póliza |
| Remolques | Condicional | Si aplica: SubTipoRem y Placa de cada remolque |
Define a los actores del traslado. En autotransporte federal siempre se requiere al menos el Operador (chofer).
| Campo | Req. | Descripción |
|---|---|---|
| TipoFigura | Obligatorio | "01" = Operador, "02" = Propietario, "03" = Arrendador, "04" = Notificado |
| RFCFigura | Obligatorio | RFC del operador (chofer). Nuevo como obligatorio en v3.1. |
| NombreFigura | Obligatorio | Nombre del operador |
| NumLicencia | Condicional | Número de licencia federal si TipoFigura = "01" |
Timbrify maneja el Complemento Carta Porte 3.1 completo. Solo pasa los datos del traslado y nosotros construimos el nodo XML correctamente.
const cfdi = await client.invoices.stamp({ tipoComprobante: 'T', // Traslado // emisor y receptor como en CFDI normal... complementoCartaPorte: { version: '3.1', transpInternac: 'No', ubicaciones: [ { tipoUbicacion: 'Origen', idUbicacion: 'OR000001', rfcRemitenteDestinatario: 'MEM901231L84', fechaHoraSalidaLlegada: '2026-02-24T08:00:00', latitud: 19.4326, longitud: -99.1332, domicilio: { municipio: 'Cuauhtémoc', estado: 'CMX', codigoPostal: '06600' }, }, { tipoUbicacion: 'Destino', idUbicacion: 'DE000001', rfcRemitenteDestinatario: 'CLI901231AB1', fechaHoraSalidaLlegada: '2026-02-24T14:00:00', latitud: 20.9674, longitud: -89.5926, domicilio: { municipio: 'Mérida', estado: 'YUC', codigoPostal: '97000' }, }, ], mercancias: [{ bienesTransp: '52161557', // Clave producto SAT descripcion: 'Autopartes', cantidad: 200, claveUnidad: 'KGM', pesoEnKg: 500, }], autotransporte: { permSct: 'TPAF01', numPermisoSct: 'SCT-TPAF01-12345', configVehicular: 'C2', placaVm: 'AAA-000-A', aseguradora: 'Qualitas', polizaRC: 'POL-12345678', }, figurasTransporte: [{ tipoFigura: '01', // Operador rfcFigura: 'OEPM901231AB1', nombreFigura: 'PEDRO MARTINEZ OLIVA', numLicencia: 'LIC-FED-123456', }], }, });