Contenido
Complemento de SPEI de Tercero a Tercero
1. Estándar del SPEI de Tercero a Tercero
2. Secuencia de Elementos a Integrar en la Cadena Original
3. Uso del Complemento SPEI Tercero a Tercero
1. Estándar del Complemento SPEI Tercero a Tercero
Estructura
Elementos
Elemento: Complemento_SPEI
Diagrama
Descripción
Complemento para el uso de SPEI Tercero a Tercero
Elementos Hijo (min,max)
Secuencia (1, 1) SPEI_Tercero (1, Ilimitado)
1
Elemento: SPEI_Tercero
Diagrama
Descripción
Estándar aplicable a operaciones de SPEI a terceros
2
Atributos
FechaOperacion
Descripción Fecha de operación con formato. Debe ser la misma que la
fecha de operación del sistema.
Uso requerido
Tipo Base xs:date
Valor Mínimo 0001-01-01
Incluyente
Valor Máximo 9999-12-31
Incluyente
Patrón ((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-
9])|(1[012]))-((0[1-9])|([12][0-9])|(3[01]))
Hora
Descripción hora del acreditamiento
Uso requerido
Tipo Base xs:time
Patrón (([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?
ClaveSPEI
Descripción Clave SPEI del Participante Emisor.
Uso requerido
Tipo Base xs:integer
Dígitos Totales 5
sello
Descripción Atributo requerido para contener el sello digital del
comprobante de pago. El sello deberá ser expresado cómo
una cadena de texto en formato Base 64.
Uso requerido
Tipo Base xs:string
Espacio en Blanco Colapsar
numeroCertificado
Descripción Atributo requerido para la identificación del certificado de
seguridad utilizado para el sello digital.
Uso requerido
Tipo Base xs:string
Longitud Máxima 20
Espacio en Blanco Colapsar
3
cadenaCDA
Descripción Atributo que contiene la información del CDA fidedigna que
la institución ha enviado a Banco de México.
Uso requerido
Tipo Base xs:string
Longitud Máxima 841
Elemento: Ordenante
Diagrama
Descripción
Elemento para describir los datos del ordenante del SPEI
4
Atributos
BancoEmisor
Descripción Atributo requerido para expresar el nombre del Banco o
Institución Financiera emisora del SPEI
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 40
Nombre
Descripción Nombre de la persona física o moral que ordena el envío
del pago.
Uso requerido
Tipo Base xs:string
Longitud Máxima 40
TipoCuenta
Descripción Categoría de la Cuenta a la que se efectuará el cargo por la
transferencia electrónica de fondos.
Uso requerido
Tipo Base xs:decimal
Dígitos Totales 2
Cuenta
Descripción Cuenta que deberá estar ligada al Tipo de Cuenta del
Ordenante, donde serán cargados los fondos.
Uso requerido
Tipo Base xs:decimal
Dígitos Totales 20
RFC
Descripción Corresponde al registro federal de contribuyentes o clave
única de registro de población del ordenante. Se pondrá ND
en caso de no tenerlo disponible
Uso requerido
Tipo Especial spei:tRFC
5
Elemento: Beneficiario
Diagrama
Descripción
Elemento para describir los datos del beneficiario del SPEI
6
Atributos
BancoReceptor
Descripción Atributo requerido para expresar el nombre del Banco o
Institución Financiera Receptora del SPEI
Uso requerido
Tipo Base xs:string
Longitud Mínima 1
Longitud Máxima 40
Nombre
Descripción Nombre de la persona física o moral receptora del pago.
Uso requerido
Tipo Base xs:string
Longitud Máxima 40
TipoCuenta
Descripción Categoría de la cuenta a la que se efectuará el abono por la
transferencia electrónica de fondos. Consultar Catálogo de
Tipos de Cuenta.
Uso requerido
Tipo Base xs:decimal
Dígitos Totales 2
Cuenta
Descripción Esta cuenta deberá estar ligada al campo Tipo de Cuenta
del Beneficiario, donde son abonados los fondos.
Uso requerido
Tipo Base xs:decimal
Dígitos Totales 20
RFC
Descripción Atributo requerido para la expresión del registro federal de
contribuyentes del beneficiario. Se pondrá ND en caso de
no estar disponible
Uso requerido
Tipo Especial spei:tRFC
Concepto
Descripción Descripción del motivo por el que el ordenante hace el pago
al beneficiario.
Uso requerido
Tipo Base xs:string
Longitud Máxima 40
7
IVA
Descripción Importes de IVA correspondientes al pago. El monto debe
ser mayor a cero y menor o igual a
9,999,999,999,999,999.99
Tipo Base xs:decimal
Dígitos Totales 19
Posiciones 2
Decimales
MontoPago
Descripción Atributo obligatorio para la expresión del monto de la
operación. Se trata de un entero positivo
Uso requerido
Tipo Base xs:decimal
Dígitos Totales 19
Valor Mínimo 1
Incluyente
Posiciones 2
Decimales
Tipos Complejos
Tipos Simples
Tipo Simple Global: tRFC
Descripción
Tipo definido para la expresión de RFC's de contribuyentes. Cabe hacer
la mención que debido a las reglas definidas por el estándar XML en el
caso de que un RFC dado incluya un carácter ampersand, dicho
carácter deberá ser expresado mediante la secuencia de escape
especificado como parte del estándar. En la definición del tipo se
expresa una longitud mínima y máxima, sin embargo la longitud puede
ser redefinida como una extensión según se determina el uso particular
Definición
Tipo Base xs:string
Longitud Mínima 2
Longitud Máxima 18
Espacio en Blanco Colapsar
8
Código Fuente
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:spei="[Link] xmlns:xs="[Link]
targetNamespace="[Link] elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="Complemento_SPEI">
<xs:annotation>
<xs:documentation>Complemento para el uso de SPEI Tercero a Tercero</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="SPEI_Tercero" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Estándar aplicable a operaciones de SPEI a terceros</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:all>
<xs:element name="Ordenante">
<xs:annotation>
<xs:documentation>Elemento para describir los datos del ordenante del SPEI</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="BancoEmisor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el nombre del Banco o Institución Financiera emisora del
SPEI</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Nombre" use="required">
<xs:annotation>
<xs:documentation>Nombre de la persona física o moral que ordena el envío del pago. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TipoCuenta" use="required">
<xs:annotation>
<xs:documentation>Categoría de la Cuenta a la que se efectuará el cargo por la transferencia electrónica de fondos.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Cuenta" use="required">
<xs:annotation>
<xs:documentation>Cuenta que deberá estar ligada al Tipo de Cuenta del Ordenante, donde serán cargados los
fondos. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RFC" type="spei:tRFC" use="required">
<xs:annotation>
<xs:documentation>Corresponde al registro federal de contribuyentes o clave única de registro de población del
ordenante. Se pondrá ND en caso de no tenerlo disponible</xs:documentation>
9
</xs:annotation>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="Beneficiario">
<xs:annotation>
<xs:documentation>Elemento para describir los datos del beneficiario del SPEI</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:attribute name="BancoReceptor" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para expresar el nombre del Banco o Institución Financiera Receptora del
SPEI</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Nombre" use="required">
<xs:annotation>
<xs:documentation>Nombre de la persona física o moral receptora del pago. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="TipoCuenta" use="required">
<xs:annotation>
<xs:documentation>Categoría de la cuenta a la que se efectuará el abono por la transferencia electrónica de fondos.
Consultar Catálogo de Tipos de Cuenta. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Cuenta" use="required">
<xs:annotation>
<xs:documentation>Esta cuenta deberá estar ligada al campo Tipo de Cuenta del Beneficiario, donde son abonados
los fondos. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:totalDigits value="20"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="RFC" type="spei:tRFC" use="required">
<xs:annotation>
<xs:documentation>Atributo requerido para la expresión del registro federal de contribuyentes del beneficiario. Se
pondrá ND en caso de no estar disponible</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="Concepto" use="required">
<xs:annotation>
<xs:documentation>Descripción del motivo por el que el ordenante hace el pago al beneficiario.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="IVA">
<xs:annotation>
10
<xs:documentation>Importes de IVA correspondientes al pago. El monto debe ser mayor a cero y menor o igual a
9,999,999,999,999,999.99 </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:fractionDigits value="2"/>
<xs:totalDigits value="19"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="MontoPago" use="required">
<xs:annotation>
<xs:documentation>Atributo obligatorio para la expresión del monto de la operación. Se trata de un entero
positivo</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minInclusive value="1"/>
<xs:totalDigits value="19"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attribute name="FechaOperacion" use="required">
<xs:annotation>
<xs:documentation>Fecha de operación con formato. Debe ser la misma que la fecha de operación del sistema.
</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:date">
<xs:maxInclusive value="9999-12-31"/>
<xs:minInclusive value="0001-01-01"/>
<xs:pattern value="((000[1-9])|(00[1-9][0-9])|(0[1-9][0-9]{2})|([1-9][0-9]{3}))-((0[1-9])|(1[012]))-((0[1-9])|([12][0-
9])|(3[01]))"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="Hora" use="required">
<xs:annotation>
<xs:documentation>hora del acreditamiento</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:time">
<xs:pattern value="(([01][0-9])|(2[0-3]))(:[0-5][0-9]){2}(\.[0-9]+)?"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="ClaveSPEI" use="required">
<xs:annotation>
<xs:documentation>Clave SPEI del Participante Emisor. </xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="5"/>
</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 de pago. El sello deberá ser
expresado cómo 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="numeroCertificado" use="required">
11
<xs:annotation>
<xs:documentation>Atributo requerido para la identificación del certificado de seguridad utilizado para el sello
digital.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="20"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="cadenaCDA" use="required">
<xs:annotation>
<xs:documentation>Atributo que contiene la información del CDA fidedigna que la institución ha enviado a Banco de
México.</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="841"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="tRFC">
<xs:annotation>
<xs:documentation>Tipo definido para la expresión de RFC's de contribuyentes. Cabe hacer la mención que debido
a las reglas definidas por el estándar XML en el caso de que un RFC dado incluya un carácter ampersand, dicho carácter
deberá ser expresado mediante la secuencia de escape especificado como parte del estándar. En la definición del tipo se
expresa una longitud mínima y máxima, sin embargo la longitud puede ser redefinida como una extensión según se determina
el uso particular</xs:documentation>
</xs:annotation>
<xs:restriction base="xs:string">
<xs:minLength value="2"/>
<xs:maxLength value="18"/>
<xs:whiteSpace value="collapse"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
2. Secuencia de Elementos a Integrar en la Cadena Original
Cadena Original
Se entiende como cadena original, a la secuencia de datos formada con la
información contenida dentro del CFDI, establecida en el anexo 20, rubro II.A
“Estándar de comprobante fiscal digital a través de internet”. Siguiendo para ello
las reglas y la secuencia aquí especificadas:
Reglas Generales:
1. Ninguno de los atributos que conforman al comprobante fiscal digital deberá
contener el carácter | (“pipe”) debido a que este será utilizado como
carácter de control en la formación de la cadena original.
2. La cadena original resultante del complemento será integrada a la cadena
original del comprobante de acuerdo con lo especificado en el anexo 20 de
la Resolución Miscelánea Fiscal vigente.
12
3. Se expresará únicamente la información del dato sin expresar el atributo al
que hace referencia. Esto es, si el atributo tipoOperación tiene el valor
“monedero” solo se expresará |monedero| y nunca |tipoOperacion
monedero|.
4. Cada dato individual se encontrará separado de su dato anterior, en caso
de existir, mediante un carácter | (“pipe” sencillo).
5. Los espacios en blanco que se presenten dentro de la cadena original
serán tratados de la siguiente manera:
a. Se deberán remplazar todos los tabuladores, retornos de carro y
saltos de línea por espacios en blanco.
b. Acto seguido se elimina cualquier carácter en blanco al principio y al
final de cada separador | (“pipe” sencillo).
c. Finalmente, toda secuencia de caracteres en blanco intermedias se
sustituyen por un único carácter en blanco.
6. Los datos opcionales, cuando no existan, no aparecerán expresados en la
cadena original y no tendrán delimitador alguno.
7. Toda la cadena de original se expresará en el formato de codificación UTF-
8
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 el párrafo
anterior.
a. Información del nodo spei:tercero
1. FechaOperacion
2. Hora
3. ClaveSPEI
4. sello
5. numeroCertificado
b. Información del nodo spei:Ordenante
1. BancoEmisor
2. Nombre
3. TipoCuenta
4. Cuenta
5. RFC
c. Información del nodo spei:Beneficiario
6. BancoReceptor
7. Nombre
8. TipoCuenta
9. Cuenta
10. RFC
13
11. Concepto
12. IVA
13. MontoPago
3. Uso del Complemento SPEI Tercero a Tercero
Para integrar el complemento tipo SPEI Tercero a Tercero a un CFDI, la estructura
resultante deberá integrarse como un nodo hijo del nodo
/Comprobante/Complemento. Adicionalmente a su inclusión, se deberá definir el
namespace correspondiente dentro del nodo Comprobante, así como referenciar
la ubicación pública del esquema xsd correspondiente.
Por ejemplo, asumiendo que el contribuyente requiere integrar el namespace
correspondiente al presente estándar se deberá incluir la referencia al namespace
aplicable ([Link] el cual se define mediante el esquema
público definido en [Link] y se
vincularía de la siguiente forma:
<Comprobante
…
xmlns:cfdi="[Link]
xmlns:xsi="[Link]
xmlns:spei="[Link]
xsi:schemaLocation="
[Link]
[Link]
[Link]
[Link]
….
</Comprobante>
La línea que especifica xml:xsi=”[Link]
indica que se está usando validación mediante el estándar de esquema XSD.
La línea que especifica xmlns=”[Link] hace referencia al
namespace de CFDI.
La línea que especifica xmlns:spei=”[Link] hace referencia
al namespace adicional del complemento aplicable para la expresión de SPEI_
Tercero.
Finalmente la línea que especifica xsi:schemaLocation hace referencia a los dos
namespaces usados, marcando adicionalmente la ubicación de los esquemas xsd
que definen las especificaciones de cada namespace.
14
En caso de que se requiriera agregar otros namespaces adicionales, el
mecanismo sería agregar una línea tipo xmlns definiendo el namespace y
expresando nuevamente el namespace y ubicación de su definición dentro del
atributo xsi:schemaLocation
Respecto de los nodos propios del estándar aplicable para el complemento de
SPEI_Tercero, este deberá utilizar el encabezado “spei”, Por ejemplo:
<Complemento>
<spei:Complemento_SPEI>
<spei:SPEI_Tercero/>
</spei:Complemento_SPEI>
<Complemento>
15