Documentación Técnica
Documentación Técnica
Medios electrónicos
Para poder ser validado, el comprobante fiscal digital por Internet debe estar referenciado al
namespace del comprobante fiscal digital por Internet y referenciar la validación del mismo a la ruta
publicada por el SAT en donde se encuentra el esquema XSD objeto de la presente sección
(http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd) de la siguiente manera:
<cfdi:Comprobante
xmlns:cfdi="http://www.sat.gob.mx/cfd/4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.sat.gob.mx/cfd/4
http://www.sat.gob.mx/sitio_internet/cfd/4/cfdv40.xsd"
……………..
</cfdi:Comprobante>
Estructura
Elementos
Elemento: Comprobante
Diagrama
Descripción
Estándar de Comprobante Fiscal Digital por Internet.
Atributos
Version
Descripción Atributo requerido con valor prefijado a 4.0 que indica la versión del estándar
bajo el que se encuentra expresado el comprobante.
Uso requerido
Valor Prefijado 4.0
Tipo Base xs:string
Espacio en Blanco Colapsar
Serie
Descripción Atributo opcional para precisar la serie para control interno del contribuyente.
Este atributo acepta una cadena de caracteres.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 25
Espacio en Blanco Colapsar
Patrón [^|]{1,25}
Folio
Descripción Atributo opcional para control interno del contribuyente que expresa el folio
del comprobante, acepta una cadena de caracteres.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 40
Espacio en Blanco Colapsar
Patrón [^|]{1,40}
Fecha
Descripción Atributo requerido para la expresión de la fecha y hora de expedición del
Comprobante Fiscal Digital por Internet. Se expresa en la forma AAAA-MM-
DDThh:mm:ss y debe corresponder con la hora local donde se expide el
comprobante.
Uso requerido
Tipo Especial tdCFDI:t_FechaH
Sello
Descripción Atributo requerido para contener el sello digital del comprobante fiscal, al que
hacen referencia las reglas de resolución miscelánea vigente. El sello debe
ser expresado como una cadena de texto en formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Blanco Colapsar
FormaPago
Descripción Atributo condicional para expresar la clave de la forma de pago de los bienes
o servicios amparados por el comprobante.
Uso opcional
Tipo Especial catCFDI:c_FormaPago
NoCertificado
Descripción Atributo requerido para expresar el número de serie del certificado de sello
digital que ampara al comprobante, de acuerdo con el acuse correspondiente
a 20 posiciones otorgado por el sistema del SAT.
Uso requerido
Tipo Base xs:string
Longitud 20
Espacio en Blanco Colapsar
Patrón [0-9]{20}
Certificado
Descripción Atributo requerido que sirve para incorporar el certificado de sello digital que
ampara al comprobante, como texto en formato base 64.
Uso requerido
Tipo Base xs:string
Espacio en Blanco Colapsar
CondicionesDePago
Descripción Atributo condicional para expresar las condiciones comerciales aplicables
para el pago del comprobante fiscal digital por Internet. Este atributo puede
ser condicionado mediante atributos o complementos.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 1000
Espacio en Blanco Colapsar
Patrón [^|]{1,1000}
SubTotal
Descripción Atributo requerido para representar la suma de los importes de los conceptos
antes de descuentos e impuesto. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Descuento
Descripción Atributo condicional para representar el importe total de los descuentos
aplicables antes de impuestos. No se permiten valores negativos. Se debe
registrar cuando existan conceptos con descuento.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Moneda
Descripción Atributo requerido para identificar la clave de la moneda utilizada para
expresar los montos, cuando se usa moneda nacional se registra MXN.
Conforme con la especificación ISO 4217.
Uso requerido
Tipo Especial catCFDI:c_Moneda
TipoCambio
Descripción Atributo condicional para representar el tipo de cambio FIX conforme con la
moneda usada. Es requerido cuando la clave de moneda es distinta de MXN
y de XXX. El valor debe reflejar el número de pesos mexicanos que equivalen
a una unidad de la divisa señalada en el atributo moneda. Si el valor está
fuera del porcentaje aplicable a la moneda tomado del catálogo c_Moneda, el
emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no
automática, una clave de confirmación para ratificar que el valor es correcto
e integrar dicha clave en el atributo Confirmacion.
Uso opcional
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000001
Posiciones Decimales 6
Espacio en Blanco Colapsar
Total
Descripción Atributo requerido para representar la suma del subtotal, menos los
descuentos aplicables, más las contribuciones recibidas (impuestos
trasladados - federales y/o locales, derechos, productos, aprovechamientos,
aportaciones de seguridad social, contribuciones de mejoras) menos los
impuestos retenidos federales y/o locales. Si el valor es superior al límite que
establezca el SAT en la Resolución Miscelánea Fiscal vigente, el emisor debe
obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una
clave de confirmación para ratificar que el valor es correcto e integrar dicha
clave en el atributo Confirmacion. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
TipoDeComprobante
Descripción Atributo requerido para expresar la clave del efecto del comprobante fiscal
para el contribuyente emisor.
Uso requerido
Tipo Especial catCFDI:c_TipoDeComprobante
Exportacion
Descripción Atributo requerido para expresar si el comprobante ampara una operación de
exportación.
Uso requerido
Tipo Especial catCFDI:c_Exportacion
MetodoPago
Descripción Atributo condicional para precisar la clave del método de pago que aplica para
este comprobante fiscal digital por Internet, conforme al Artículo 29-A fracción
VII incisos a y b del CFF.
Uso opcional
Tipo Especial catCFDI:c_MetodoPago
LugarExpedicion
Descripción Atributo requerido para incorporar el código postal del lugar de expedición del
comprobante (domicilio de la matriz o de la sucursal).
Uso requerido
Tipo Especial catCFDI:c_CodigoPostal
Confirmacion
Descripción Atributo condicional para registrar la clave de confirmación que entregue el
PAC para expedir el comprobante con importes grandes, con un tipo de
cambio fuera del rango establecido o con ambos casos. Es requerido cuando
se registra un tipo de cambio o un total fuera del rango establecido.
Uso opcional
Tipo Base xs:string
Longitud 5
Espacio en Blanco Colapsar
Patrón [0-9a-zA-Z]{5}
Descripción
Nodo condicional para precisar la información relacionada con el comprobante global.
Atributos
Periodicidad
Descripción Atributo requerido para expresar el período al que corresponde la información
del comprobante global.
Uso requerido
Tipo Especial catCFDI:c_Periodicidad
Meses
Descripción Atributo requerido para expresar el mes o los meses al que corresponde la
información del comprobante global.
Uso requerido
Tipo Especial catCFDI:c_Meses
Año
Descripción Atributo requerido para expresar el año al que corresponde la información del
comprobante global.
Uso requerido
Tipo Base xs:short
Valor Mínimo Incluyente 2021
Espacio en Blanco Colapsar
Elemento: CfdiRelacionados
Diagrama
Descripción
Nodo opcional para precisar la información de los comprobantes relacionados.
Atributos
TipoRelacion
Descripción Atributo requerido para indicar la clave de la relación que existe entre éste
que se está generando y el o los CFDI previos.
Uso requerido
Tipo Especial catCFDI:c_TipoRelacion
Descripción
Nodo requerido para precisar la información de los comprobantes relacionados.
Atributos
UUID
Descripción Atributo requerido para registrar el folio fiscal (UUID) de un CFDI relacionado
con el presente comprobante, por ejemplo: Si el CFDI relacionado es un
comprobante de traslado que sirve para registrar el movimiento de la
mercancía. Si este comprobante se usa como nota de crédito o nota de débito
del comprobante relacionado. Si este comprobante es una devolución sobre
el comprobante relacionado. Si éste sustituye a una factura cancelada.
Uso requerido
Tipo Base xs:string
Longitud 36
Espacio en Blanco Colapsar
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Elemento: Emisor
Diagrama
Descripción
Nodo requerido para expresar la información del contribuyente emisor del comprobante.
Atributos
Rfc
Descripción Atributo requerido para registrar la Clave del Registro Federal de
Contribuyentes correspondiente al contribuyente emisor del comprobante.
Uso requerido
Tipo Especial tdCFDI:t_RFC
Nombre
Descripción Atributo requerido para registrar el nombre, denominación o razón social del
contribuyente inscrito en el RFC, del emisor del comprobante.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 254
Espacio en Blanco Colapsar
Patrón [^|]{1,254}
RegimenFiscal
Descripción Atributo requerido para incorporar la clave del régimen del contribuyente
emisor al que aplicará el efecto fiscal de este comprobante.
Uso requerido
Tipo Especial catCFDI:c_RegimenFiscal
FacAtrAdquirente
Descripción Atributo condicional para expresar el número de operación proporcionado por
el SAT cuando se trate de un comprobante a través de un PCECFDI o un
PCGCFDISP.
Uso opcional
Tipo Base xs:string
Longitud 10
Espacio en Blanco Colapsar
Patrón [0-9]{10}
Elemento: Receptor
Diagrama
Descripción
Nodo requerido para precisar la información del contribuyente receptor del comprobante.
Atributos
Rfc
Descripción Atributo requerido para registrar la Clave del Registro Federal de
Contribuyentes correspondiente al contribuyente receptor del comprobante.
Uso requerido
Tipo Especial tdCFDI:t_RFC
Nombre
Descripción Atributo requerido para registrar el nombre(s), primer apellido, segundo
apellido, según corresponda, denominación o razón social del contribuyente,
inscrito en el RFC, del receptor del comprobante.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 254
Espacio en Blanco Colapsar
Patrón [^|]{1,254}
DomicilioFiscalReceptor
Descripción Atributo requerido para registrar el código postal del domicilio fiscal del
receptor del comprobante.
Uso requerido
Tipo Base xs:string
Longitud 5
Espacio en Blanco Colapsar
Patrón [0-9]{5}
ResidenciaFiscal
Descripción Atributo condicional para registrar la clave del país de residencia para efectos
fiscales del receptor del comprobante, cuando se trate de un extranjero, y que
es conforme con la especificación ISO 3166-1 alpha-3. Es requerido cuando
se incluya el complemento de comercio exterior o se registre el atributo
NumRegIdTrib.
Uso opcional
Tipo Especial catCFDI:c_Pais
NumRegIdTrib
Descripción Atributo condicional para expresar el número de registro de identidad fiscal
del receptor cuando sea residente en el extranjero. Es requerido cuando se
incluya el complemento de comercio exterior.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 40
Espacio en Blanco Colapsar
RegimenFiscalReceptor
Descripción Atributo requerido para incorporar la clave del régimen fiscal del contribuyente
receptor al que aplicará el efecto fiscal de este comprobante.
Uso requerido
Tipo Especial catCFDI:c_RegimenFiscal
UsoCFDI
Descripción Atributo requerido para expresar la clave del uso que dará a esta factura el
receptor del CFDI.
Uso requerido
Tipo Especial catCFDI:c_UsoCFDI
Elemento: Conceptos
Diagrama
Descripción
Nodo requerido para listar los conceptos cubiertos por el comprobante.
Atributos
ClaveProdServ
Descripción Atributo requerido para expresar la clave del producto o del servicio amparado
por el presente concepto. Es requerido y deben utilizar las claves del catálogo
de productos y servicios, cuando los conceptos que registren por sus
actividades correspondan con dichos conceptos.
Uso requerido
Tipo Especial catCFDI:c_ClaveProdServ
NoIdentificacion
Descripción Atributo opcional para expresar el número de parte, identificador del producto
o del servicio, la clave de producto o servicio, SKU o equivalente, propia de
la operación del emisor, amparado por el presente concepto. Opcionalmente
se puede utilizar claves del estándar GTIN.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 100
Espacio en Blanco Colapsar
Patrón [^|]{1,100}
Cantidad
Descripción Atributo requerido para precisar la cantidad de bienes o servicios del tipo
particular definido por el presente concepto.
Uso requerido
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000001
Posiciones Decimales 6
Espacio en Blanco Colapsar
ClaveUnidad
Descripción Atributo requerido para precisar la clave de unidad de medida estandarizada
aplicable para la cantidad expresada en el concepto. La unidad debe
corresponder con la descripción del concepto.
Uso requerido
Tipo Especial catCFDI:c_ClaveUnidad
Unidad
Descripción Atributo opcional para precisar la unidad de medida propia de la operación
del emisor, aplicable para la cantidad expresada en el concepto. La unidad
debe corresponder con la descripción del concepto.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 20
Espacio en Blanco Colapsar
Patrón [^|]{1,20}
Descripcion
Descripción Atributo requerido para precisar la descripción del bien o servicio cubierto por
el presente concepto.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 1000
Espacio en Blanco Colapsar
Patrón [^|]{1,1000}
ValorUnitario
Descripción Atributo requerido para precisar el valor o precio unitario del bien o servicio
cubierto por el presente concepto.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Importe
Descripción Atributo requerido para precisar el importe total de los bienes o servicios del
presente concepto. Debe ser equivalente al resultado de multiplicar la
cantidad por el valor unitario expresado en el concepto. No se permiten
valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Descuento
Descripción Atributo opcional para representar el importe de los descuentos aplicables al
concepto. No se permiten valores negativos.
Uso opcional
Tipo Especial tdCFDI:t_Importe
ObjetoImp
Descripción Atributo requerido para expresar si la operación comercial es objeto o no de
impuesto.
Uso requerido
Tipo Especial catCFDI:c_ObjetoImp
Descripción
Nodo condicional para capturar los impuestos aplicables al presente concepto.
Descripción
Nodo opcional para asentar los impuestos trasladados aplicables al presente concepto.
Atributos
Base
Descripción Atributo requerido para señalar la base para el cálculo del impuesto, la
determinación de la base se realiza de acuerdo con las disposiciones fiscales
vigentes. No se permiten valores negativos.
Uso requerido
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000001
Posiciones Decimales 6
Espacio en Blanco Colapsar
Impuesto
Descripción Atributo requerido para señalar la clave del tipo de impuesto trasladado
aplicable al concepto.
Uso requerido
Tipo Especial catCFDI:c_Impuesto
TipoFactor
Descripción Atributo requerido para señalar la clave del tipo de factor que se aplica a la
base del impuesto.
Uso requerido
Tipo Especial catCFDI:c_TipoFactor
TasaOCuota
Descripción Atributo condicional para señalar el valor de la tasa o cuota del impuesto que
se traslada para el presente concepto. Es requerido cuando el atributo
TipoFactor tenga una clave que corresponda a Tasa o Cuota.
Uso opcional
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000000
Posiciones Decimales 6
Espacio en Blanco Colapsar
Importe
Descripción Atributo condicional para señalar el importe del impuesto trasladado que
aplica al concepto. No se permiten valores negativos. Es requerido cuando
TipoFactor sea Tasa o Cuota.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Elemento: Retenciones
Diagrama
Descripción
Nodo opcional para asentar los impuestos retenidos aplicables al presente concepto.
Atributos
Base
Descripción Atributo requerido para señalar la base para el cálculo de la retención, la
determinación de la base se realiza de acuerdo con las disposiciones fiscales
vigentes. No se permiten valores negativos.
Uso requerido
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000001
Posiciones Decimales 6
Espacio en Blanco Colapsar
Impuesto
Descripción Atributo requerido para señalar la clave del tipo de impuesto retenido aplicable
al concepto.
Uso requerido
Tipo Especial catCFDI:c_Impuesto
TipoFactor
Descripción Atributo requerido para señalar la clave del tipo de factor que se aplica a la
base del impuesto.
Uso requerido
Tipo Especial catCFDI:c_TipoFactor
TasaOCuota
Descripción Atributo requerido para señalar la tasa o cuota del impuesto que se retiene
para el presente concepto.
Uso requerido
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000000
Posiciones Decimales 6
Espacio en Blanco Colapsar
Importe
Descripción Atributo requerido para señalar el importe del impuesto retenido que aplica al
concepto. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Elemento: ACuentaTerceros
Diagrama
Descripción
Nodo opcional para registrar información del contribuyente Tercero, a cuenta del que se realiza la operación.
Atributos
RfcACuentaTerceros
Descripción Atributo requerido para registrar la Clave del Registro Federal de
Contribuyentes del contribuyente Tercero, a cuenta del que se realiza la
operación.
Uso requerido
Tipo Especial tdCFDI:t_RFC
NombreACuentaTerceros
Descripción Atributo requerido para registrar el nombre, denominación o razón social del
contribuyente Tercero correspondiente con el Rfc, a cuenta del que se realiza
la operación.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 254
Espacio en Blanco Colapsar
Patrón [^|]{1,254}
RegimenFiscalACuentaTerceros
Descripción Atributo requerido para incorporar la clave del régimen del contribuyente
Tercero, a cuenta del que se realiza la operación.
Uso requerido
Tipo Especial catCFDI:c_RegimenFiscal
DomicilioFiscalACuentaTerceros
Descripción Atributo requerido para incorporar el código postal del domicilio fiscal del
Tercero, a cuenta del que se realiza la operación.
Uso requerido
Tipo Base xs:string
Longitud 5
Espacio en Blanco Colapsar
Patrón [0-9]{5}
Elemento: InformacionAduanera
Diagrama
Descripción
Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de
mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
Atributos
NumeroPedimento
Descripción Atributo requerido para expresar el número del pedimento que ampara la
importación del bien que se expresa en el siguiente formato: últimos 2 dígitos
del año de validación seguidos por dos espacios, 2 dígitos de la aduana de
despacho seguidos por dos espacios, 4 dígitos del número de la patente
seguidos por dos espacios, 1 dígito que corresponde al último dígito del año
en curso, salvo que se trate de un pedimento consolidado iniciado en el año
inmediato anterior o del pedimento original de una rectificación, seguido de 6
dígitos de la numeración progresiva por aduana.
Uso requerido
Tipo Base xs:string
Longitud 21
Patrón [0-9]{2} [0-9]{2} [0-9]{4} [0-9]{7}
Elemento: CuentaPredial
Diagrama
Descripción
Nodo opcional para asentar el número de cuenta predial con el que fue registrado el inmueble, en el sistema
catastral de la entidad federativa de que trate, o bien para incorporar los datos de identificación del certificado
de participación inmobiliaria no amortizable.
Atributos
Numero
Descripción Atributo requerido para precisar el número de la cuenta predial del inmueble
cubierto por el presente concepto, o bien para incorporar los datos de
identificación del certificado de participación inmobiliaria no amortizable,
tratándose de arrendamiento.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 150
Espacio en Blanco Colapsar
Patrón [0-9a-zA-Z]{1,150}
Elemento: ComplementoConcepto
Diagrama
Descripción
Nodo opcional donde se incluyen los nodos complementarios de extensión al concepto definidos por el SAT,
de acuerdo con las disposiciones particulares para un sector o actividad específica.
Atributos
ClaveProdServ
Descripción Atributo requerido para expresar la clave del producto o del servicio amparado
por la presente parte. Es requerido y deben utilizar las claves del catálogo de
productos y servicios, cuando los conceptos que registren por sus actividades
correspondan con dichos conceptos.
Uso requerido
Tipo Especial catCFDI:c_ClaveProdServ
NoIdentificacion
Descripción Atributo opcional para expresar el número de serie, número de parte del bien
o identificador del producto o del servicio amparado por la presente parte.
Opcionalmente se puede utilizar claves del estándar GTIN.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 100
Espacio en Blanco Colapsar
Patrón [^|]{1,100}
Cantidad
Descripción Atributo requerido para precisar la cantidad de bienes o servicios del tipo
particular definido por la presente parte.
Uso requerido
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000001
Posiciones Decimales 6
Espacio en Blanco Colapsar
Unidad
Descripción Atributo opcional para precisar la unidad de medida propia de la operación
del emisor, aplicable para la cantidad expresada en la parte. La unidad debe
corresponder con la descripción de la parte.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 20
Espacio en Blanco Colapsar
Patrón [^|]{1,20}
Descripcion
Descripción Atributo requerido para precisar la descripción del bien o servicio cubierto por
la presente parte.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 1000
Espacio en Blanco Colapsar
Patrón [^|]{1,1000}
ValorUnitario
Descripción Atributo opcional para precisar el valor o precio unitario del bien o servicio
cubierto por la presente parte. No se permiten valores negativos.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Importe
Descripción Atributo opcional para precisar el importe total de los bienes o servicios de la
presente parte. Debe ser equivalente al resultado de multiplicar la cantidad
por el valor unitario expresado en la parte. No se permiten valores negativos.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Descripción
Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de primera mano de
mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.
Atributos
NumeroPedimento
Descripción Atributo requerido para expresar el número del pedimento que ampara la
importación del bien que se expresa en el siguiente formato: últimos 2 dígitos
del año de validación seguidos por dos espacios, 2 dígitos de la aduana de
despacho seguidos por dos espacios, 4 dígitos del número de la patente
seguidos por dos espacios, 1 dígito que corresponde al último dígito del año
en curso, salvo que se trate de un pedimento consolidado iniciado en el año
inmediato anterior o del pedimento original de una rectificación, seguido de 6
dígitos de la numeración progresiva por aduana.
Uso requerido
Tipo Base xs:string
Longitud 21
Patrón [0-9]{2} [0-9]{2} [0-9]{4} [0-9]{7}
Elemento: Impuestos
Diagrama
Descripción
Nodo condicional para expresar el resumen de los impuestos aplicables.
Atributos
TotalImpuestosRetenidos
Descripción Atributo condicional para expresar el total de los impuestos retenidos que se
desprenden de los conceptos expresados en el comprobante fiscal digital por
Internet. No se permiten valores negativos. Es requerido cuando en los
conceptos se registren impuestos retenidos.
Uso opcional
Tipo Especial tdCFDI:t_Importe
TotalImpuestosTrasladados
Descripción Atributo condicional para expresar el total de los impuestos trasladados que
se desprenden de los conceptos expresados en el comprobante fiscal digital
por Internet. No se permiten valores negativos. Es requerido cuando en los
conceptos se registren impuestos trasladados.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Descripción
Nodo condicional para capturar los impuestos retenidos aplicables. Es requerido cuando en los conceptos se
registre algún impuesto retenido.
Descripción
Nodo requerido para la información detallada de una retención de impuesto específico.
Atributos
Impuesto
Descripción Atributo requerido para señalar la clave del tipo de impuesto retenido.
Uso requerido
Tipo Especial catCFDI:c_Impuesto
Importe
Descripción Atributo requerido para señalar el monto del impuesto retenido. No se
permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Elemento: Traslados
Diagrama
Descripción
Nodo condicional para capturar los impuestos trasladados aplicables. Es requerido cuando en los conceptos
se registre un impuesto trasladado.
Atributos
Base
Descripción Atributo requerido para señalar la suma de los atributos Base de los
conceptos del impuesto trasladado. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_Importe
Impuesto
Descripción Atributo requerido para señalar la clave del tipo de impuesto trasladado.
Uso requerido
Tipo Especial catCFDI:c_Impuesto
TipoFactor
Descripción Atributo requerido para señalar la clave del tipo de factor que se aplica a la
base del impuesto.
Uso requerido
Tipo Especial catCFDI:c_TipoFactor
TasaOCuota
Descripción Atributo condicional para señalar el valor de la tasa o cuota del impuesto que
se traslada por los conceptos amparados en el comprobante.
Uso opcional
Tipo Base xs:decimal
Valor Mínimo Incluyente 0.000000
Posiciones Decimales 6
Espacio en Blanco Colapsar
Importe
Descripción Atributo condicional para señalar la suma del importe del impuesto trasladado,
agrupado por impuesto, TipoFactor y TasaOCuota. No se permiten valores
negativos.
Uso opcional
Tipo Especial tdCFDI:t_Importe
Elemento: Complemento
Diagrama
Descripción
Nodo opcional donde se incluye el complemento Timbre Fiscal Digital de manera obligatoria y los nodos
complementarios determinados por el SAT, de acuerdo con las disposiciones particulares para un sector o
actividad específica.
Descripción
Nodo opcional para recibir las extensiones al presente formato que sean de utilidad al contribuyente. Para las
reglas de uso del mismo, referirse al formato origen.
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:cfdi="http://www.sat.gob.mx/cfd/4" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:catCFDI="http://www.sat.gob.mx/sitio_internet/cfd/catalogos"
xmlns:tdCFDI="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI" targetNamespace="http://www.sat.gob.mx/cfd/4"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/catalogos"
schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/catalogos/catCFDI.xsd"/>
<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI"
schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI/tdCFDI.xsd"/>
<xs:element name="Comprobante">
<xs:annotation>
<xs:documentation>Estándar de Comprobante Fiscal Digital por Internet.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="InformacionGlobal" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo condicional para precisar la información relacionada con el comprobante
global.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Periodicidad" type="catCFDI:c_Periodicidad" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el período al que corresponde la información del comprobante
global.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Meses" type="catCFDI:c_Meses" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el mes o los meses al que corresponde la información del
comprobante global.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Año" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el año al que corresponde la información del comprobante
global.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:short">
<xs:minInclusive value="2021"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="CfdiRelacionados" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para precisar la información de los comprobantes relacionados.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CfdiRelacionado" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para precisar la información de los comprobantes
relacionados.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="UUID" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el folio fiscal (UUID) de un CFDI relacionado con el presente
comprobante, por ejemplo: Si el CFDI relacionado es un comprobante de traslado que sirve para registrar el movimiento de la
mercancía. Si este comprobante se usa como nota de crédito o nota de débito del comprobante relacionado. Si este comprobante es
una devolución sobre el comprobante relacionado. Si éste sustituye a una factura cancelada.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="36"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TipoRelacion" type="catCFDI:c_TipoRelacion" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para indicar la clave de la relación que existe entre éste que se está generando y
el o los CFDI previos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Emisor">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar la información del contribuyente emisor del
comprobante.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Rfc" type="tdCFDI:t_RFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar la Clave del Registro Federal de Contribuyentes correspondiente al
contribuyente emisor del comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Nombre" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el nombre, denominación o razón social del contribuyente inscrito en
el RFC, del emisor del comprobante.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="254"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,254}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RegimenFiscal" type="catCFDI:c_RegimenFiscal" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar la clave del régimen del contribuyente emisor al que aplicará el
efecto fiscal de este comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="FacAtrAdquirente" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el número de operación proporcionado por el SAT cuando se trate
de un comprobante a través de un PCECFDI o un PCGCFDISP.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="10"/>
<xs:pattern value="[0-9]{10}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Receptor">
<xs:annotation>
<xs:documentation>Nodo requerido para precisar la información del contribuyente receptor del
comprobante.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Rfc" type="tdCFDI:t_RFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar la Clave del Registro Federal de Contribuyentes correspondiente al
contribuyente receptor del comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Nombre" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el nombre(s), primer apellido, segundo apellido, según corresponda,
denominación o razón social del contribuyente, inscrito en el RFC, del receptor del comprobante.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="254"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,254}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="DomicilioFiscalReceptor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el código postal del domicilio fiscal del receptor del
comprobante.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{5}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ResidenciaFiscal" type="catCFDI:c_Pais" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para registrar la clave del país de residencia para efectos fiscales del receptor
del comprobante, cuando se trate de un extranjero, y que es conforme con la especificación ISO 3166-1 alpha-3. Es requerido cuando
se incluya el complemento de comercio exterior o se registre el atributo NumRegIdTrib.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NumRegIdTrib" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el número de registro de identidad fiscal del receptor cuando sea
residente en el extranjero. Es requerido cuando se incluya el complemento de comercio exterior.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RegimenFiscalReceptor" type="catCFDI:c_RegimenFiscal" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar la clave del régimen fiscal del contribuyente receptor al que
aplicará el efecto fiscal de este comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UsoCFDI" type="catCFDI:c_UsoCFDI" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave del uso que dará a esta factura el receptor del
CFDI.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Conceptos">
<xs:annotation>
<xs:documentation>Nodo requerido para listar los conceptos cubiertos por el comprobante.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Concepto" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para registrar la información detallada de un bien o servicio amparado en el
comprobante.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Impuestos" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo condicional para capturar los impuestos aplicables al presente
concepto.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Traslados" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para asentar los impuestos trasladados aplicables al presente
concepto.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Traslado" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para asentar la información detallada de un traslado de impuestos
aplicable al presente concepto.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Base" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la base para el cálculo del impuesto, la
determinación de la base se realiza de acuerdo con las disposiciones fiscales vigentes. No se permiten valores
negativos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000001"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Impuesto" type="catCFDI:c_Impuesto" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de impuesto trasladado
aplicable al concepto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TipoFactor" type="catCFDI:c_TipoFactor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de factor que se aplica a la
base del impuesto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TasaOCuota" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para señalar el valor de la tasa o cuota del impuesto que
se traslada para el presente concepto. Es requerido cuando el atributo TipoFactor tenga una clave que corresponda a Tasa o
Cuota.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000000"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para señalar el importe del impuesto trasladado que
aplica al concepto. No se permiten valores negativos. Es requerido cuando TipoFactor sea Tasa o Cuota.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Retenciones" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para asentar los impuestos retenidos aplicables al presente
concepto.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Retencion" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para asentar la información detallada de una retención de
impuestos aplicable al presente concepto.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Base" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la base para el cálculo de la retención, la determinación de la base se realiza de
acuerdo con las disposiciones fiscales vigentes. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000001"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Impuesto" type="catCFDI:c_Impuesto" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de impuesto retenido aplicable
al concepto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TipoFactor" type="catCFDI:c_TipoFactor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de factor que se aplica a la
base del impuesto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TasaOCuota" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la tasa o cuota del impuesto que se retiene
para el presente concepto.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:whiteSpace value="collapse"/>
<xs:minInclusive value="0.000000"/>
<xs:fractionDigits value="6"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar el importe del impuesto retenido que aplica al
concepto. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ACuentaTerceros" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para registrar información del contribuyente Tercero, a cuenta del que se
realiza la operación.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="RfcACuentaTerceros" type="tdCFDI:t_RFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar la Clave del Registro Federal de Contribuyentes del
contribuyente Tercero, a cuenta del que se realiza la operación.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NombreACuentaTerceros" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el nombre, denominación o razón social del
contribuyente Tercero correspondiente con el Rfc, a cuenta del que se realiza la operación.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="254"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,254}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RegimenFiscalACuentaTerceros" type="catCFDI:c_RegimenFiscal" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar la clave del régimen del contribuyente Tercero, a
cuenta del que se realiza la operación.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DomicilioFiscalACuentaTerceros" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar el código postal del domicilio fiscal del Tercero, a
cuenta del que se realiza la operación.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{5}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="InformacionAduanera" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para introducir la información aduanera aplicable cuando se trate de ventas de
primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o servicios.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="NumeroPedimento" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número del pedimento que ampara la importación del
bien que se expresa en el siguiente formato: últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos de la aduana
de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que corresponde al
último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del pedimento
original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="21"/>
<xs:pattern value="[0-9]{2} [0-9]{2} [0-9]{4} [0-9]{7}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="CuentaPredial" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para asentar el número de cuenta predial con el que fue registrado el
inmueble, en el sistema catastral de la entidad federativa de que trate, o bien para incorporar los datos de identificación del certificado
de participación inmobiliaria no amortizable.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Numero" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar el número de la cuenta predial del inmueble cubierto por
el presente concepto, o bien para incorporar los datos de identificación del certificado de participación inmobiliaria no amortizable,
tratándose de arrendamiento.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="150"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9a-zA-Z]{1,150}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="ComplementoConcepto" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional donde se incluyen los nodos complementarios de extensión al concepto
definidos por el SAT, de acuerdo con las disposiciones particulares para un sector o actividad específica.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Parte" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para expresar las partes o componentes que integran la totalidad del concepto
expresado en el comprobante fiscal digital por Internet.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="InformacionAduanera" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para introducir la información aduanera aplicable cuando se trate de
ventas de primera mano de mercancías importadas o se trate de operaciones de comercio exterior con bienes o
servicios.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="NumeroPedimento" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número del pedimento que ampara la
importación del bien que se expresa en el siguiente formato: últimos 2 dígitos del año de validación seguidos por dos espacios, 2 dígitos
de la aduana de despacho seguidos por dos espacios, 4 dígitos del número de la patente seguidos por dos espacios, 1 dígito que
corresponde al último dígito del año en curso, salvo que se trate de un pedimento consolidado iniciado en el año inmediato anterior o del
pedimento original de una rectificación, seguido de 6 dígitos de la numeración progresiva por aduana.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="21"/>
<xs:pattern value="[0-9]{2} [0-9]{2} [0-9]{4} [0-9]{7}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ClaveProdServ" type="catCFDI:c_ClaveProdServ" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave del producto o del servicio amparado por la presente parte. Es requerido y
deben utilizar las claves del catálogo de productos y servicios, cuando los conceptos que registren por sus actividades correspondan
con dichos conceptos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NoIdentificacion" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para expresar el número de serie, número de parte del bien o
identificador del producto o del servicio amparado por la presente parte. Opcionalmente se puede utilizar claves del estándar
GTIN.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="100"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,100}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Cantidad" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular
definido por la presente parte.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000001"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Unidad" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para precisar la unidad de medida propia de la operación del emisor,
aplicable para la cantidad expresada en la parte. La unidad debe corresponder con la descripción de la parte. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Descripcion" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la descripción del bien o servicio cubierto por la presente
parte.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,1000}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ValorUnitario" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para precisar el valor o precio unitario del bien o servicio cubierto por la
presente parte. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para precisar el importe total de los bienes o servicios de la presente
parte. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario expresado en la parte. No se permiten valores
negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="ClaveProdServ" type="catCFDI:c_ClaveProdServ" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave del producto o del servicio amparado por el presente
concepto. Es requerido y deben utilizar las claves del catálogo de productos y servicios, cuando los conceptos que registren por sus
actividades correspondan con dichos conceptos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NoIdentificacion" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para expresar el número de parte, identificador del producto o del servicio, la
clave de producto o servicio, SKU o equivalente, propia de la operación del emisor, amparado por el presente concepto. Opcionalmente
se puede utilizar claves del estándar GTIN.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:minLength value="1"/>
<xs:maxLength value="100"/>
<xs:pattern value="[^|]{1,100}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Cantidad" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la cantidad de bienes o servicios del tipo particular definido por
el presente concepto.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000001"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ClaveUnidad" type="catCFDI:c_ClaveUnidad" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la clave de unidad de medida estandarizada aplicable para la
cantidad expresada en el concepto. La unidad debe corresponder con la descripción del concepto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Unidad" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para precisar la unidad de medida propia de la operación del emisor, aplicable
para la cantidad expresada en el concepto. La unidad debe corresponder con la descripción del concepto.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Descripcion" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la descripción del bien o servicio cubierto por el presente
concepto.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,1000}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ValorUnitario" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar el valor o precio unitario del bien o servicio cubierto por el
presente concepto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar el importe total de los bienes o servicios del presente
concepto. Debe ser equivalente al resultado de multiplicar la cantidad por el valor unitario expresado en el concepto. No se permiten
valores negativos. </xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Descuento" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para representar el importe de los descuentos aplicables al concepto. No se
permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ObjetoImp" type="catCFDI:c_ObjetoImp" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar si la operación comercial es objeto o no de
impuesto.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Impuestos" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo condicional para expresar el resumen de los impuestos aplicables.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Retenciones" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo condicional para capturar los impuestos retenidos aplicables. Es requerido cuando en los
conceptos se registre algún impuesto retenido.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Retencion" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para la información detallada de una retención de impuesto
específico.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Impuesto" type="catCFDI:c_Impuesto" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de impuesto
retenido.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar el monto del impuesto retenido. No se permiten valores
negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Traslados" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo condicional para capturar los impuestos trasladados aplicables. Es requerido cuando en los
conceptos se registre un impuesto trasladado.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="Traslado" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo requerido para la información detallada de un traslado de impuesto
específico.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Base" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la suma de los atributos Base de los conceptos del
impuesto trasladado. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Impuesto" type="catCFDI:c_Impuesto" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de impuesto
trasladado.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TipoFactor" type="catCFDI:c_TipoFactor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para señalar la clave del tipo de factor que se aplica a la base del
impuesto.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TasaOCuota" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para señalar el valor de la tasa o cuota del impuesto que se traslada
por los conceptos amparados en el comprobante.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:whiteSpace value="collapse"/>
<xs:minInclusive value="0.000000"/>
<xs:fractionDigits value="6"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Importe" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para señalar la suma del importe del impuesto trasladado, agrupado
por impuesto, TipoFactor y TasaOCuota. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="TotalImpuestosRetenidos" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el total de los impuestos retenidos que se desprenden de los
conceptos expresados en el comprobante fiscal digital por Internet. No se permiten valores negativos. Es requerido cuando en los
conceptos se registren impuestos retenidos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TotalImpuestosTrasladados" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el total de los impuestos trasladados que se desprenden de los
conceptos expresados en el comprobante fiscal digital por Internet. No se permiten valores negativos. Es requerido cuando en los
conceptos se registren impuestos trasladados.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Complemento" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional donde se incluye el complemento Timbre Fiscal Digital de manera obligatoria y los nodos
complementarios determinados por el SAT, de acuerdo con las disposiciones particulares para un sector o actividad
específica.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Addenda" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para recibir las extensiones al presente formato que sean de utilidad al contribuyente.
Para las reglas de uso del mismo, referirse al formato origen.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" use="required" fixed="4.0">
<xs:annotation>
<xs:documentation>Atributo requerido con valor prefijado a 4.0 que indica la versión del estándar bajo el que se encuentra
expresado el comprobante.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Serie" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para precisar la serie para control interno del contribuyente. Este atributo acepta una
cadena de caracteres.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="25"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,25}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Folio" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para control interno del contribuyente que expresa el folio del comprobante, acepta una
cadena de caracteres.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[^|]{1,40}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Fecha" type="tdCFDI:t_FechaH" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para la expresión de la fecha y hora de expedición del Comprobante Fiscal Digital por
Internet. Se expresa en la forma AAAA-MM-DDThh:mm:ss y debe corresponder con la hora local donde se expide el
comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Sello" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para contener el sello digital del comprobante fiscal, al que hacen referencia las reglas
de resolución miscelánea vigente. El sello debe ser expresado como una cadena de texto en formato Base 64.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="FormaPago" type="catCFDI:c_FormaPago" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar la clave de la forma de pago de los bienes o servicios amparados por el
comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NoCertificado" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número de serie del certificado de sello digital que ampara al
comprobante, de acuerdo con el acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="20"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Certificado" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que sirve para incorporar el certificado de sello digital que ampara al comprobante,
como texto en formato base 64.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CondicionesDePago" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar las condiciones comerciales aplicables para el pago del comprobante
fiscal digital por Internet. Este atributo puede ser condicionado mediante atributos o complementos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:minLength value="1"/>
<xs:maxLength value="1000"/>
<xs:pattern value="[^|]{1,1000}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="SubTotal" type="tdCFDI:t_Importe" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para representar la suma de los importes de los conceptos antes de descuentos e
impuesto. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Descuento" type="tdCFDI:t_Importe" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para representar el importe total de los descuentos aplicables antes de impuestos. No
se permiten valores negativos. Se debe registrar cuando existan conceptos con descuento.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Moneda" type="catCFDI:c_Moneda" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para identificar la clave de la moneda utilizada para expresar los montos, cuando se usa
moneda nacional se registra MXN. Conforme con la especificación ISO 4217.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TipoCambio" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para representar el tipo de cambio FIX conforme con la moneda usada. Es requerido
cuando la clave de moneda es distinta de MXN y de XXX. El valor debe reflejar el número de pesos mexicanos que equivalen a una
unidad de la divisa señalada en el atributo moneda. Si el valor está fuera del porcentaje aplicable a la moneda tomado del catálogo
c_Moneda, el emisor debe obtener del PAC que vaya a timbrar el CFDI, de manera no automática, una clave de confirmación para
ratificar que el valor es correcto e integrar dicha clave en el atributo Confirmacion.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="6"/>
<xs:minInclusive value="0.000001"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
11. El nodo Timbre Fiscal Digital del SAT se integra posterior a la validación realizada por un
proveedor autorizado por el SAT que forma parte de la Certificación Digital del SAT. Dicho
nodo no se integra a la formación de la cadena original del CFDI, las reglas de conformación
de la cadena original del nodo se describen en el Rubro III.B. del presente anexo.
Secuencia de Formación:
La secuencia de formación siempre se registra en el orden que se expresa en el apartado
correspondiente a cada uno de los comprobantes fiscales, complementos y del timbre fiscal digital
del SAT, tomando en cuenta las reglas generales expresadas en el párrafo anterior.
II. Con la clave privada correspondiente al certificado digital del firmante del mensaje, encriptar
la digestión del mensaje obtenida en el paso I utilizando para ello el algoritmo de encripción
RSA.
Nota: La mayor parte del software comercial podría generar los pasos I y II invocando una
sola función y especificando una constante simbólica. En el SAT este procedimiento se
hace en pasos separados, lo cual es totalmente equivalente. Es importante resaltar que
prácticamente todo el software criptográfico comercial incluye APIs o expone métodos en
sus productos que permiten implementar la secuencia de algoritmos aquí descrita. La clave
privada sólo debe mantenerse en memoria durante la llamada a la función de encripción;
inmediatamente después de su uso debe ser eliminada de su registro de memoria mediante
la sobrescritura de secuencias binarias alternadas de "unos" y "ceros".
Y en el orden descrito les corresponden los índices del 0 al 63 en un arreglo de 64 elementos. Para
traducir de binario a Base 64, se examina la secuencia binaria evaluando 6 bits a la vez; si el valor
de los primeros 6 bits es 0, entonces se imprime la letra A; si es 1, entonces se imprime la letra B y
así sucesivamente hasta completar la evaluación de todos los bits de la secuencia binaria evaluados
de 6 en 6.
La función inversa consiste en reconstruir la secuencia binaria original a partir de la cadena
imprimible que consta de los elementos del alfabeto de Base 64. Para ello se toman 4 caracteres a
la vez de la cadena imprimible y sus valores son convertidos en los de los tres caracteres binarios
correspondientes (4 caracteres B64 x 6 bits = 3 caracteres binarios x 8 bits), y esta operación se
repite hasta concluir la traducción de la cadena imprimible.
Ejemplo de Sello digital generado con un certificado de 2048 bits:
AM0PWKyhvpj1Pf7AJVzAAGjaYU0t6r5hjk0DOj+wISCSdA2LZj7jmnBKivivgU8J5svcto9kABfNm246
HG2y8Q6YcQJmB6Dw2bUBoZfrPE54yP+S5MfPtCw5QhS948Pc91gJcLPrHmaRXINaEqq0mTGWr
4aWSAZxcb9Dql9KnvLcXt30KISnbc2+4m9RtpsTPLk2joKFGxf8eejGL69vO8txtmLqioInFDhTPWQc
IKMdUutUbREsSsQSfmOuoQdVBCCMY7SUK2ZtGDaCnshQSOVz/GHGfLQT4Qj0hetPtaDi60YP
M5Mf3cekonBHb4jc2+FuCJW+JKCsnI7sJ4+iYg==
C. Estándar del servicio de cancelación.
Para realizar la cancelación de un comprobante fiscal digital por internet se cuenta con un Servicio
Web autenticado al cual se debe conectar el usuario para hacer el envío por lotes de los
comprobantes (desde 1 hasta 500) por transacción. El cual es expuesto en la siguiente URL:
https://cancelacion.facturaelectronica.sat.gob.mx/Cancelacion/CancelaCFDService.svc
Para realizar la cancelación de un CFDI de retenciones se cuenta con un servicio web autenticado
al cual se debe conectar el usuario para hacer el envío de uno a uno de forma asíncrona y envío por
lotes de los comprobantes de 1 hasta 10,000 por transacción de forma asíncrona, el cual se expone
en la siguiente URL:
https://prodretencioncancelacion.cloudapp.net
Estos servicios pueden ser accedidos mediante el portal del SAT, o conectarse de manera síncrona
(bajo las mismas condiciones de seguridad) para realizar cancelaciones de manera automatizada.
El usuario debe enviar peticiones firmadas utilizando el Certificado de Sello Digital del emisor de los
CFDI, bajo el estándar XML Digital Signature establecido por el W3C (http://www.w3.org/TR/xmldsig-
core) identificando cada uno de los CFDI a cancelar por medio del identificador único incluido en el
Timbre Fiscal Digital.
Estructura
Elementos
Elemento: Cancelacion
Diagrama
Descripción
Elemento raíz para realizar una solicitud de cancelación de CFDI.
Atributos
RfcEmisor
Descripción Atributo requerido para expresar el RFC del emisor del (os) CFDI a cancelar.
Uso requerido
Tipo Especial xsd:string
Fecha
Descripción Atributo requerido para expresar la fecha de la operación.
Uso requerido
Tipo Especial xsd:dateTime
Descripción
Colección de folios fiscales (UUID) a ser cancelados.
Elemento: Folio
Diagrama
Descripción
Folio fiscal (UUID) a ser cancelado.
Atributos
UUID
Descripción UUID generado en la operación de timbrado del comprobante solicitado.
Uso requerido
Tipo Especial xsd:string
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Motivo
Descripción Clave del motivo de cancelación del comprobante.
Uso requerido
Tipo Especial xsd:string
Valores Permitidos 01
02
03
04
FolioSustitucion
Descripción Atributo condicional que representa al UUID que sustituye al folio fiscal
cancelado. Es requerido cuando la clave del motivo de cancelación es 01.
Uso opcional
Tipo Especial xsd:string
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Código Fuente
De esta manera se generan los datos válidos para realizar una consulta de un CFDI por medio
de su expresión impresa.
Ejemplo:
https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=5803EB8D-81CD-4557-8719-
26632D2FA434&re=VISM990101474&rr=XAXX010101000&tt=0000014300.000000&fe=rH8/bw==
El código de barras bidimensional debe ser impreso en un cuadrado con lados no menores a
2.75 centímetros. Ejemplo:
2.75cm
Elemento: Comprobante
Atributos:
Fecha
Validar Al momento de la recepción del archivo XML por parte del Proveedor de
Certificación, éste debe verificar que la fecha y hora no debe ser:
Mayor que la fecha y hora aumentada en el plazo que se
especifique en la Resolución Miscelánea Fiscal vigente -
Obligaciones de los proveedores en el proceso de certificación de
CFDI.
Menor que la fecha y hora disminuida en el plazo que se especifique
en la Resolución Miscelánea Fiscal vigente - Obligaciones de los
proveedores en el proceso de certificación de CFDI.
Sello
Validar Desencriptar el contenido de este atributo usando el certificado incluido en
el atributo "Certificado".
Generar la cadena original del comprobante.
Aplicar el algoritmo de digestión SHA-256.
El resultado de la digestión debe ser igual al resultado de la desencripción
del sello.
FormaPago
Validar Si el valor registrado en el atributo TipoDeComprobante es “T”, “N” o “P”
este atributo no debe existir.
En caso contrario este atributo debe existir y contener una clave vigente
del catálogo c_FormaPago.
El valor de este atributo debe ser “99” cuando el atributo MetodoPago
contenga el valor “PPD”.
Certificado
Validar El atributo debe contener un archivo .cer válido.
El número de certificado registrado en el archivo debe ser igual al
registrado en el atributo "NoCertificado".
El certificado debe ser emitido por el Servicio de Administración Tributaria.
El certificado debe estar vigente a la fecha y hora de expedición del
comprobante.
El certificado no debe estar revocado a la fecha y hora de expedición del
comprobante.
El RFC registrado en el certificado debe ser igual al registrado en el emisor
del CFDI. El RFC registrado en el certificado puede ser distinto del
registrado en el emisor del CFDI, sólo cuando el RFC del emisor se
encuentre en la lista de RFC inscritos no cancelados en el SAT y
El Proveedor de Certificación de CFDI es el SAT y cuando el XML
del CFDI contenga el complemento de Registro Fiscal Simplificado,
entonces el RFC en el certificado debe ser SAT970701NN3.
O la entidad que certifica es un Proveedor de Certificación y
Generación de CFDI para el sector primario o un Proveedor de
Certificación de expedición de CFDI a través del adquirente de
bienes o servicios, en cuyo caso el certificado será el CESD del
proveedor.
El certificado debe ser del tipo "Certificado de Sello Digital", excepto
cuando el Proveedor de Certificación de CFDI es un proveedor de
Certificación y Generación de CFDI para el sector primario o proveedor
certificación de expedición de CFDI a través del adquirente de bienes o
servicios, en cuyo caso el certificado es un CESD.
SubTotal
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
Cuando el TipoDeComprobante sea “I”, “E” o “N”, el importe registrado en
el atributo debe ser igual al redondeo de la suma de los importes de los
conceptos registrados.
Cuando el TipoDeComprobante sea “T” o “P” el importe registrado en el
atributo debe ser igual a cero.
Descuento
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
El valor registrado debe ser menor o igual que el atributo Subtotal.
Cuando el TipoDeComprobante sea “I”, “E” o “N” y algún concepto incluya
el atributo Descuento, debe existir este atributo y debe ser igual al
redondeo de la suma de los atributos Descuento registrados en los
conceptos; en otro caso se debe omitir este atributo.
Moneda
Validar Si es diferente de MXN y XXX, debe existir el tipo de cambio.
Si es XXX no debe existir el tipo de cambio, si es MXN puede omitirse el
atributo TipoCambio y si se incluye debe tener el valor "1".
Si el TipoDeComprobante es “N”, este atributo debe tener el valor MXN.
Tomar del catálogo c_Moneda la cantidad de decimales que acepta la
divisa y los atributos con tipo de dato importe deben ser redondeados hasta
esa cantidad de decimales (cero y hasta cuatro decimales).
TipoCambio
Validar El tipo de cambio debe tener un valor que se encuentre entre el límite
superior mas el valor que se publica para la fecha de la operación y el valor
que se publica para la fecha de la operación menos el límite inferior.
El límite superior se obtiene multiplicando el valor publicado del tipo de
cambio por la suma de uno más el porcentaje aplicable a la moneda
tomado del catálogo c_Moneda.
El límite inferior se obtiene multiplicando el valor publicado del tipo de
cambio por la suma de uno menos el porcentaje aplicable a la moneda
tomado del catálogo c_Moneda. Si este límite fuera negativo se toma cero.
Cuando el valor de este atributo se encuentre fuera de los límites
establecidos, debe existir el atributo Confirmacion.
Total
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
Cuando el TipoDeComprobante sea “T” o “P”, el importe registrado en el
atributo debe ser igual a cero.
El valor del atributo debe ser igual al subtotal menos descuentos más las
contribuciones recibidas (impuestos trasladados - federales y/o locales,
derechos, productos, aprovechamientos, aportaciones de seguridad social,
contribuciones de mejoras) menos los impuestos retenidos federales y/o
locales.
El SAT publica el límite para el valor máximo de este atributo en:
El catálogo c_TipoDeComprobante.
En la lista de RFC (l_RFC) cuando el contribuyente registre en el
portal del SAT los límites personalizados.
El valor máximo aplicable para el comprobante se determina de la siguiente
manera:
a. Si existen límites personalizados en la lista de RFC (l_RFC) se usan
esos límites como valor máximo aplicable.
b. Si no existen, se usan los límites establecidos en el catálogo
c_TipoDeComprobante.
o Dentro de dicho catálogo se identifica el tipo de
comprobante del CFDI
Si el valor es “I” o “E”, se toma el valor máximo
aplicable especificado en la columna que corresponde
con ese encabezado.
Si el valor es “N”, se identifica en el complemento de
nómina si existen valores en los siguientes atributos:
1. Si solo existe TotalSueldos, el valor máximo
aplicable, es el especificado en la columna con
encabezado NS.
2. Si solo existe TotalSeparacionIndemnizacion o
TotalJubilacionPensionRetiro, el valor máximo
aplicable, es el especificado en la columna con
encabezado NdS.
3. Si existe TotalSueldos y
TotalSeparacionIndemnizacion o
TotalJubilacionPensionRetiro, el valor máximo
aplicable para el CFDI es la suma del valor
especificado en la columna NS, más el
especificado en la columna NdS.
c. Cuando el valor equivalente en MXN del atributo Total sea mayor
que el valor máximo aplicable debe existir el atributo Confirmacion.
TipoDeComprobante
Validar Se debe omitir el atributo CondicionesDePago cuando el
TipoDeComprobante es “T”, “P” o “N”.
Se debe omitir el atributo Descuento de los conceptos cuando el
TipoDeComprobante es “T” o “P”.
Se debe omitir el elemento Impuestos cuando el TipoDeComprobante es
“T”, “P” o “N”.
Se debe omitir los atributos FormaPago y MetodoPago cuando el
TipoDeComprobante es “T”o “P”.
Exportacio
n
Validar Este atributo debe contener una clave vigente del catálogo c_Exportacion.
Si el atributo contiene el valor “02” debe existir el Complemento para
Comercio Exterior.
MetodoPago
Validar Si el valor registrado en el atributo TipoDeComprobante es “T” o “P” este
atributo no debe existir.
En caso contrario este atributo debe existir y contener una clave vigente
del catálogo c_MetodoPago.
LugarExpedicion
Validar Debe corresponder con una clave vigente de código postal incluida en el
catálogo c_CodigoPostal publicado en la página del SAT.
Confirmacion
Validar Si los atributos TipoCambio y Total están dentro del rango válido, no debe
existir este atributo.
El Proveedor de Certificación debe verificar que el emisor le haya solicitado
esta clave de confirmación y que no se utilice en más de un comprobante.
El Proveedor de Certificación debe enviar una notificación al emisor de que
ya se utilizó esta clave de confirmación.
Elemento:
Comproba
nte
Nodo:
Informacio
nGlobal
Validar Si el valor registrado en el atributo Rfc del nodo Receptor contiene
XAXX010101000 y el valor registrado en el atributo Nombre del nodo
Receptor contiene el valor “PUBLICO EN GENERAL” este nodo debe
existir.
Elemento:
Comproba
nte
Nodo:
Informacio
nGlobal
Atributos:
Periodicid
ad
validar Este atributo debe contener una clave vigente del catálogo c_Periodicidad.
Si el valor de este atributo contiene la clave “05” el atributo RegimenFiscal
debe contener el valor “621”.
Meses
Validar Este atributo debe contener una clave vigente del catálogo c_Meses.
Si el atributo Periodicidad contiene el valor “05”, este atributo debe contener
alguno de los valores “13”, “14”, “15”, “16”, “17” o “18”.
Si el atributo Periodicidad contiene un valor diferente de “05”, este atributo
debe contener alguno de los valores “01”, “02”, “03”, “04”, “05”, “06”, “07”,
“08”, “09”, “10”, “11” o “12”.
Año
Validar El valor de este atributo debe ser igual al año en curso o al año inmediato
anterior. Para validar el año en curso o el año inmediato anterior se debe
considerar el registrado en el atributo Fecha.
Elemento: Comprobante
Nodo: Emisor
Atributos:
Rfc
Validar Se deben considerar aplicar las reglas de validación que se indican en el
Anexo 29 aplicables para este atributo.
Nombre
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no
cancelados en el SAT y debe estar asociado a la clave de RFC registrado
en el atributo Rfc del Nodo Emisor.
RegimenFiscal
Validar Este atributo debe contener una clave vigente del catálogo
c_RegimenFiscal.
El régimen fiscal que se registre en este atributo debe corresponder con el
tipo de persona del emisor, es decir, si el RFC tiene longitud de 12
posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones
debe ser de persona física.
FacAtrAdq
uirente
Validar El valor de este atributo debe existir siempre que la respuesta del servicio
del Validador de RFC para emitir facturas a través del adquirente, sea en
sentido positivo.
Elemento: Comprobante
Nodo: Receptor
Atributos:
Rfc
Validar Cuando no se utilice un RFC genérico, el RFC debe estar en la lista de
RFC inscritos no cancelados en el SAT.
Nombre
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no
cancelados en el SAT y debe estar asociado a la clave de RFC registrado
en el atributo Rfc del Nodo Receptor.
Si el valor registrado en el atributo Rfc del nodo Receptor es
“XAXX010101000” o “XEXX010101000”, el valor de este atributo no debe
validarse en la la lista de RFC inscritos no cancelados en el SAT.
Si el valor registrado en este atributo es “PUBLICO EN GENERAL”, el valor
“XAXX010101000” debe existir en el atributo Rfc del nodo Receptor.
DomicilioF
iscalRecep
tor
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no
cancelados en el SAT y debe estar asociado a la clave de RFC registrado
en el atributo Rfc del Nodo Receptor.
Si el valor del atributo Rfc del receptor es XAXX010101000 o
XEXX010101000, este atributo debe ser igual al valor del atributo
LugarExpedicion.
ResidenciaFiscal
Validar Si el RFC del receptor es de un RFC registrado en el SAT o un RFC
genérico nacional, no se debe registrar este atributo.
Si el RFC del receptor es un RFC genérico extranjero y el comprobante
incluye el complemento de comercio exterior, o se registró el atributo
NumRegIdTrib, este atributo debe existir y la clave debe ser distinta de
MEX; en otro caso puede omitirse.
NumRegIdTrib
Validar Si el valor del atributo es un RFC inscrito no cancelado en el SAT o un RFC
genérico nacional, no se debe registrar este atributo. Si no existe el atributo
ResidenciaFiscal, este atributo puede omitirse.
Si el RFC del receptor es un RFC genérico extranjero y el comprobante
incluye el complemento de comercio exterior, el atributo debe existir.
Si el atributo ResidenciaFiscal corresponde a una clave de país incluida en
el catálogo c_Pais publicado en la página del SAT, se deben verificar las
columnas correspondientes a dicha clave:
Si tiene mecanismo de verificación en línea incluido en la columna
“Validación del Registro de Identidad Tributaria” del mismo catálogo
de c_Pais, debe existir en el registro del país.
Si no tiene mecanismo de verificación en línea, debe cumplir con el
patrón correspondiente incluido en la columna “Formato de Registro
de Identidad Tributaria” que se publique en el mismo catálogo
c_Pais.
En otro caso no se aplica esta validación.
RegimenFi
scalRecept
or
Validar Este atributo debe contener una clave vigente en el catálogo
c_RegimenFiscal.
El régimen fiscal que se registre en este atributo debe corresponder con el
tipo de persona del receptor, es decir, si el RFC tiene longitud de 12
posiciones, debe ser de persona moral y si tiene longitud de 13 posiciones
debe ser de persona física.
Si el atributo Rfc del nodo Receptor contiene el valor “XAXX010101000” o
el valor “XEXX010101000” en este atributo se debe registrar la clave “616”.
UsoCFDI
Validar El valor que se registre en este atributo debe aplicar para el tipo de persona
del receptor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser
de persona moral y si tiene longitud de 13 posiciones debe ser de persona
física y el valor registrado en el atributo RegimenFiscalReceptor, debe
corresponder a un valor de la columna Régimen Fiscal Receptor del
catálogo c_UsoCFDI.
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Atributos:
ClaveProdServ
Validar Deben existir los complementos que señale el catálogo c_ClaveProdServ
aplicables para este atributo.
Deben existir los impuestos trasladados y/o retenidos que señale el
catálogo c_ClaveProdServ aplicables para este atributo.
ClaveUnid
ad
Validar Este atributo debe contener una clave vigente del catálogo c_ClaveUnidad
ValorUnitario
Validar Si el TipoDeComprobante es “I”, “E” o “N”, el valor registrado debe ser
mayor que cero.
Importe
Validar Calcular el límite inferior como: (Cantidad - 10-
NumDecimalesCantidad/2)*(ValorUnitario - 10-
NumDecimalesValorUnitario/2) y este resultado truncado con la cantidad
de decimales que tenga registrado este atributo.
Calcular el límite superior como: (Cantidad + 10-NumDecimalesCantidad/2
-10-12)*(ValorUnitario + 10-NumDecimalesValorUnitario/2 -10-12) y este
resultado redondearlo hacia arriba con la cantidad de decimales que tenga
registrado este atributo.
El valor de este atributo debe ser mayor o igual que el límite inferior y menor
o igual que el límite superior.
Ejemplo: moneda MXN, decimales 2, importe 924.224956
Truncado del importe a 2 decimales: 924.22
Redondeado del importe hacia arriba: 924.23
moneda OMR, decimales 3, importe 281.594680
Truncado del importe a 3 decimales: 281.594
Redondeado del importe hacia arriba: 281.595
Descuento
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
tenga registrado en el atributo importe del concepto.
El valor registrado debe ser menor o igual al atributo Importe.
ObjetoImp
Validar El valor de este atributo debe contener una clave del catálogo c_ObjetoImp.
Si el valor registrado en este atributo es “02” el nodo hijo Impuestos del
nodo Concepto debe existir, en caso contrario no debe existir dicho nodo.
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: Impuestos
Validar Debe existir al menos uno de los dos elementos hijo.
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: Impuestos
Nodo: Traslados
Nodo: Traslado
Atributos:
Base
Validar Debe ser mayor que cero.
Impuesto
Validar Deben existir los atributos para sumarizar el total de impuestos trasladados
y el detalle de impuestos trasladados.
TipoFactor
Validar Si el valor registrado es Exento no se deben registrar los atributos
TasaOCuota ni Importe.
Si el valor registrado es Tasa o Cuota, se deben registrar los atributos
TasaOCuota e Importe.
TasaOCuota
Validar Si el valor registrado es fijo debe corresponder a un valor del catálogo
c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo
Impuesto y el factor debe corresponder con el atributo TipoFactor.
En caso contrario, si el valor registrado es variable debe corresponder al
rango entre el valor mínimo y valor máximo señalado en el catálogo.
Importe
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: Impuestos
Nodo: Retenciones
Nodo: Retencion
Atributos:
Base
Validar Debe ser mayor que cero.
Impuesto
Validar Deben existir los atributos para sumarizar el total de impuestos retenidos y
el detalle de impuestos retenidos.
TipoFactor
Validar Debe ser distinto de Exento.
TasaOCuota
Validar Si el valor registrado es fijo debe corresponder a un valor del catálogo
c_TasaOCuota, coincidir con el tipo de impuesto registrado en el atributo
Impuesto y el factor debe corresponder con el atributo TipoFactor.
En caso contrario, si el valor registrado es variable debe corresponder al
rango entre el valor mínimo y valor máximo señalado en el catálogo.
Importe
Validar Calcular el límite inferior como:
(Base - 10-NumDecimalesBase/2)*(TasaOCuota)
y este resultado truncado con la cantidad de decimales que tenga
registrado este atributo.
Calcular el límite superior como:
(Base + 10-NumDecimalesBase/2 - 10-12) *(TasaOCuota)
y este resultado redondearlo hacia arriba con la cantidad de decimales que
tenga registrado este atributo.
El valor de este atributo debe ser mayor o igual que el límite inferior y menor
o igual que el límite superior.
Ejemplo: moneda MXN, decimales 2, importe 924.224956
Truncado del importe a 2 decimales: 924.22
Redondeado del importe hacia arriba: 924.23
moneda OMR, decimales 3, importe 281.594680
Truncado del importe a 3 decimales: 281.594
Redondeado del importe hacia arriba: 281.595
Elemento:
Comproba
nte
Nodo:
Conceptos
Nodo:
Concepto:
Nodo:
ACuentaTe
rceros
Atributos:
RfcACuent
aTerceros
NombreAC
uentaTerce
ros
RegimenFi
scalACuen
taTerceros
Validar Este atributo debe contener una clave vigente del catálogo
c_RegimenFiscal.
DomicilioF
iscalACue
ntaTercero
s
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: InformacionAduanera
Atributos:
NumeroPedimento
Validar Se debe registrar cuando el CFDI no contenga el complemento de
comercio exterior (es una venta de primera mano nacional).
El valor de las posiciones uno y dos del NumeroPedimento deben
ser menor o igual que los últimos dos dígitos del año de la fecha
actual.
Las posiciones cinco y seis deben corresponder con una clave
vigente del catálogo de aduanas (catCFDI:c_Aduana).
Las posiciones nueve a la doce deben corresponder con un número
de patente del catálogo de patentes aduanales
(catCFDI:c_PatenteAduanal)
El valor de los últimos seis dígitos debe estar entre el valor mínimo
1 y el valor máximo de números consecutivos de la columna
cantidad del catálogo catCFDI:c_NumPedimentoAduana que
correspondan a los usados por la aduana en ese año.
No se debe registrar cuando el CFDI contenga el complemento de
comercio exterior.
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: Parte
Atributos:
ValorUnitario
Validar Debe ser mayor que cero.
Importe
Validar Calcular el límite inferior como: (cantidad - 10-
NumDecimalesCantidad/2)*(ValorUnitario - 10-
NumDecimalesValorUnitario/2) y este resultado truncado con la cantidad
de decimales que tenga registrado este atributo.
Calcular el límite superior como: (cantidad + 10-NumDecimalesCantidad/2
-10-12)*(ValorUnitario + 10-NumDecimalesValorUnitario/2 -10-12) y este
resultado redondearlo hacia arriba con la cantidad de decimales que tenga
registrado este atributo.
El valor de este atributo debe ser mayor o igual que el límite inferior y menor
o igual que el límite superior.
Ejemplo: moneda MXN, decimales 2, importe 924.224956
Truncado del importe a 2 decimales: 924.22
Redondeado del importe hacia arriba: 924.23
moneda OMR, decimales 3, importe 281. 594680
Truncado del importe a 3 decimales: 281.594
Redondeado del importe hacia arriba: 281.595
Elemento: Comprobante
Nodo: Conceptos
Nodo: Concepto
Nodo: Parte
Nodo: InformacionAduanera
Atributos:
NumeroPedimento
Validar Se debe registrar cuando el CFDI no contenga el complemento de
comercio exterior (es una venta de primera mano nacional).
El valor de las posiciones uno y dos del NumeroPedimento deben
ser menor o igual que los últimos dos dígitos del año de la fecha
actual.
Las posiciones cinco y seis deben corresponder con una clave
vigente del catálogo de aduanas (catCFDI:c_Aduana).
Las posiciones nueve a la doce deben corresponder con un número
de patente del catálogo de patentes aduanales
(catCFDI:c_PatenteAduanal).
El valor de los últimos seis dígitos debe estar entre el valor mínimo
1 y el valor máximo de números consecutivos de la columna
cantidad del catálogo catCFDI:c_NumPedimentoAduana que
correspondan a los usados por la aduana en ese año.
No se debe registrar cuando el CFDI contenga el complemento de
comercio exterior.
Elemento: Comprobante
Nodo: Impuestos
Atributos:
Validar Cuando el TipoDeComprobante sea “T” o “P”, este elemento no debe
existir.
TotalImpuestosRetenidos
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
El valor de este atributo debe ser igual a la suma de los importes
registrados en el elemento hijo Retenciones.
TotalImpuestosTrasladados
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
El valor de este atributo debe ser igual a la suma de los importes
registrados en el elemento hijo Traslados.
Elemento: Comprobante
Nodo: Impuestos
Nodo: Retenciones
Nodo: Retencion
Atributos:
Impuesto
Validar Debe haber sólo un registro por cada tipo de impuesto retenido.
Importe
Validar Debe existir el atributo TotalImpuestosRetenidos
El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
Debe ser igual al redondeo de la suma de los importes de los impuestos
retenidos registrados en los conceptos donde el impuesto sea igual al
atributo impuesto de este elemento.
Elemento:
Comproba
nte
Nodo:
Impuestos
Nodo:
Traslados
Nodo:
Traslado
Validar En el caso de que sólo existan conceptos con TipoFactor Exento, en este
nodo solo deben existir los atributos Base, Impuesto y TipoFactor.
Elemento:
Comproba
nte
Nodo:
Impuestos
Nodo:
Traslados
Nodo:
Traslado
Atributos:
Base
Validar El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
Debe ser igual al redondeo de la suma de los importes de los atributos Base
registrados en los conceptos donde el impuesto del concepto sea igual al
atributo impuesto de este elemento y la TasaOCuota del concepto sea igual
al atributo TasaOCuota de este elemento.
En caso de que solo existan conceptos con TipoFactor Exento, la suma de
este atributo debe ser igual al redondeo de la suma de los importes de los
atributos Base registrados en los conceptos.
Impuesto
Validar Debe haber sólo un registro con la misma combinación de impuesto, factor
y tasa por cada traslado.
TasaOCuota
Validar El valor seleccionado debe corresponder a un valor donde la columna
impuesto corresponda con el atributo impuesto y la columna factor
corresponda con el atributo TipoFactor.
Importe
Validar Debe existir el atributo TotalImpuestosTrasladados cuando existan
conceptos con un TipoFactor distinto a Exento.
El valor de este atributo debe tener hasta la cantidad de decimales que
soporte la moneda.
Debe ser igual al redondeo de la suma de los importes de los impuestos
trasladados registrados en los conceptos donde el impuesto del concepto
sea igual al atributo impuesto de este elemento y la TasaOCuota del
concepto sea igual al atributo TasaOCuota de este elemento.
Elemento: Comprobante
Nodo: Complemento
Validar Permite la inclusión del complemento TimbreFiscalDigital y los
complementos para el CFDI general, no permite complementos del
comprobante retenciones e información de pagos.
II. Del Comprobante fiscal digital por Internet que ampara retenciones e información de
pagos.
Estructura
Elemento: Retenciones
Diagrama
Descripción
Estándar del Comprobante Fiscal Digital por Internet que ampara retenciones e
información de pagos. Los importes se expresan en la moneda de pesos mexicanos
(MXN).
Atributos
Version
Descripción Atributo requerido con valor prefijado 2.0 que indica la versión
del estándar bajo el que se encuentra expresado el
comprobante que ampara retenciones e información de
pagos.
Uso requerido
Valor Prefijado 2.0
Tipo Base xs:string
Espacio en Blanco Colapsar
FolioInt
Descripción Atributo opcional para control interno del contribuyente que
expresa el folio del comprobante que ampara retenciones e
información de pagos. Permite números y/o letras.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 20
Espacio en Blanco Colapsar
Patrón [0-9a-zA-Z]{1,20}
Sello
Descripción Atributo requerido para contener el sello digital del
comprobante que ampara retenciones e información de
pagos, al que hacen referencia las reglas de resolución
miscelánea vigente. El sello debe ser expresado como una
cadena de texto en formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Blanco Colapsar
NoCertificado
Descripción Atributo requerido para expresar el número de serie del
certificado de sello digital que ampara al comprobante de
retención e información de pagos, de acuerdo con el acuse
correspondiente a 20 posiciones otorgado por el sistema del
SAT.
Uso requerido
Tipo Base xs:string
Longitud 20
Espacio en Blanco Colapsar
Patrón [0-9]{20}
Certificado
Descripción Atributo requerido que sirve para incorporar el certificado de
sello digital que ampara el comprobante de retención e
información de pagos. El certificado debe ser expresado
como una cadena de texto en formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Blanco Colapsar
FechaExp
Descripción Atributo requerido para la expresión de la fecha y hora de
expedición del comprobante que ampara retenciones e
información de pagos. Se expresa en la forma AAAA-MM-
DDThh:mm:ss y debe corresponder con la hora local donde
se expide el comprobante.
Uso requerido
Tipo Especial tdCFDI:t_FechaH
LugarExpRetenc
Descripción Atributo requerido para incorporar el código postal del lugar
de expedición del comprobante que ampara retenciones e
información de pagos.
Uso requerido
Tipo Especial catCFDI:c_CodigoPostal
CveRetenc
Descripción Atributo requerido para expresar la clave de la retención e
información de pagos de acuerdo al catálogo publicado en
internet por el SAT.
Uso requerido
Tipo Especial c_retenciones:c_CveRetenc
DescRetenc
Descripción Atributo condicional que expresa la descripción de la
retención e información de pagos.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 100
Espacio en Blanco Colapsar
Descripción
Nodo opcional para precisar la información de los comprobantes relacionados.
Atributos
TipoRelacion
Descripción Atributo requerido para indicar la clave de la relación que
existe entre éste que se está generando y el comprobante
que ampara retenciones e información de pagos previos.
Uso requerido
Tipo Especial catCFDI:c_TipoRelacion
UUID
Descripción Atributo requerido para registrar el folio fiscal (UUID) de un
comprobante que ampara retención e información de pagos,
relacionado con el presente comprobante, ejemplo: Si éste
sustituye a un comprobante cancelado.
Uso requerido
Tipo Base xs:string
Longitud 36
Espacio en Blanco Colapsar
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-
f0-9A-F]{12}
Elemento: Emisor
Diagrama
Descripción
Nodo requerido para expresar la información del contribuyente emisor del comprobante
que ampara retenciones e información de pagos.
Atributos
RfcE
Descripción Atributo requerido para registrar la clave del Registro Federal
de Contribuyentes correspondiente al contribuyente emisor
del comprobante que ampara retenciones e información de
pagos, sin guiones o espacios.
Uso requerido
Tipo Especial tdCFDI:t_RFC
NomDenRazSocE
Descripción Atributo requerido para registrar el nombre, denominación o
razón social del contribuyente inscrito en el RFC, emisor del
comprobante que ampara retenciones e información de
pagos.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 254
Espacio en Blanco Colapsar
RegimenFiscalE
Descripción Atributo requerido para incorporar la clave del régimen del
contribuyente emisor del comprobante que ampara
retenciones e información de pagos.
Uso requerido
Tipo Especial catCFDI:c_RegimenFiscal
Elemento: Receptor
Diagrama
Descripción
Nodo requerido para expresar la información del contribuyente receptor del comprobante
que ampara retenciones e información de pagos.
Atributos
NacionalidadR
Descripción Atributo requerido para expresar la nacionalidad del receptor
del comprobante que ampara retenciones e información de
pagos.
Uso requerido
Tipo Base xs:string
Valores Permitidos Nacional
Extranjero
Espacio en Blanco Colapsar
Elemento: Nacional
Diagrama
Descripción
Nodo requerido para expresar la información del contribuyente receptor en caso de que
sea de nacionalidad mexicana.
Atributos
RfcR
Descripción Atributo requerido para registrar la clave del Registro Federal
de Contribuyentes correspondiente al contribuyente receptor
del comprobante que ampara retenciones e información de
pagos.
Uso requerido
Tipo Especial tdCFDI:t_RFC
NomDenRazSocR
Descripción Atributo requerido para registrar el(los) nombre(s), primer
apellido, segundo apellido, según corresponda,
denominación o razón social del contribuyente, inscrito en el
RFC, del receptor del comprobante que ampara retenciones
e información de pagos.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 254
Espacio en Blanco Colapsar
CurpR
Descripción Atributo opcional para la Clave Única del Registro Poblacional
del contribuyente receptor del comprobante que ampara
retenciones e información de pagos.
Uso opcional
Tipo Especial tdCFDI:t_CURP
DomicilioFiscalR
Descripción Atributo requerido para registrar el código postal del domicilio
fiscal del receptor del comprobante que ampara retenciones
e información de pagos.
Uso requerido
Tipo Base xs:string
Longitud 5
Espacio en Blanco Colapsar
Patrón [0-9]{5}
Elemento: Extranjero
Diagrama
Descripción
Nodo requerido para expresar la información del contribuyente receptor del comprobante
que ampara retenciones e información de pagos, cuando sea residente en el extranjero.
Atributos
NumRegIdTribR
Descripción Atributo opcional para expresar el número de registro de
identificación fiscal del receptor del comprobante que ampara
retenciones e información de pagos, cuando sea residente en
el extranjero.
Uso opcional
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 20
Espacio en Blanco Colapsar
NomDenRazSocR
Descripción Atributo requerido para expresar el nombre, denominación o
razón social del receptor del comprobante que ampara
retenciones e información de pagos, cuando sea residente en
el extranjero.
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 300
Espacio en Blanco Colapsar
Elemento: Periodo
Diagrama
Descripción
Nodo requerido para expresar el período que corresponde al comprobante que ampara
retenciones e información de pagos.
Atributos
MesIni
Descripción Atributo requerido para expresar la clave del mes inicial del
período de la retención e información de pagos.
Uso requerido
Tipo Especial c_retenciones:c_Periodo
MesFin
Descripción Atributo requerido para expresar la clave del mes final del
período de la retención e información de pagos.
Uso requerido
Tipo Especial c_retenciones:c_Periodo
Ejercicio
Descripción Atributo requerido para la expresión del ejercicio fiscal (año)
de la retención e información de pagos.
Uso requerido
Tipo Especial c_retenciones:c_Ejercicio
Elemento: Totales
Diagrama
Descripción
Nodo requerido para expresar el total de las retenciones e información de los pagos
efectuados en el período que ampara el comprobante.
Atributos
MontoTotOperacion
Descripción Atributo requerido para expresar el total del monto de la
operación que se relaciona en el comprobante que ampara
retenciones e información de pagos. No se permiten valores
negativos.
Uso requerido
Tipo Especial tdCFDI:t_ImporteMXN
MontoTotGrav
Descripción Atributo requerido para expresar el total del monto gravado
de la operación que se relaciona en el comprobante que
ampara retenciones e información de pagos. No se permiten
valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_ImporteMXN
MontoTotExent
Descripción Atributo requerido para expresar el total del monto exento de
la operación que se relaciona en el comprobante que ampara
retenciones e información de pagos. No se permiten valores
negativos.
Uso requerido
Tipo Especial tdCFDI:t_ImporteMXN
MontoTotRet
Descripción Atributo requerido para expresar el monto total de las
retenciones. Sumatoria de los montos de retención del nodo
ImpRetenidos. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_ImporteMXN
UtilidadBimestral
Descripción Atributo condicional para expresar el monto de la utilidad
bimestral.
Uso opcional
Tipo Especial tdCFDI:t_ImporteMXN
ISRCorrespondiente
Descripción Atributo condicional para expresar el monto del ISR
correspondiente al bimestre.
Uso opcional
Tipo Especial tdCFDI:t_ImporteMXN
Elemento: ImpRetenidos
Diagrama
Descripción
Nodo opcional para expresar el total de los impuestos retenidos que se desprenden de
los conceptos expresados en el comprobante que ampara retenciones e información de
pagos.
Atributos
BaseRet
Descripción Atributo opcional para expresar la base del impuesto, que
puede ser la diferencia entre los ingresos percibidos y las
deducciones autorizadas. No se permiten valores negativos.
Uso opcional
Tipo Especial tdCFDI:t_ImporteMXN
ImpuestoRet
Descripción Atributo opcional para señalar el tipo de impuesto retenido del
período o ejercicio conforme al catálogo.
Uso opcional
Tipo Especial catCFDI:c_Impuesto
MontoRet
Descripción Atributo requerido para expresar el importe del impuesto
retenido en el período o ejercicio que se relaciona en el
comprobante que ampara retenciones e información de
pagos. No se permiten valores negativos.
Uso requerido
Tipo Especial tdCFDI:t_ImporteMXN
TipoPagoRet
Descripción Atributo requerido para precisar la clave del tipo del efecto
que se le da al monto de la retención.
Uso requerido
Tipo Especial c_retenciones:c_TipoPagoRet
Elemento: Complemento
Diagrama
Descripción
Nodo opcional donde se incluirá el complemento Timbre Fiscal Digital de manera
obligatoria y los nodos complementarios determinados por el SAT, de acuerdo a las
disposiciones particulares a un sector o actividad específica.
Descripción
Nodo opcional para recibir las extensiones al formato que sean de utilidad al
contribuyente. Para las reglas de uso del mismo, referirse al formato de origen.
Código Fuente
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:retenciones="http://www.sat.gob.mx/esquemas/retencionpago/2"
xmlns:c_retenciones="http://www.sat.gob.mx/esquemas/retencionpago/1/catalogos"
xmlns:catCFDI="http://www.sat.gob.mx/sitio_internet/cfd/catalogos"
xmlns:tdCFDI="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI"
targetNamespace="http://www.sat.gob.mx/esquemas/retencionpago/2"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.sat.gob.mx/esquemas/retencionpago/1/catalogos"
schemaLocation="http://www.sat.gob.mx/esquemas/retencionpago/1/catalogos/catRetenciones.xsd"
/>
<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/catalogos"
schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/catalogos/catCFDI.xsd"/>
<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI"
schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI/tdCFDI.xsd"/>
<xs:element name="Retenciones">
<xs:annotation>
<xs:documentation>Estándar del Comprobante Fiscal Digital por Internet que ampara
retenciones e información de pagos. Los importes se expresan en la moneda de pesos mexicanos
(MXN).</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="CfdiRetenRelacionados" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para precisar la información de los comprobantes
relacionados.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="TipoRelacion" type="catCFDI:c_TipoRelacion" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para indicar la clave de la relación que existe entre
éste que se está generando y el comprobante que ampara retenciones e información de pagos
previos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UUID" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el folio fiscal (UUID) de un
comprobante que ampara retención e información de pagos, relacionado con el presente
comprobante, ejemplo: Si éste sustituye a un comprobante cancelado.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="36"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-
F]{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Emisor">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar la información del contribuyente emisor
del comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="RfcE" type="tdCFDI:t_RFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar la clave del Registro Federal de
Contribuyentes correspondiente al contribuyente emisor del comprobante que ampara retenciones
e información de pagos, sin guiones o espacios.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NomDenRazSocE" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el nombre, denominación o razón
social del contribuyente inscrito en el RFC, emisor del comprobante que ampara retenciones e
información de pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="254"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RegimenFiscalE" type="catCFDI:c_RegimenFiscal" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar la clave del régimen del
contribuyente emisor del comprobante que ampara retenciones e información de
pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Receptor">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar la información del contribuyente receptor
del comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:choice>
<xs:element name="Nacional">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar la información del contribuyente
receptor en caso de que sea de nacionalidad mexicana.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="RfcR" type="tdCFDI:t_RFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar la clave del Registro Federal de
Contribuyentes correspondiente al contribuyente receptor del comprobante que ampara retenciones
e información de pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="NomDenRazSocR" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el(los) nombre(s), primer apellido,
segundo apellido, según corresponda, denominación o razón social del contribuyente, inscrito en el
RFC, del receptor del comprobante que ampara retenciones e información de
pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="254"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="CurpR" type="tdCFDI:t_CURP" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para la Clave Única del Registro Poblacional del
contribuyente receptor del comprobante que ampara retenciones e información de
pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DomicilioFiscalR" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para registrar el código postal del domicilio fiscal
del receptor del comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="5"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{5}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Extranjero">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar la información del contribuyente
receptor del comprobante que ampara retenciones e información de pagos, cuando sea residente
en el extranjero.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="NumRegIdTribR" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para expresar el número de registro de
identificación fiscal del receptor del comprobante que ampara retenciones e información de pagos,
cuando sea residente en el extranjero.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="NomDenRazSocR" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el nombre, denominación o razón
social del receptor del comprobante que ampara retenciones e información de pagos, cuando sea
residente en el extranjero.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="300"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:choice>
<xs:attribute name="NacionalidadR" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la nacionalidad del receptor del
comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="Nacional">
<xs:annotation>
<xs:documentation>Nacionalidad Mexicana</xs:documentation>
</xs:annotation>
</xs:enumeration>
<xs:enumeration value="Extranjero">
<xs:annotation>
<xs:documentation>Procedente de otro pais</xs:documentation>
</xs:annotation>
</xs:enumeration>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Periodo">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar el período que corresponde al
comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="MesIni" type="c_retenciones:c_Periodo" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave del mes inicial del período de
la retención e información de pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MesFin" type="c_retenciones:c_Periodo" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave del mes final del período de la
retención e información de pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Ejercicio" type="c_retenciones:c_Ejercicio" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para la expresión del ejercicio fiscal (año) de la
retención e información de pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Totales">
<xs:annotation>
<xs:documentation>Nodo requerido para expresar el total de las retenciones e información
de los pagos efectuados en el período que ampara el comprobante.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="ImpRetenidos" minOccurs="0" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Nodo opcional para expresar el total de los impuestos retenidos que se
desprenden de los conceptos expresados en el comprobante que ampara retenciones e
información de pagos.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="BaseRet" type="tdCFDI:t_ImporteMXN" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para expresar la base del impuesto, que puede ser
la diferencia entre los ingresos percibidos y las deducciones autorizadas. No se permiten valores
negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ImpuestoRet" type="catCFDI:c_Impuesto" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para señalar el tipo de impuesto retenido del
período o ejercicio conforme al catálogo.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MontoRet" type="tdCFDI:t_ImporteMXN" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el importe del impuesto retenido en
el período o ejercicio que se relaciona en el comprobante que ampara retenciones e información de
pagos. No se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="TipoPagoRet" type="c_retenciones:c_TipoPagoRet" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para precisar la clave del tipo del efecto que se le
da al monto de la retención.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="MontoTotOperacion" type="tdCFDI:t_ImporteMXN" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el total del monto de la operación que
se relaciona en el comprobante que ampara retenciones e información de pagos. No se permiten
valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MontoTotGrav" type="tdCFDI:t_ImporteMXN" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el total del monto gravado de la
operación que se relaciona en el comprobante que ampara retenciones e información de pagos. No
se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MontoTotExent" type="tdCFDI:t_ImporteMXN" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el total del monto exento de la
operación que se relaciona en el comprobante que ampara retenciones e información de pagos. No
se permiten valores negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="MontoTotRet" type="tdCFDI:t_ImporteMXN" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el monto total de las retenciones.
Sumatoria de los montos de retención del nodo ImpRetenidos. No se permiten valores
negativos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UtilidadBimestral" type="tdCFDI:t_ImporteMXN" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el monto de la utilidad
bimestral.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="ISRCorrespondiente" type="tdCFDI:t_ImporteMXN" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional para expresar el monto del ISR correspondiente al
bimestre.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Complemento" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional donde se incluirá el complemento Timbre Fiscal Digital de
manera obligatoria y los nodos complementarios determinados por el SAT, de acuerdo a las
disposiciones particulares a un sector o actividad específica.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Addenda" minOccurs="0">
<xs:annotation>
<xs:documentation>Nodo opcional para recibir las extensiones al formato que sean de
utilidad al contribuyente. Para las reglas de uso del mismo, referirse al formato de
origen.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:any minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="Version" use="required" fixed="2.0">
<xs:annotation>
<xs:documentation>Atributo requerido con valor prefijado 2.0 que indica la versión del
estándar bajo el que se encuentra expresado el comprobante que ampara retenciones e
información de pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="FolioInt" use="optional">
<xs:annotation>
<xs:documentation>Atributo opcional para control interno del contribuyente que expresa el
folio del comprobante que ampara retenciones e información de pagos. Permite números y/o
letras.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="20"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9a-zA-Z]{1,20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Sello" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para contener el sello digital del comprobante que
ampara retenciones e información de pagos, al que hacen referencia las reglas de resolución
miscelánea vigente. El sello debe ser expresado como una cadena de texto en formato Base
64.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="NoCertificado" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el número de serie del certificado de
sello digital que ampara al comprobante de retención e información de pagos, de acuerdo con el
acuse correspondiente a 20 posiciones otorgado por el sistema del SAT.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="20"/>
<xs:whiteSpace value="collapse"/>
<xs:pattern value="[0-9]{20}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Certificado" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido que sirve para incorporar el certificado de sello digital
que ampara el comprobante de retención e información de pagos. El certificado debe ser expresado
como una cadena de texto en formato Base 64.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="FechaExp" type="tdCFDI:t_FechaH" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para la expresión de la fecha y hora de expedición del
comprobante que ampara retenciones e información de pagos. Se expresa en la forma AAAA-MM-
DDThh:mm:ss y debe corresponder con la hora local donde se expide el
comprobante.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="LugarExpRetenc" type="catCFDI:c_CodigoPostal" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para incorporar el código postal del lugar de
expedición del comprobante que ampara retenciones e información de pagos.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="CveRetenc" type="c_retenciones:c_CveRetenc" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar la clave de la retención e información de
pagos de acuerdo al catálogo publicado en internet por el SAT.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="DescRetenc" use="optional">
<xs:annotation>
<xs:documentation>Atributo condicional que expresa la descripción de la retención e
información de pagos.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="100"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
B. Generación de sellos digitales para comprobantes fiscales digitales por Internet que
amparan retenciones e información de pagos.
Para la generación de sellos digitales se utiliza criptografía de clave pública aplicada a una cadena
original.
Criptografía de la Clave Pública
La criptografía de Clave Pública se basa en la generación de una pareja de números muy grandes
relacionados entre sí, de tal manera que una operación de encripción sobre un mensaje tomando
como clave de encripción a uno de los dos números, produce un mensaje alterado en su significado
que solo puede ser devuelto a su estado original mediante la operación de desencripción
correspondiente tomando como clave de desencripción al otro número de la pareja.
Uno de estos dos números, expresado en una estructura de datos que contiene un módulo y un
exponente, se conserva secreta y se le denomina "clave privada", mientras que el otro número
llamado "clave pública", en formato binario y acompañado de información de identificación del
emisor, además de una calificación de validez por parte de un tercero confiable, se incorpora a un
archivo denominado "certificado de firma electrónica avanzada o certificado para sellos digitales" en
adelante Certificado.
El Certificado puede distribuirse libremente para efectos de intercambio seguro de información y para
ofrecer pruebas de autoría de archivos electrónicos o confirmación de estar de acuerdo con su
contenido ambos mediante el proceso denominado "firmado electrónico avanzado ", que consiste en
una característica observable de un mensaje, verificable por cualquiera con acceso al certificado
digital del emisor, que sirve para implementar servicios de seguridad para garantizar:
La integridad (facilidad para detectar si un mensaje firmado ha sido alterado),
La autenticidad,
Certidumbre de origen (facilidad para determinar qué persona es el autor de la firma que valida
el contenido del mensaje) y
No repudiación del mensaje firmado (capacidad de impedir que el autor de la firma niegue
haber firmado el mensaje).
Estos servicios de seguridad proporcionan las siguientes características a un mensaje con firma
electrónica avanzada:
Es infalsificable.
La firma electrónica avanzada no es reciclable (es única por mensaje).
Un mensaje con firma electrónica avanzada alterado, es detectable.
Un mensaje con firma electrónica avanzada, no puede ser repudiado.
Los certificados de sello digital se generan de manera idéntica a los certificados de e.firma y al igual
que las firmas electrónicas avanzadas el propósito del sello digital es emitir comprobantes fiscales
con autenticidad, integridad, verificables y no repudiables por el emisor. Para ello bastará tener
acceso al mensaje original o cadena original, al sello digital y al certificado de sello digital del emisor.
Al ser el certificado de sello digital idéntico en su generación a un certificado de e.firma , proporciona
los mismos servicios de seguridad y hereda las características de las firmas digitales. Por
consecuencia un comprobante fiscal digital firmado digitalmente por el contribuyente tiene las
características señaladas previamente.
Los algoritmos utilizados en la generación de un sello digital son los siguientes:
SHA-2 256, que es una función hash de un solo sentido tal que para cualquier entrada
produce una salida compleja de 256 bits (32 bytes) denominada "digestión".
RSAPrivateEncrypt, que utiliza la clave privada del emisor para encriptar la digestión del
mensaje.
RSAPublicDecrypt, que utiliza la clave pública del emisor para desencriptar la digestión del
mensaje.
A manera de referencia y para obtener información adicional, se recomienda consultar el sitio de
Factura Electrónica que se encuentra dentro del portal del SAT: www.sat.gob.mx
Cadena Original
Se entiende como cadena original, a la secuencia de datos formada con la información contenida
dentro del comprobante fiscal digital por Internet que ampara retenciones e información de pagos,
establecida en el Rubro II.A. de este anexo. Construidaaplicando las siguientes reglas.
Reglas Generales:
1. Ninguno de los atributos que conforman al comprobante fiscal digital deberá contener el carácter
| (“pleca”) debido a que éste es utilizado como carácter de control en la formación de la cadena
original.
2. El inicio de la cadena original se encuentra marcado mediante una secuencia de caracteres ||
(doble “pleca”).
3. Se expresa únicamente la información del dato sin expresar el atributo al que hace referencia.
Esto es, si el folio interno (FolioInt) del comprobante es “P29” solo se expresará |P29| y nunca |
FolioInt P29|.
4. Cada dato individual se encontrará separado de su dato subsiguiente, en caso de existir,
mediante un carácter | (“pleca” sencilla).
5. Los espacios en blanco que se presenten dentro de la cadena original son tratados de la siguiente
manera:
a. Se debe remplazar todos los tabuladores, retornos de carro y saltos de línea por el carácter
espacio (ASCII 32).
b. Acto seguido se elimina cualquier espacio al principio y al final de cada separador | (pleca ).
Secuencia de Formación:
La secuencia de formación será siempre en el orden que se expresa a continuación, tomando en
cuenta las reglas generales expresadas en la sección de la Cadena Original.
a. SHA-2 256 no requiere semilla alguna. El algoritmo cambia su estado de bloque en bloque
de acuerdo a la entrada previa.
II Con la clave privada correspondiente al certificado digital del emisor del mensaje y del sello
digital, encriptar la digestión del mensaje obtenida en el paso I utilizando para ello el algoritmo de
encripción RSA.
Nota: La mayor parte del software comercial podría generar los pasos I y II invocando una sola
función y especificando una constante simbólica. En el SAT este procedimiento se hace en pasos
separados, lo cual es totalmente equivalente. Es importante resaltar que prácticamente todo el
software criptográfico comercial incluye APIs o expone métodos en sus productos que permiten
implementar la secuencia de algoritmos aquí descrita. La clave privada solo debe mantenerse en
memoria durante la llamada a la función de encripción; inmediatamente después de su uso debe ser
eliminada de su registro de memoria mediante la sobre escritura de secuencias binarias alternadas
de "unos" y "ceros".
III El resultado será una cadena binaria que no necesariamente consta de caracteres imprimibles,
por lo que deberá traducirse a una cadena que sí conste solamente de tales caracteres. Para ello
se utiliza el modo de expresión de secuencias de bytes denominado "Base 64", que consiste en
la asociación de cada 6 bits de la secuencia a un elemento de un "alfabeto" que consta de 64
caracteres imprimibles. Puesto que con 6 bits se pueden expresar los números del 0 al 63, si a
cada uno de estos valores se le asocia un elemento del alfabeto se garantiza que todo byte de la
secuencia original puede ser mapeado a un elemento del alfabeto Base 64, y los dos bits
restantes formarán parte del siguiente elemento a mapear. Este mecanismo de expresión de
cadenas binarias produce un incremento de 33% en el tamaño de las cadenas imprimibles
respecto de la original.
La codificación en base 64, así como su decodificación, se realiza tomando los bloques a procesar
en el sentido de su lectura, es decir, de izquierda a derecha.
El alfabeto a utilizar se expresa en el siguiente catálogo:
Estructura
Elementos
Elemento: Cancelacion
Diagrama
Descripción
Elemento raíz para realizar una solicitud de cancelación de Retenciones.
Atributos
RfcEmisor
Descripción Atributo requerido para expresar el RFC del emisor del (as) Retenciones a
ser canceladas.
Uso requerido
Tipo Especial xsd:string
Fecha
Descripción Atributo requerido para expresar la fecha de la operación.
Uso requerido
Tipo Especial xsd:dateTime
Elemento: Folios
Diagrama
Descripción
Colección de folios fiscales (UUID) a ser cancelados.
Elemento: Folio
Diagrama
Descripción
Folio fiscal (UUID) a ser cancelado.
Atributos
UUID
Descripción UUID generado en la operación de timbrado del comprobante solicitado.
Uso requerido
Tipo Especial xsd:string
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Motivo
Descripción Clave del motivo de cancelación del comprobante.
Uso requerido
Tipo Especial xsd:string
Valores Permitidos 01
02
03
04
FolioSustitucion
Descripción Atributo condicional que representa al UUID que sustituye al folio fiscal
cancelado. Es requerido cuando la clave del motivo de cancelación es 01.
Uso opcional
Tipo Especial xsd:string
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{12}
Código Fuente
a) Código QR, con base al estándar ISO/IEC 18004:2000, conteniendo los siguientes datos en el
siguiente formato:
1 La URL de acceso al servicio que pueda mostrar los datos de la versión pública del
comprobante.
2 Número de folio fiscal del CFDI (UUID).
3 RFC del emisor
4 RFC del receptor
5 Número de registro de identificación fiscal del extranjero
6 Total
7 Últimos 8 caracteres del sello digital del emisor del CFDI.
De esta manera se generan los datos válidos para realizar una consulta de un CFDI por medio de
su expresión impresa.
https://prodretencionverificacion.clouda.sat.gob.mx?id=ad662d33-6934-459c-a128-
BDf0393f0f44&re=XAXX010101000&rr=XAXX010101000&tt=1234567890.123456&fe=rH8/bw==
https://prodretencionverificacion.clouda.sat.gob.mx?id=ad662d33-6934-459c-a128-
BDf0393f0f44&re=XAXX010101000&nr=22101000&tt=1234567890.123456&fe=rH8/bw==
El código de barras bidimensional deberá ser impreso en un cuadrado con lados no menores a 2.75
centímetros, Ejemplo
---------2.75 cm---------
Elemento:RetencionesAtributos:
Sello
Validar Desencriptar el contenido de este atributo usando el certificado incluido en el atributo
"Certificado".
Generar la cadena original del comprobante.
Aplicar el algoritmo de digestión SHA-256.
El resultado de la digestión debe ser igual al resultado de la desencripción del sello.
Certificado
Validar El atributo debe contener un archivo .cer válido.
El número de certificado registrado en el archivo debe ser igual al registrado en el atributo
"NoCertificado".
El certificado debe ser emitido por el Servicio de Administración Tributaria.
El certificado debe estar vigente a la fecha y hora de expedición del comprobante.
El certificado no debe estar revocado a la fecha y hora de expedición del comprobante.
El RFC registrado en el certificado debe ser igual al registrado en el emisor del CFDI que
ampara Retenciones e Información de Pagos.
El certificado debe ser del tipo "Certificado de Sello Digital".
FechaExp
Validar Al momento de la recepción del archivo XML por parte del Proveedor de Certificación, éste
debe verificar que la fecha y hora no debe ser:
Mayor que la fecha y hora aumentada en el plazo que se especifique en la
Resolución Miscelánea Fiscal vigente - Obligaciones de los proveedores en el
proceso de certificación de CFDI.
Menor que la fecha y hora disminuida en el plazo que se especifique en la
Resolución Miscelánea Fiscal vigente - Obligaciones de los proveedores en el
proceso de certificación de CFDI.
LugarExpRetenc
Validar Debe corresponder con una clave vigente de código postal incluida en el catálogo
c_CodigoPostal publicado en la página del SAT.
CveRetenc
Validar Este atributo debe contener una clave vigente en el catálogo c_CveRetenc
Si el valor registrado en este atributo es “25”, se debe registrar información el atributo
DescRetenc.
Cuando el catálogo señale un complemento asociado al tipo de retención, se debe incluir
dicho complemento en el comprobante.
Elemento: Retenciones
Nodo: Emisor
Atributos:
RfcE
Validar Se deben aplicar las reglas de validación que se indican en el Anexo 29 aplicables para
este atributo.
NomDenRazSocE
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el
SAT y debe estar asociado a la clave de RFC registrado en el atributo RfcE del Nodo Emisor.
RegimenFisca
lE
Validar Este atributo debe contener una clave vigente del catálogo c_RegimenFiscal
El régimen fiscal que se registre en este atributo debe corresponder con el tipo de persona
del emisor, es decir, si el RFC tiene longitud de 12 posiciones, debe ser de persona moral
y si tiene longitud de 13 posiciones debe ser de persona física.
Elemento: Retenciones
Nodo:Receptor
Nodo:Nacional
Atributos:
RfcR
Validar Si el valor de este atributo es diferente de la clave del RFC génerica “XAXX010101000”,
debe estar en la lista de RFC inscritos no cancelados en el SAT.
NomDenRazSocR
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en el
SAT y debe estar asociado a la clave de RFC registrado en el atributo RfcR del Nodo
Retenciones:Receptor/Nacional
CurpR
Validar Este atributo no debe existir si la clave del RFC del atributo RfcR tiene longitud de 12
posiciones.
DomicilioFiscalR
Validar El valor de este atributo debe encontrarse en la lista de RFC inscritos no cancelados en
el SAT y debe estar asociado a la clave de RFC registrado en el atributo
Nacional:Receptor:RfcR.
Elemento:
Retenciones
Nodo:Periodo
Atributos:
MesIni
Validar Este atributo debe contener una clave vigente del catálogo c_Periodo y debe ser menor
o igual que el atributo MesFin.
MesFin
Validar Este atributo debe contener una clave vigente del catálogo c_Periodo y debe ser mayor o
igual que el atributo MesIni.
Ejercicio
Validar Este atributo debe contener una clave vigente del catálogo c_Ejercicio.
El valor de este atributo debe ser igual al año en curso o al año inmediato anterior. Para
validar el año en curso o el año inmediato anterior se debe considerar el registrado en el
atributo FechaExp.
Elemento:
Retenciones
Nodo:Totales
Atributos
MontoTotOper
acion
Validar El valor de este atributo debe ser igual a la suma de los atributos MontoTotGrav y
MontoTotExent.
MontoTotGrav
ado
Validar El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.
MontoTotExen
t
Validar El valor de este atributo debe ser menor o igual al atributo MontoTotOperacion.
MontoTotRet
Validar Si el valor es mayor que cero, debe existir al menos un nodo hijo de ImpRetenidos y
UtilidadBimest
ral
Validar Si el valor registrado en el atributo CveRetenc es “28”, el valor de este atributo debe ser
mayor a cero y los atributos MontoTotGrav y MontoTotExento deben tener el valor “0”.
ISRCorrespon
diente
Validar Si el valor registrado en el atributo CveRetenc es “28”, el valor de este atributo debe ser
mayor a cero y los atributos MontoTotGrav y MontoTotExento deben tener el valor “0”.
Elemento:
Retenciones
Nodo:Totales
Nodo:ImpRete
nidos
Atributos:
TipoPagoRet
Validar Este atributo debe contener una clave vigente del catálogo c_TipoPagoRet donde la
columna Tipo impuesto debe corresponder con el tipo de impuesto registrado en el
atributo ImpuestoRet.
B. Estándar y uso del complemento obligatorio: Timbre Fiscal Digital del SAT versión
1.1
a. Estándar del complemento obligatorio timbre fiscal digital del SAT.
Estructura
Elementos
Elemento: TimbreFiscalDigital
Diagrama
Descripción
Complemento requerido para el Timbrado Fiscal Digital que da validez al
Comprobante fiscal digital por Internet.
Atributos
Version
Descripción Atributo requerido para la expresión de la
versión del estándar del Timbre Fiscal Digital.
Uso requerido
Valor Prefijado 1.1
UUID
Descripción Atributo requerido para expresar los 36
caracteres del folio fiscal (UUID) de la
transacción de timbrado conforme al estándar
RFC 4122.
Uso requerido
Tipo Base xs:string
Longitud 36
Espacio en Colapsar
Blanco
Patrón [a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-
f0-9A-F]{4}-[a-f0-9A-F]{12}
FechaTimbrado
Descripción Atributo requerido para expresar la fecha y hora,
de la generación del timbre por la certificación
digital del SAT. Se expresa en la forma AAAA-
MM-DDThh:mm:ss y debe corresponder con la
hora de la Zona Centro del Sistema de Horario
en México.
Uso requerido
Tipo Especial tdCFDI:t_FechaH
RfcProvCertif
Descripción Atributo requerido para expresar el RFC del
proveedor de certificación de comprobantes
fiscales digitales que genera el timbre fiscal
digital.
Uso requerido
Tipo Especial tdCFDI:t_RFC_PM
Leyenda
Descripción Atributo opcional para registrar información que
el SAT comunique a los usuarios del CFDI.
Uso opcional
Tipo Base xs:string
Longitud Mínima 12
Longitud Máxima 150
Espacio en Colapsar
Blanco
Patrón ([A-Z]|[a-z]|[0-9]|
|Ñ|ñ|!|"|%|&|'|´|-
|:|;|>|=|<|@|_|,|\{|\}|`|~|á|é|í|ó|ú|Á|É|Í|Ó|Ú|ü|
Ü){1,150}
SelloCFD
Descripción Atributo requerido para contener el sello digital
del comprobante fiscal o del comprobante de
retenciones, que se ha timbrado. El sello debe
ser expresado como una cadena de texto en
formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Colapsar
Blanco
NoCertificadoSAT
Descripción Atributo requerido para expresar el número de
serie del certificado del SAT usado para generar
el sello digital del Timbre Fiscal Digital.
Uso requerido
Tipo Base xs:string
Longitud 20
Espacio en Colapsar
Blanco
Patrón [0-9]{20}
SelloSAT
Descripción Atributo requerido para contener el sello digital
del Timbre Fiscal Digital, al que hacen referencia
las reglas de la Resolución Miscelánea vigente.
El sello debe ser expresado como una cadena
de texto en formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Colapsar
Blanco
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
xmlns:tdCFDI="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI"
targetNamespace="http://www.sat.gob.mx/TimbreFiscalDigital"
elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI"
schemaLocation="http://www.sat.gob.mx/sitio_internet/cfd/tipoDatos/tdCFDI/tdCFDI.xs
d"/>
<xs:element name="TimbreFiscalDigital">
<xs:annotation>
<xs:documentation>Complemento requerido para el Timbrado Fiscal Digital que
da validez al Comprobante fiscal digital por Internet.</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="Version" use="required" fixed="1.1">
<xs:annotation>
<xs:documentation>Atributo requerido para la expresión de la versión del
estándar del Timbre Fiscal Digital</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="UUID" use="required" id="UUID">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar los 36 caracteres del folio
fiscal (UUID) de la transacción de timbrado conforme al estándar RFC
4122</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:length value="36"/>
<xs:pattern value="[a-f0-9A-F]{8}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-F]{4}-[a-f0-9A-
F]{12}"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="FechaTimbrado" use="required" type="tdCFDI:t_FechaH">
<xs:annotation>
Cadena Original
Se entiende como cadena original, a la secuencia de datos formada con la información
contenida dentro del timbre fiscal digital del SAT, establecida en el Rubro III.B.,
construida aplicando las siguientes reglas.
Reglas Generales:
1. Ninguno de los atributos que conforman al comprobante fiscal digital por Internet
debe contener el carácter | (pleca) debido a que éste es utilizado como carácter
de control en la formación de la cadena original.
2. El inicio de la cadena original se encuentra marcado mediante una secuencia de
caracteres || (doble pleca).
3. Se expresa únicamente la información del dato sin expresar el atributo al que
hace referencia. Esto es, si el valor de un campo es "A" y el nombre del campo
es "Concepto", sólo se expresa |A| y nunca |Concepto A|.
4. Cada dato individual se debe separar de su dato subsiguiente, en caso de existir,
mediante un carácter | (pleca sencilla).
5. Los espacios en blanco que se presenten dentro de la cadena original son
tratados de la siguiente manera:
a. Se deben reemplazar todos los tabuladores, retornos de carro y saltos de
línea por el carácter espacio (ASCII 32).
b. Acto seguido se elimina cualquier espacio al principio y al final de cada
separador | (pleca).
c. Finalmente, toda secuencia de caracteres en blanco se sustituye por un
único carácter espacio (ASCII 32).
6. Los datos opcionales no expresados, no aparecen en la cadena original y no
tienen delimitador alguno.
7. El final de la cadena original se expresa mediante una cadena de caracteres ||
(doble pleca).
8. Toda la cadena original se expresa en el formato de codificación UTF-8.
Secuencia de Formación
La secuencia de formación siempre se registra en el orden que se expresa a
continuación, tomando en cuenta las reglas generales expresadas en el párrafo anterior.
Atributos del elemento raíz TimbreFiscalDigital
1. Version
2. UUID
3. FechaTimbrado
4. RfcProvCertif
5. Leyenda
6. SelloCFD
7. NoCertificadoSAT
Ejemplo de cadena original de un timbre:
||1.1|ad662d33-6934-459c-a128-bdf0393e0f44|2001-12-
17T09:30:47|AAA010802QT9|ValorDelAtributoLeyenda|iYyIk1MtEPzTxY3h57kYJnEXN
ae9lvLMgAq3jGMePsDtEOF6XLWbrV2GL/2TX00vP2+YsPN+5UmyRdzMLZGEfESiNQ
F9fotNbtA487dWnCf5pUu0ikVpgHvpY7YoA4Lb1D/JWc+zntkgW+Ig49WnlKyXi0LOlBO
VuxckDb7Eax4=|12345678901234 567890||
Nota: El atributo selloCFD es el sello previo del Comprobante Fiscal Digital por Internet
o del comprobante de retenciones, el sello del timbre es guardado dentro del atributo
SelloSAT. Esta cadena original se sellada utilizando el algoritmo de digestión SHA-2 256
IV. Generalidades
A. De los distintos tipos de datos y catálogos.
Los tipos simples, complejos y catálogos a los que se hace referencia en los estándares
para los Comprobantes Fiscales Digitales y sus complementos, se publican en el Portal
del SAT.
V. Glosario
GTIN - Global Trade Item Number es un estándar para asignar el número de un artículo
comercial reconocido mundialmente, se utiliza para identificar de manera única al
artículo y permite obtener su información específica.