How to compose the cadena original for a CFD v3.3 document

Demonstrates how to compose the pipe string (cadena original) for the file cfdv33-base.xml. This example has every possible node completed, both required and optional. The values are random, but the XML is valid. See the SAT specification document cfdv33.pdf* pp 61-63 for details of the Secuencia de Formación.

* From ANEXO 20 de la Segunda Resolución de modificaciones a la Resolución Miscelánea Fiscal para 2017, publicada el 18 de julio de 2017, pdf document (2.38 MB) dated 2017-08-02.

Secuencia de FormaciónXMLCadena Original
1. Información del nodo Comprobante <cfdi:Comprobante xmlns:cfdi="http://www.sat.gob.mx/cfd/3" ||
a. Version Version="3.3" 3.3|
b. Serie Serie="A" A|
c. Folio Folio="123ABC" 123ABC|
d. Fecha Fecha="2017-05-01T01:23:59" 2017-05-01T01:23:59|
e. FormaPago FormaPago="02" 02|
f. NoCertificado NoCertificado="40001000000300000337" 40001000000300000337|
g. CondicionesDePago CondicionesDePago="CONDICIONES" CONDICIONES|
h. Subtotal SubTotal="1000" 1000|
i. Descuento Descuento="0.00" 0.00|
j. Moneda Moneda="MXN" MXN|
k. TipoCambio TipoCambio="1.0" 1.0|
l. Total Total="1500" 1500|
m. TipoDeComprobante TipoDeComprobante="I" I|
n. MetodoPago MetodoPago="PUE" PUE|
o. LugarExpedicion LugarExpedicion="45079" 45079|
p. Confirmacion Confirmacion="Az123" Az123|
>
2. Información del nodo CFDIRelacionados <cfdi:CfdiRelacionados
a. TipoRelacion TipoRelacion="02" 02|
b. Información de cada nodo CFDIRelacionado > <cfdi:CfdiRelacionado
nota: esta secuencia debe ser repetida por cada nodo InformacionAduanera [sic]
a. UUID UUID="ED1752FE-E865-4FF2-BFE1-0F552E770DC9" ED1752FE-E865-4FF2-BFE1-0F552E770DC9|
/> </cfdi:CfdiRelacionados>
3. Información del nodo Emisor <cfdi:Emisor
a. Rfc Rfc=" AAA010101AAA" AAA010101AAA|
b. Nombre Nombre="Esta es una demostración" Esta es una demostración|
c. RegimenFiscal RegimenFiscal="622" 622|
/>
4. Información del nodo Receptor <cfdi:Receptor
a. Rfc Rfc="BASJ600902KL9" BASJ600902KL9|
b. Nombre Nombre="Juanito Bananas De la Sierra" Juanito Bananas De la Sierra|
c. ResidenciaFiscal ResidenciaFiscal="MEX" MEX|
d. NumRegIdTrib NumRegIdTrib="987654321" 987654321|
e. UsoCFDI UsoCFDI="G03" G03|
/>
5. Información de cada nodo Concepto <cfdi:Conceptos><cfdi:Concepto
nota: esta secuencia debe ser repetida por cada nodo Concepto relacionadoz
a. ClaveProdServ ClaveProdServ="01010101" 01010101|
b. NoIdentificacion NoIdentificacion="00001" 00001|
c. Cantidad Cantidad="1.5" 1.5|
d. ClaveUnidad ClaveUnidad="C81" C81|
e. Unidad Unidad="TONELADA" TONELADA|
f. Descripcion Descripcion="ACERO" ACERO|
g. ValorUnitario ValorUnitario="1500000" 1500000|
h. Importe Importe="2250000" 2250000|
i. Descuento
j. Impuestos Traslado > <cfdi:Impuestos> <cfdi:Traslados><cfdi:Traslado
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="2250000" 2250000|
b. Impuesto Impuesto="002" 002|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="1.600000" 1.600000|
e. Importe Importe="360000" 360000|
/> </cfdi:Traslados>
k. Impuesto Retencion <cfdi:Retenciones> <cfdi:Retencion
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="2250000" 2250000|
b. Impuesto Impuesto="001" 001|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="0.300000" 0.300000|
e. Importe Importe="247500" 247500|
/> </cfdi:Retenciones> </cfdi:Impuestos>
l. InformacionAduanera
nota: esta secuencia debe ser repetida por cada nodo InformacionAduanera
a. NumeroPedimento
j. Información del nodo CuentaPredial <cfdi:CuentaPredial
a. Numero Numero="51888" 51888|
[Concepto repeats] /> </cfdi:Concepto> <cfdi:Concepto
a. ClaveProdServ ClaveProdServ="95141904" 95141904|
b. NoIdentificacion NoIdentificacion="00002" 00002|
c. Cantidad Cantidad="1.6" 1.6|
d. ClaveUnidad ClaveUnidad="WEE" WEE|
e. Unidad Unidad="TONELADA" TONELADA|
f. Descripcion Descripcion="ALUMINIO" ALUMINIO|
g. ValorUnitario ValorUnitario="1500" 1500|
h. Importe Importe="2400" 2400|
i. Descuento
j. Impuestos Traslado > <cfdi:Impuestos> <cfdi:Traslados><cfdi:Traslado
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="2400" 2400|
b. Impuesto Impuesto="002" 002|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="1.600000" 1.600000|
e. Importe Importe="384" 384|
/> </cfdi:Traslados>
k. Impuesto Retencion <cfdi:Retenciones> <cfdi:Retencion
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="2400" 2400|
b. Impuesto Impuesto="001" 001|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="0.300000" 0.300000|
e. Importe Importe="264" 264|
/> </cfdi:Retenciones> </cfdi:Impuestos>
l. InformacionAduanera <cfdi:InformacionAduanera
nota: esta secuencia debe ser repetida por cada nodo InformacionAduanera
a. NumeroPedimento NumeroPedimento="15  48  4567  6001234" 15 48 4567 6001234|
[repeats] /> </cfdi:Concepto> <cfdi:Concepto
a. ClaveProdServ ClaveProdServ="84101604" 84101604|
b. NoIdentificacion NoIdentificacion="00003" 00003|
c. Cantidad Cantidad="1.7" 1.7|
d. ClaveUnidad ClaveUnidad="G66" G66|
e. Unidad Unidad="TONELADA" TONELADA|
f. Descripcion Descripcion="ZAMAC" ZAMAC|
g. ValorUnitario ValorUnitario="10000" 10000|
h. Importe Importe="17000" 17000|
i. Descuento Descuento="0" 0|
j. Impuestos Traslado > <cfdi:Impuestos> <cfdi:Traslados><cfdi:Traslado
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="17000" 17000|
b. Impuesto Impuesto="002" 002|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="1.600000" 1.600000|
e. Importe Importe="2720" 2720|
/> </cfdi:Traslados>
k. Impuesto Retencion <cfdi:Retenciones> <cfdi:Retencion
nota: esta secuencia debe ser repetida por cada nodo Impuesto
a. Base Base="17000" 17000|
b. Impuesto Impuesto="001" 001|
c. TipoFactor TipoFactor="Tasa" Tasa|
d. TasaOCuota TasaOCuota="0.300000" 0.300000|
e. Importe Importe="1870" 1870|
/> </cfdi:Retenciones> </cfdi:Impuestos>
k. Información del nodo ComplementoConcepto de acuerdo
con lo expresado en el Rubro III.C.
[not used in this example]
l. Información de cada nodo Parte <cfdi:Parte
nota: esta secuencia debe ser repetida por cada nodo Parte relacionado
a. ClaveProdServ ClaveProdServ="25201513" 25201513|
b. NoIdentificacion NoIdentificacion="055155" 055155|
c. Cantidad Cantidad="1.0" 1.0|
d. Unidad Unidad="UNIDAD" UNIDAD|
e. Descripcion Descripcion="PARTE EJEMPLO" PARTE EJEMPLO|
f. ValorUnitario ValorUnitario="1.00" 1.00|
g. Importe Importe="1.00" 1.00|
h. InformacionAduanera > <cfdi:InformacionAduanera
nota: esta secuencia debe ser repetida por cada nodo InformacionAduanera
a. NumeroPedimentoNumeroPedimento="15  48  4567  6001235"15 48 4567 6001235|
/> </cfdi:Parte> </cfdi:Concepto> </cfdi:Conceptos>
6. Información de cada nodo Impuestos:Retencion<cfdi:Impuestos><cfdi:Retenciones><cfdi:Retencion
nota: esta secuencia debe ser repetida por cada nodo Retención relacionado
a. ImpuestoImpuesto="001"001|
b. ImporteImporte="247000"247000|
[repeats] /> <cfdi:Retencion
a. ImpuestoImpuesto="003"003|
b. ImporteImporte="500"500|
/> </cfdi:Retenciones>
7. Información del nodo Impuestos. [Caution: node out of order]
a. TotalImpuestosRetenidos [TotalImpuestosRetenidos="247500"] 247500|
8. Información de cada nodo Traslado <cfdi:Traslados> <cfdi:Traslado
nota: esta secuencia debe ser repetida por cada nodo Traslado relacionado.
a. Impuesto Impuesto="002" 002|
b. TipoFactor TipoFactor="Tasa" Tasa|
b. TasaOCuota TasaOCuota="1.600000" 1.600000|
c. Importe Importe="360000" 360000|
/> </cfdi:Traslados>
9. Información del nodo Impuestos. [Caution: node out of order]
a. TotalImpuestosTrasladados [TotalImpuestosTrasladados="360000"] 360000|
</cfdi:Impuestos>
</cfdi:Comprobante> |

The full pipe string (cadena original) is:

||3.3|A|123ABC|2017-05-01T01:23:59|02|40001000000300000337|CONDICIONES|1000|0.00|MXN|1.0|1500|I|PUE|45079|Az123|02|ED1752FE-E865-4FF2-BFE1-0F552E770DC9|AAA010101AAA|Esta es una demostración|622|BASJ600902KL9|Juanito Bananas De la Sierra|MEX|987654321|G03|01010101|00001|1.5|C81|TONELADA|ACERO|1500000|2250000|2250000|002|Tasa|1.600000|360000|2250000|001|Tasa|0.300000|247500|51888|95141904|00002|1.6|WEE|TONELADA|ALUMINIO|1500|2400|2400|002|Tasa|1.600000|384|2400|001|Tasa|0.300000|264|15 48 4567 6001234|84101604|00003|1.7|G66|TONELADA|ZAMAC|10000|17000|0|17000|002|Tasa|1.600000|2720|17000|001|Tasa|0.300000|1870|25201513|055155|1.0|UNIDAD|PARTE EJEMPLO|1.00|1.00|15 48 4567 6001235|001|247000|003|500|247500|002|Tasa|1.600000|360000|360000||

The SHA-256 digest of the cadena original expressed in hexadecimal is 0fc5c2312270ad4e5e12b757faa3934dc223cd83292d2d52d96fced494ec7c85.

To compute these values using FirmaSAT in the command line, do the following:

>FirmaSAT PIPESTRING cfdv33-base.xml
||3.3|A|123ABC|2017-05-01T01:23:59|02|40001000000300000337|CONDICIONES|...[cut]...|360000|360000||

>FirmaSAT FORMDIGEST cfdv33-base.xml
0fc5c2312270ad4e5e12b757faa3934dc223cd83292d2d52d96fced494ec7c85

This page first published 9 May 2017. Last updated 10 September 2025.