PAC
Documentación PAC
Legales
.
Queda estrictamente prohibida la reproducción total o parcial de este documento, por cualquier medio y para cualquier fin, sin la autorización previa y por escrito de Tralix México, S. de R.L. de C.V.
Este documento y su contenido pueden incluir, entre otros, marcas registradas, nombres comerciales, logotipos, avisos comerciales, diseños industriales y demás elementos protegidos por las leyes de propiedad industrial e intelectual. Todos estos signos distintivos son propiedad exclusiva de Tralix México, S. de R.L. de C.V., y están legalmente protegidos.
El acceso, posesión o consulta de este documento no otorga, en ningún caso, licencia ni derecho alguno para usar, reproducir, distribuir, modificar o explotar, total o parcialmente, los elementos distintivos de Tralix México. Cualquier uso no autorizado constituirá una infracción a la normativa aplicable y podrá dar lugar al ejercicio de acciones legales.
Tralix México se reserva el derecho de modificar, sin previo aviso, las especificaciones, características o alcances de sus productos y servicios.
Copyright © 2025 Tralix México, S. de R.L. de C.V. Todos los derechos reservados.
Timbrado PAC
1 Introducción
Como parte de los servicios de Tralix como Proveedor Autorizado de Certificación (PAC) para poder obtener un timbre fiscal digital y tener un CFDI completamente válido, el presente documento describe el mecanismo de invocación del servicio web de timbrado así como los posibles errores que se pudieran presentar al momento de la validación y la forma de manejarlos.
¿A quien va dirigido?
El presente documento está dirigido a desarrolladores que requiera consumir el servicio de timbrado de Tralix y supone que el lector cuenta con conocimientos y entendimiento de XML, SOAP, HTTP Headers y WSDL, por lo que cualquier explicación sobre los mismos esta fuera del alcance del presente documento.
2 WSDL | CFDI v4.0
El contrato del servicio puede ser descargado de la siguiente URL:
🔗 https://pac.tralix.com/TimbradoCFD4_0.wsdl
2.1. Consideraciones en la Definición del WSDL del Servicio
El WSDL del servicio de timbrado definido por el SAT solo permite mandar CFDI a timbrar con los siguientes complementos.
-
- Complemento para las Facturas Electrónicas emitidas por medio de un Proveedor Autorizado de Comprobantes Fiscales Digitales (PACFD).
- Complemento para el Estado de Cuenta de Combustibles para Monederos Electrónicos Autorizados por el SAT.
- Datos Requeridos para la Emisión de Facturas Electrónicas por Donativos “Donatarias”.
- Complemento para Facturas Electrónicas que amparen la compra - venta de “Divisas”.
- Complemento para la Emisión de Estados de Cuenta Bancario “ECB”.
- Complemento para Incluir Impuestos Locales en la Factura Electrónica.
- Complemento para Facturas Electrónicas del Sector de Ventas al Detalle “Detallista”.
Es importante hacer notar que el Complemento “Addenda” no debe ser incluido en el CFDI al momento de mandar timbrar.
3 Estructura del Servicio
3.1 Estructura general de la petición
Para poder timbrar en los ambientes de pre-producción y producción de Tralix, es necesario agregar dentro de las cabeceras HTTP con las que viaja la petición una nueva cabecera con el nombre de "CustomerKey", la cual contiene el identificador del cliente que realiza la petición.
El valor de esta cabecera le será proporcionado al momento de contratar algún paquete de timbrado y tiene que ser enviado en cada petición de timbrado que realice.
Endpoint
Para poder empezar a trabajar con los servicios de timbrado, es necesario que primero se realicen pruebas en el ambiente de pre-producción (Pruebas). En este ambiente podrá enviar comprobantes firmados con los certificados de prueba del SAT publicados en la siguiente dirección. Y también puede enviar comprobantes firmados su certificado real si así lo desea.
🔗 http://omawww.sat.gob.mx/tramitesyservicios/Paginas/certificado_sello_digital.htm
| Método | Ambiente | Ruta |
|---|---|---|
| POST | Pruebas |
|
| POST | Productivo | La dirección del ambiente de producción será proporcionada una vez terminadas las pruebas. |
Autenticación y Headers
| Header | Value |
content-type |
text/xml;charset=UTF-8 |
SOAPAction |
"http://urltimbrado.com/" |
CustomerKey |
Clave única del cliente asignada por Tralix |
Host |
urltimbrado |
Content-Length |
205 |
Namespaces
| Namespace | URL |
| soap | http://schemas.xmlsoap.org/wsdl/soap/ |
| soapenc | http://schemas.xmlsoap.org/soap/encoding/ |
| wsdl | http://schemas.xmlsoap.org/wsdl/ |
| xsd | http://www.w3.org/2001/XMLSchema |
| xsi | http://www.w3.org/2001/XMLSchema-instance |
| cfdi | http://www.sat.gob.mx/cfd/3 |
| tfd | http://www.sat.gob.mx/TimbreFiscalDigital |
Codificación de Caracteres
La codificación de todos los campos deberá de estar en UTF-8. Por lo que se deberá de limitar la información y los caracteres disponibles de este tipo de codificación.
3.2 Ejemplo de la petición
La petición que se manda al timbrador es el comprobante fiscal digital que se desea timbrar, el cual está especificado dentro del WSDL del servicio y se debe mandar dentro del elemento Body.
Ejemplo:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.sat.gob.mx/cfd/3">
<soapenv:Header/>
<soapenv:Body>
</soapenv:Body>
</soapenv:Envelope>
3.3 Ejemplo de respuesta
El servicio puede regresar dos tipos de respuestas:
1.- Un timbre fiscal digital, el cual representa un timbrado correcto y debe ser incluido dentro del nodo complemento del CFDI generado.
Ejemplo:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
<soapenv:Body>
<tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital"
FechaTimbrado="2022-01-10T09:47:32" UUID="694F4707-842C-49A9-A0D2-BC459CB97FE4"
NoCertificadoSAT="20001000000300022323"
SelloCFD="L8Ovst91fu+RjYKN0M8QNg2oE26gCsa4TQ/TrfMiDYnu5rwV/D/4NUpUpNlSFjh72ik6kD6lP4+XphGww9gyUEoPzMa9RBrSHbdhi4guQ3Fo1j0aAvz1FkI0AaQTy5A07CHD+E1NABJT/0MUMESN41vZ4YDVgzBZjOM1PW6XS6tJZBeKDGWF4Ko3GKAmng2mwj0kiPxOQYQHEw05OebChss18Waj1MtaHm6GO8JcuqOxiQSXWy1AAulFxd/oiSh4wkQxIBDB3POUzxWmaaSH9TfEpY4RasREQofQIDW6eYSIEolbXvkSOt9yroCAQ+vm0lhaH0xGsuB/SGArEVQeBQ=="
SelloSAT="FSc0uZrF50eJmf5K/pavIVKDo5ald44eIHau5IIVbOUyFnz7gzWrnEbRaBt9k6ECNwnbo3peThJXsS0PcjN/oD1i3GuTN95zuEdMYSX6PxTm/zpSSmDBuJfm/GLwGcEg3c4j4b3le7J+ff61cG2hGdG7I2xunkrpbjw1t5E4wIgsBdN4ghyERj02tBnaSGajUEbLqA1F8u7TBpNBvbf9EzsBx5sLOo130vBKr5WnQlwEv0lEAcfIQdHJCiTX/rxrqTr5Xei/uq1hV5aEnXyWlW4jATuhINn3b+iJEv7qQEf3goTw1fxre2MMgGPWi6GpstzR7mGpvvhyJmrQjgIN2g=="
Version="1.1" RfcProvCertif="TLE011122SC2" Leyenda="PRUEBA_LEYENDA_PRUEBA_LEYENDA"
xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/sitio_internet/cfd/TimbreFiscalDigital/TimbreFiscalDigitalv11.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>
</soapenv:Body>
</soapenv:Envelope>
2.- Un "Fault", el cual representa un error al momento de timbrar debido a que el comprobante no cumple con todos los requisitos necesarios para ser timbrado. Este mensaje contiene el código y la descripción del error que se presentado.
Ejemplo:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cfdi="http://www.sat.gob.mx/cfd/3">
<soapenv:Body>
<soapenv:Fault>
<detail>
<cfdi:Error codigo="SAT301">
<cfdi:descripcionError>XML Mal formado</cfdi:descripcionError>
</cfdi:Error>
</detail>
</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>
4 Listado de códigos de error y descripciones
| Código | Descripción |
| 301 |
El XML no está construido conforme al W3C y/o con la estructura del XSD publicado en el Anexo 20 del RMF |
| 302 | El sello del emisor no está generado correctamente. |
| 303 | El CSD del emisor no corresponda al RFC establecido como emisor del comprobante. |
| 304 | El CSD del emisor ha sido revocado |
| 305 | La fecha de emisión no se encuentre dentro de la vigencia del CSD del emisor. |
| 306 | El certificado utilizado corresponde a una FIEL |
| 307 | El XML ya cuenta con un nodo TimbreFiscalDigital |
| 308 | El CSD del emisor no es un certificado emitido por la autoridad del SAT |
| 401 | El rango de la fecha de generación es mayor a 72 horas con base en la fecha de emisión |
| 402 | El RFC del emisor no está autorizado para emisión de CFDI (no se encuentra en la lista autorizada del SAT) |
| 403 | La fecha de emisión es anterior al 1ero de Enero 2011. |
| 901 | El cliente con el key #CUSTOMER_KEY no es válido. |
| 902 | El RFC #RFC no está registrado. |
| 903 | El RFC #RFC se encuentra inactivo por el momento. |
| 904 | No cuenta con licencia para realizar peticiones. |
| 905 | El RFC #RFC no pertenece al cliente con el key #KEY |
| 906 | Ha expirado su periodo de pruebas. |
| 907 | Debe invocar al servicio con el customerkey que le fue asignado. |
| 908 | El hash ya existe en la base de datos. |
| 909 | Petición incorrecta, el nodo cfdi:Comprobante debe estar dentro del cuerpo del mensaje (soapenv:Body). |
| 910 | No se puede determinar el cliente a partir del RFC #RFC, verifique que el valor de la cabecera de customerkey. |
| 998 | Error en el cliente. |
| 999 | Error interno en el servidor, por favor intente más tarde. |
Nota: Las palabras que contiene el carácter # al principio son reemplazadas con su valor correspondiente.
5 Contacto y Soporte
Para soporte técnico o dudas sobre el uso del servicio, puede comunicarse con el área de soporte técnico de Tralix vía ticket.
Retenciones
Timbrado y Cancelación de CFDI de Retenciones
Producto: PAC Timbrador
1 Introducción
Este manual describe el uso de los servicios del PAC Tralix para:
-
Timbrado de CFDI de Retenciones.
-
Cancelación de CFDI de Retenciones.
El servicio valida:
-
Estructura del XML
-
Certificados y sellos digitales
-
Reglas del SAT
-
Parámetros de seguridad (customer key, IP, etc.)
Todas las respuestas del servicio regresan un HTTP 200, incluso en casos de error, salvo en los casos en que el recurso que se pide no exista, entonces regresa un 404 o cuando faltan parámetros en la llamada en cuyo caso se devuelve un un 400 respectivamente.
2 Timbrado de CFDI de Retenciones
2.1 Estructura general de la petición
El servicio se invoca mediante una petición HTTP tipo POST, enviando un archivo XML de retenciones conforme a la estructura del SAT.
2.2 Parámetros requeridos
Ambientes disponibles:
Endpoint
| Método | Ambiente | Ruta |
| POST | Pruebas | 🔗 https://pruebastfd.tralix.com:7070/retenciones/ |
| POST | Productivo | 🔗 https://timbrador.tralix.com:7070/retenciones/ |
Parámetros
| Atributo | Tipo | Uso | Descripción |
|---|---|---|---|
Content-Type |
Header | Requerido | text/xml; charset=UTF-8. El valor debe de ser tal cual se muestra. |
customerKey |
Header | Requerido |
Clave única del cliente que desea timbrar el comprobante de retenciones. |
Contenido |
Body | Requerido | XML del comprobante de retenciones |
2.3 Ejemplo de la petición:
HTTP:
POST /retenciones/ HTTP/1.1
Content-Type: text/xml;charset=UTF-8
customerKey: b391655ac2242d85ddd36d37b482259b1b7dfc1a
Content-Length: 4506
Host: timbrador.tralix.com
Connection: Keep-Alive
XML Cuerpo (Body):
<retenciones:Retenciones xmlns:retenciones="http://www.sat.gob.mx/esquemas/retencionpago/2"
Version="2.0" FolioInt="1635996">
<!-- Nodo Emisor, Receptor, Totales y Complemento -->
</retenciones:Retenciones>
Ejemplo:
HTTP:
POST /retenciones/ HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml;charset=UTF-8
customerkey: b391655ac2242d85ddd36d37b482259b1b7dfc1a
Content-Length: 4506
Host: 10.0.4.122:9000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
XML Cuerpo (Body):
<retenciones:Retenciones xmlns:plataformasTecnologicas="http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10" xmlns:retenciones="http://www.sat.gob.mx/esquemas/retencionpago/2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.sat.gob.mx/esquemas/retencionpago/2 http://www.sat.gob.mx/esquemas/retencionpago/2/retencionpagov2.xsd http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10 http://www.sat.gob.mx/esquemas/retencionpago/1/PlataformasTecnologicas10/ServiciosPlataformasTecnologicas10.xsd
" Version="2.0" FolioInt="1635996" Sello="Gjlntz9bWr84DS9HVNvWIzIejCaZqnZbIKbCaQ+QNZeVsxsCj0fYesuqNiPPqDpsDTrXL551NzDIOn8HzaGhP6f1f1tORfRR9Nsz+dwtyZzRHHtnDR5jOqTcUqXhJz+7j2VQz+08xsoShL0DGhuoxfq7l4vnXxl2ixGdg0aSpn2YaLtPsCEMbsLVPApYlB697IIvqfKJ8zqVVIpqxikPhHjkIT2Wl5zE2i0Qq6015/L1AHBliquUnS94KMdBzWzTsv2goZxWh6xI46EZkDyr
SbaMLJnZquEtjbq3/gVjBqG5ik4/iO0UOmoWxR6L7TlXowRKP1UqIgHwDv7ef1JXdQ==" NoCertificado="30001000000500003430" Certificado="MIIFszCCA5ugAwIBAgIUMzAwMDEwMDAwMDA1MDAwMDM0MzAwDQYJKoZIhvcNAQELBQAwggErMQ8wDQYDVQQDDAZBQyBVQVQxLjAsBgNVBAoMJVNFUlZJQ0lPIERFIEFETUlOSVNUUkFDSU9OIFRSSUJVVEFSSUExGjAYBgNVBAsMEVNBVC1JRVMgQXV0aG9yaXR5MS
gwJgYJKoZIhvcNAQkBFhlvc2Nhci5tYXJ0aW5lekBzYXQuZ29iLm14MR0wGwYDVQQJDBQzcmEgY2VycmFkYSBkZSBjYWxpejEOMAwGA1UEEQwFMDYzNzAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBDSVVEQUQgREUgTUVYSUNPMREwDwYDVQQHDAhDT1lPQUNBTjERMA8GA1UELRMIMi41LjQuNDUxJTAjBgkqhkiG9w0BCQITFnJlc3BvbnNhYmxlOiBBQ0RNQS1TQVQwHhcNMjMwNTE4MTI0MDI2WhcNMjcwNTE4MTI0MDI2WjCB
2jEoMCYGA1UEAxMfRVNDVUVMQSBXSUxTT04gRVNRVUlWRUwgUyBERSBDVjEoMCYGA1UEKRMfRVNDVUVMQSBXSUxTT04gRVNRVUlWRUwgUyBERSBDVjEoMCYGA1UEChMfRVNDVUVMQSBXSUxTT04gRVNRVUlWRUwgUyBERSBDVjElMCMGA1UELRMcRVdFMTcwOTA0NVUwIC8gVkFEQTgwMDkyN0RKMzEeMBwGA1UEBRMVIC8gVkFEQTgwMDkyN0hTUlNSTDA1MRMwEQYDVQQLEwpTdWN1cnNhbCAxMIIBIjANBgkqhkiG9w0BAQEFAA
OCAQ8AMIIBCgKCAQEA5V00mF+ucoj8mItceE086i12hPoyH3fK6BGQCPU1vGx3K8etHev7GASu3dYF3TA4X5ypTRAKaCzyI7v53uLZpQAWhmvTIMhYBtGDhQ7RR5GyWzaUDIhtNpO55xrmb2+O4FzkuYbOvnSOPZ6qZRySI168+N/aZCcEPaZVsFbCOnp6FHe9GhqLD1ZwsIRUdLEC7ml4WbG1+jfmCxx/c/+JtcLL9nUBIvMFu1px6ZoYRV/LhrwxtJ7D4BPss/WfBxMpId19hYfzAULYBYRWVP1l+4JTC0fHnyaflBQXH8yvCYXs
EIX++lKGTmvL4QESIUdzGLSj7pXt3cdk5mHK2FHHxQIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQsFAAOCAgEAjTvAc61X98kmDGSfH7RfTnMb6QdDujISjPM2/rZ6Fde0NeQrshDvOffkXLq8f2n6D1m5GpHkwYvq0GUAyBmBoSLuJPPbLp87i/Dj64nqHKIVIQCTK2867MEbxe7ToAMlaIfJ6f1gR1kNANoc/i204PESIuPrUkNgK7pjsDURfsVK8XF7w2dxo2Vn5J+KSTykEjSZce7EvT
FtjYHhASq61wziommRn4BSmMl+7WYv/FFBl53pJLaJG0Hsog7s8+V9QtPhcq6Cua7D+oOnjnuhDDIXs1UhIkqMPli9jdVjhbthjIP5CDUvb8jO8VJbLWjHgcBXxrGRZzzlajQkRQ+QbgqDU56ePIFZY02BQsjjE1DYBXeM3pwz5ZWKS+HioAu1quDUt92B9skfqNHzvelZMIuEz2lg10pdJiF5TbhS4mtxF77QK0UaGWOOsVuQ6zfI9eJ9j9bZnMfxj6wLChXcY07L5ckN/1A1o0CVMo5vYcEwz9X7lESjwZgiaNQQwApBEOGHyClU
/FyNGFVgH1wFhql+z9Fe7EXnDLCPeu8t8SOENBgINVh4WLsOgY9ll/rOvwEpZ0jVMOwaz2vX4kW9hE/s1q9QuIsBRaDpwz+H6ONPBxkfENiAWWIFn4oM7kZjW3h9VMVirK+YAMjIPbcSEsYLMh9WNVcZmionA3ZHSjY=" FechaExp="2024-12-19T12:16:10" CveRetenc="26" LugarExpRetenc="03940">
<retenciones:Emisor RfcE="EWE1709045U0" NomDenRazSocE="ESCUELA WILSON ESQUIVEL" RegimenFiscalE="601"/>
<retenciones:Receptor NacionalidadR="Nacional">
<retenciones:Nacional RfcR="FAGO841020JS2" NomDenRazSocR="OSCAR RAFAEL FRANCO GONZALEZ" DomicilioFiscalR="72410"/>
</retenciones:Receptor>
<retenciones:Periodo MesIni="02" MesFin="02" Ejercicio="2024"/>
<retenciones:Totales MontoTotOperacion="3100.86" MontoTotGrav="3100.86" MontoTotExent="0.00" MontoTotRet="279.06" UtilidadBimestral="0" ISRCorrespondiente="0">
<retenciones:ImpRetenidos BaseRet="496.13" ImpuestoRet="002" MontoRet="248.06" TipoPagoRet="01"/>
<retenciones:ImpRetenidos BaseRet="3100.86" ImpuestoRet="001" MontoRet="31.00" TipoPagoRet="04"/>
</retenciones:Totales>
<retenciones:Complemento>
<plataformasTecnologicas:ServiciosPlataformasTecnologicas Version="1.0" Periodicidad="02" NumServ="1" MonTotServSIVA="3100.86" TotalIVATrasladado="496.1376" TotalIVARetenido="248.06" TotalISRRetenido="31.00" DifIVAEntregadoPrestServ="248.0776" MonTotalporUsoPlataforma="1145.18">
<plataformasTecnologicas:Servicios>
<plataformasTecnologicas:DetallesDelServicio FormaPagoServ="08" TipoDeServ="05" FechaServ="2024-02-29" PrecioServSinIVA="3100.86">
<plataformasTecnologicas:ImpuestosTrasladadosdelServicio Base="3100.86" Impuesto="02" TipoFactor="Tasa" TasaCuota="0.16" Importe="496.1376"/>
<plataformasTecnologicas:ComisionDelServicio Importe="1145.18"/>
</plataformasTecnologicas:DetallesDelServicio>
</plataformasTecnologicas:Servicios>
</plataformasTecnologicas:ServiciosPlataformasTecnologicas>
</retenciones:Complemento>
</retenciones:Retenciones>
2.4 Ejemplo de respuesta
Salida: El xml del timbre o xml con error.
Respuesta exitosa:
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Content-Length: 1111
<?xml version="1.0" encoding="utf-8"?>
<tfd:TimbreFiscalDigital xmlns:tfd="http://www.sat.gob.mx/TimbreFiscalDigital" xsi:schemaLocation="http://www.sat.gob.mx/TimbreFiscalDigital http://www.sat.gob.mx/TimbreFiscalDigital/TimbreFiscalDigital.xsd" version="1.0" UUID="5DBA5276-EFD7-4933-9312-A93228508B49" FechaTimbrado="2015-01-02T12:15:01" selloCFD="H8Eoo93RfhyV28PlXVBXRuu4tYIVR8Qu6jcqZA8V032l0pkkrzh30mcxbyWRPzNzJc7pZdMItD1ffsS+NnpQEGgB1rJlnI7wFhvJLkk3nQQ6jWVJdMTgXvFxPcCtH4d1FYL/4NcLw1XF6PWEM/vkQp1QeUovRoWqQQpDUa3kx0RGN5Ed8mz8cBh5q38GkfyqlrYoi2cF40w3S4oclfmLTONdF4moOVS8WcXPh4S1f0NQHNF0GDUNMvQaGGI+95UYg1101x70uPEPa3vaBCUWBy7ab2zfELFy8UOpreXEVXzFsnMkY4jwDLcAaSSZjBpnYkmkkEWZNB7Mj2QCkdE1lg==" noCertificadoSAT="20001000000300003693" selloSAT="rQ4u/te+tikTs6n+deDt8uqqH1PrkeDClLjcL96b3e0gSLLwUpGJkhWnKmRuaK9bIB+TJjJboJoacRcdSk3grUhC+U9DIUlX20FwXUKQIlEBJMHevzu6nK3KMKUEkvt9dr4ufSNtwva++DsRw0v6Is1uQcjWKz9lxBazLjUVRAk=" />
Respuesta con error:
HTTP/1.1 200 OK
Content-Type: text/xml;charset=utf-8
Content-Length: 356
<?xml version="1.0" encoding="utf-8"?>
<Error codigo="301">
<descripcionError> El CFD no cumple con la estructura correcta: org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 141; The element type "retenciones:Emisores" must be terminated by the matching end-tag "</retenciones:Emisores>".</descripcionError>
</Error>
2.5 Códigos de respuesta
| Código | Tipo | Descripción |
|---|---|---|
| 200 | SUCCESS | Se pudo hacer la autenticación con el SAT y se regresa el token dado por el servicio del SAT. |
| 400 | ERROR | Si hay un error en los parámetros de llamada, por ejemplo si la petición no es cancelación o recepción |
| 500 | ERROR | Si hay algún error interno en el servicio |
| Código | Tipo | Descripción |
|---|---|---|
| 200 | SUCCESS | Se pudo timbrar el comprobante y se regresa el timbre. |
| 301 | ERROR | El XML no está construido conforme al W3C y/o con la estructura del XSD publicado en el Anexo 20 del RMF |
| 302 | ERROR | El sello del emisor no está generado correctamente. |
| 303 | ERROR | El CSD del emisor no corresponda al RFC establecido como emisor del comprobante. |
| 304 | ERROR | El CSD del emisor ha sido revocado |
| 305 | ERROR | La fecha de emisión no se encuentre dentro de la vigencia del CSD del emisor. |
| 306 | ERROR | El certificado utilizado corresponde a una FIEL |
| 307 | ERROR | El XML ya cuenta con un nodo TimbreFiscalDigital |
| 308 | ERROR | El CSD del emisor no es un certificado emitido por la autoridad del SAT |
| 401 | ERROR | El rango de la fecha de generación es mayor a 72 horas con base en la fecha de emisión |
| 402 | ERROR | El RFC del emisor no está autorizado para emisión de CFDI (no se encuentra en la lista autorizada del SAT) |
| 901 | ERROR | El cliente con el key #CUSTOMER_KEY no es válido. |
| 902 | ERROR | El RFC #RFC no está registrado |
| 903 | ERROR | El RFC #RFC se encuentra inactivo por el momento |
| 904 | ERROR | No cuenta con licencia para realizar peticiones |
| 905 | ERROR | El RFC #RFC no pertenece al cliente con el key #KEY |
| 907 | ERROR | Debe invocar al servicio con el customerkey que le fue asignado |
| 910 | ERROR | No se puede determinar el cliente a partir del RFC #RFC, verifique que el valor de la cabecera de customerkey |
| 990 | ERROR | Su comprobante es válido, pero no se puede generar un timbre fiscal por el momento. |
| 999 | ERROR | Error interno en el servidor, por favor intente más tarde |
3 Cancelación de CFDI de Retenciones
3.1 Estructura general
El servicio permite cancelar CFDI de retenciones conforme al estándar del SAT, haciendo validaciones de estructura, firma y relación emisor-UUID. Este servicio recibe el xml de cancelación de retenciones de acuerdo al estándar del SAT, hace las validaciones necesarias de estructura, hace la petición de token de cancelación y manda a cancelar con el xml proporcionado.
Ambientes disponibles:
Endpoint
| Método | Ambiente | Ruta |
| POST | Producción | 🔗 https://timbrador.tralix.com:8081/retenciones/cancelaUno/ |
| POST | Pruebas | 🔗 https://pruebastfd.tralix.com:8081/retenciones/cancelaUno/ |
3.2 Parámetros requeridos
| Parámetro | Tipo | Uso | Descripción |
|---|---|---|---|
| Content-Type | Header | Requerido | text/xml; charset=UTF-8, el valor debe de ser tal cual se muestra. |
| idCustomer | Header | Requerido | Customer key del cliente que desea cancelar el comprobante de retenciones. |
| ipAddress | Header | Requerido | IP con la que se está intentado cancelar. |
| Contenido | Body | Requerido | XML de cancelación de acuerdo al estándar del SAT. |
3.3 Ejemplo de petición
HTTP:
POST /retenciones/cancelaUno/ HTTP/1.1
Content-Type: text/xml; charset=UTF-8
idCustomer: b391655ac2242d85ddd36d37b482259b1b7dfc1a
ipAddress: 10.0.0.88
Cuerpo (Body):
<Cancelacion xmlns="http://cancelaretencion.sat.gob.mx" Fecha="2024-12-31T13:14:53" RfcEmisor="GAVA730717AE1">
<Folios>
<UUID>0E6F67DD-6765-46EC-9447-D8CD759D2286</UUID>
</Folios>
<Signature>...</Signature>
</Cancelacion>
HTTP:
POST /retenciones/cancelaUno/ HTTP/1.1
Accept-Encoding: gzip,deflate
Content-Type: text/xml; charset=UTF-8
idCustomer: b391655ac2242d85ddd36d37b482259b1b7dfc1a
ipAddress: 10.0.0.88
Content-Length: 4007
Host: 10.0.4.122:9000
Connection: Keep-Alive
User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
Cuerpo (Body):
<Cancelacion xmlns="http://cancelaretencion.sat.gob.mx" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Fecha="2014-12-31T13:14:53" RfcEmisor="GAVA730717AE1"><Folios><UUID>0E6F67DD-6765-46EC-9447-D8CD759D2286</UUID></Folios><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"></CanonicalizationMethod><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"></SignatureMethod><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"></DigestMethod><DigestValue>WMQbS6vPsNK9Qj0ItYXpT2MORWA=</DigestValue></Reference></SignedInfo><SignatureValue>GlFeSOMtP7gHMHXF0XT2XmqsS1f2Qg6xINwmO6V6K3ft8s4O3MoSw6fxnxEFLlOeojOadSaPL+py
OJSQqIF8XChyeE2J1dAdvqmZV3jWN2jX0TyY3FwBd/QClVY3vLvIxIiroJgkGeduefYy3DC4cC6V
QwvwAkTwRi9SnYuROb5f/NAmsLnB5aTLTen0eNDS8PFTnMfkxnb5e5dP+aBxV4wo5oANez11ABYu
1OctfRcdVuJ371Hr16qUSgFGi6kCYJ1TIwj07qdXOaDK+FebNYBOQzwqd0AQRSYADUBeJRtBiaWl
h6ij/NsHBjvboz1m8uBGsUsOJOCAAG13CSIOSQ==</SignatureValue><KeyInfo><X509Data><X509IssuerSerial><X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: ACDMA, OID.2.5.4.45=SAT970701NN3, L=Coyoac[0xc3][0xa1]n, ST=Distrito Federal, C=MX, OID.2.5.4.17=06300, STREET="Av. Hidalgo 77, Col. Guerrero", EMAILADDRESS=asisnet@pruebas.sat.gob.mx, OU=Administraci[0xc3][0xb3]n de Seguridad de la Informaci[0xc3][0xb3]n, O=Servicio de Administraci[0xc3][0xb3]n Tributaria, CN=A.C. 2 de pruebas(4096)</X509IssuerName><X509SerialNumber>286524172099382162235533054548081509954831791922</X509SerialNumber></X509IssuerSerial><X509Certificate>MIIGEDCCA/igAwIBAgIUMjAwMDEwMDAwMDAzMDAwMDQ4NzIwDQYJKoZIhvcNAQELBQAwggFmMSAw
HgYDVQQDDBdBLkMuIDIgZGUgcHJ1ZWJhcyg0MDk2KTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRt
aW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1
cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMSkwJwYJKoZIhvcNAQkBFhphc2lzbmV0QHBydWViYXMu
c2F0LmdvYi5teDEmMCQGA1UECQwdQXYuIEhpZGFsZ28gNzcsIENvbC4gR3VlcnJlcm8xDjAMBgNV
BBEMBTA2MzAwMQswCQYDVQQGEwJNWDEZMBcGA1UECAwQRGlzdHJpdG8gRmVkZXJhbDESMBAGA1UE
BwwJQ295b2Fjw6FuMRUwEwYDVQQtEwxTQVQ5NzA3MDFOTjMxITAfBgkqhkiG9w0BCQIMElJlc3Bv
bnNhYmxlOiBBQ0RNQTAeFw0xNDEwMDgxNTA5MzBaFw0xODEwMDcxNTA5MzBaMIHKMSAwHgYDVQQD
ExdIRUNUT1IgVkFaUVVFWiBCRUNFUlJJTDEgMB4GA1UEKRMXSEVDVE9SIFZBWlFVRVogQkVDRVJS
SUwxIDAeBgNVBAoTF0hFQ1RPUiBWQVpRVUVaIEJFQ0VSUklMMQswCQYDVQQGEwJNWDEgMB4GCSqG
SIb3DQEJARYRcHJ1ZWJhQHNhdC5nb2IubXgxFjAUBgNVBC0TDUdBVkE3MzA3MTdBRTExGzAZBgNV
BAUTEkdBVkE3MzA3MTdIREZSR1IwNTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJjn
MOxpkQkTGXmJpXf0qnBSRatOtkbi8c0iHAKYS1XASXrxkJLXt2ZkFg83EkkZxyRZ7+5qFG7qKUET
3BDmdLW8RTBuWSLzonlUAjNfSTjuNNG0ZNxpTGHHsOenRUfPwNx9yopzU6YKHAfNoeoyXsbsLg1I
yezal/vu86pa5Bonb/hTj6GMHg7Wj7oFit3ilVUu5Bc9a1djT3JJVuCXaT+Mspd3UiwtYxZihD4h
ZhuT8wqYEFfulUykofIeuexCKBdV6ugaD9Ub1/GOyhzNymYzM1WlPfgKxCed6KQ1CaJLM3jo3U79
izakxfH45ghlol7SxXHidF3tYpgknv6TgU8CAwEAAaNPME0wDAYDVR0TAQH/BAIwADALBgNVHQ8E
BAMCA9gwEQYJYIZIAYb4QgEBBAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMEBggrBgEFBQcDAjAN
BgkqhkiG9w0BAQsFAAOCAgEAkRIj1K/mOCyd/cyxb9m9HpAWgUUwKG00gQXwiM6cJYMGhjk6e2kc
lCUPUnp2Ct8Gn4JoHA8jTI8JOv1C7sJor0eO+xAtElvYh4d7NmGZvpZ1BkCt43EAt0gq/NVH37GL
WuPC934dlLiq0m9Tv/7UqjVKQKWAKnQc008GJTY+vI8bk1rRctY6RqvhiKnDcwJeNvQfWAnFUJ2L
6+ffphvbvuuWZrAvi8CNIZ6ZFwCkGpFAoKXErPTy4lyTPfsPpg5B6BxhskJH5g5QL8KrpkCheMHg
YfQv+YxOKK8ohpcxaEK+CF/QQkfWGSfzTjKO/fN+uht18UYiuGblwXkGV+N0OLPQZUzjtwEJSLFH
LI+3BuDU96baJXmxC31RhdNnRepqoKtALKNVDadpaoCZtTICb6y1FAvI31RrPOUh1O7GbGGhqGQL
96eD3q8UvG99/FRc0Ah4xRCjOg52TLbnhx7eQFA2HIccRBdceELUSGE3YoadB6q1AE68Q6hfP8Oh
i20TvgmLZOTfncVIqszK3jn+e71nYCQdH1D6ZsLIx0L5h7CiWRvliiMulloiA9UxjJ1nwssVNHgN
BhqAOFPw0rYnHrsbcKW5yiNPAhZinqPVdxBWgeIP3ClyhhrV5jG6GxEUQcf0CWdwHLYTxcWksqqB
vkRhj++ft29e5p/lm47XThE=</X509Certificate></X509Data></KeyInfo></Signature></Cancelacion>
3.4 Ejemplo de respuesta
Salida: El XML del acuse o el ERROR dado por el SAT o por negocio.
Respuesta exitosa
Ejemplo de salida satisfactoria con código http 200 y código de status 1201:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1501
Content-Type: application/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 31 Dec 2014 19:17:53 GMT
<?xml version="1.0"?>
<Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Fecha="2014-12-31T13:17:53.0816119" RfcEmisor="GAVA730717AE1" WorkProcessId="108fe0ae-0402-41ea-b603-bba3b338057e" xmlns="http://www.sat.gob.mx/esquemas/retencionpago/1">
<Folios>
<UUID>CF93C8F6-E9EE-4AD5-9CC0-4E771CE726B6</UUID>
<EstatusUUID>1201</EstatusUUID>
</Folios>
<Signature Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" /><DigestValue>XG1pp/m3TuS2j971YCxqMa7aTi2MW/pHNElJwEzFB9So5QEjgcRXnyC4xoEJDG5yZF8yqo9aNWuDMkfwAvQKQA==</DigestValue></Reference></SignedInfo><SignatureValue>s8trd9ZLoW2axhyXXssfa4MeBrCK0T5p1JfuRGOFbj8JCF5f3+hqgx5tSyvuEWo3leDGpSs7gmYjgBCc4xF7gw==</SignatureValue><KeyInfo><KeyName>20001000000300003586</KeyName><KeyValue><RSAKeyValue><Modulus>n77fbi0dTENVn43LCUOIF/8iyQObFg/AaTRBdpf0fVuozOOy48INue46sN54AHL+I50s1U8Nh6Dq+MRvRNc8WyHPQWsnmSaicT5vAkkzqucVj004WyLcmpysY45DrCxSitPMRzop3XboPr1msWd3EuyduUtbu3QmNRin8uzpYg8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo>
</Signature>
</Acuse>
Ejemplo de salida de error con código http 200 y código de status 1XXX:
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 1409
Content-Type: application/xml; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Date: Wed, 31 Dec 2014 20:46:59 GMT
<?xml version="1.0"?>
<Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" CodEstatus="1301" Fecha="2014-12-31T14:46:59.5187095" RfcEmisor="" WorkProcessId="238a0fec-8004-426d-a846-cd69103f7288" xmlns="http://www.sat.gob.mx/esquemas/retencionpago/1">
<Signature Id="SelloSAT" xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /><SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#hmac-sha512" /><Reference URI=""><Transforms><Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116"><XPath>not(ancestor-or-self::*[local-name()='Signature'])</XPath></Transform></Transforms><DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha512" /><DigestValue>KVsuu6MBIq35WvJZ4regrxHPg9UEtiMizXsX14P6o2Dm0UbI1BHz7xUW5AqZ5HzY399PTzRSAPgmT8DEDQQjkg==</DigestValue></Reference></SignedInfo><SignatureValue>LpABcSjt+vbvRp876GcR0l1UajX5Z5P6/f4qilRyIH1Y06DWYbmy74Fnc3iyKtTqXDSPkPzg7J3Ktfyc7WbSuw==</SignatureValue><KeyInfo><KeyName>20001000000300003586</KeyName><KeyValue><RSAKeyValue><Modulus>n77fbi0dTENVn43LCUOIF/8iyQObFg/AaTRBdpf0fVuozOOy48INue46sN54AHL+I50s1U8Nh6Dq+MRvRNc8WyHPQWsnmSaicT5vAkkzqucVj004WyLcmpysY45DrCxSitPMRzop3XboPr1msWd3EuyduUtbu3QmNRin8uzpYg8=</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo>
</Signature>
</Acuse>
Respuesta con error
Ejemplo de salida de error con código http 400 y código de status XXX:
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Content-Length: 88
{"errorCodigo":"902", "descripcionError":"El RFC 'GAVA730717AE1' no está registrado."}
Ejemplo de salida de error con código http 400 y sin código de status:
HTTP/1.1 400 Bad Request
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Falta Header: ipAddress
3.5 Códigos de respuesta
| Código HTTP | Código | Tipo | Descripción |
|---|---|---|---|
| 200 | 1201 | SUCCESS | UUID Cancelado |
| 200 | 1202 | ERROR | Previamente cancelado |
| 200 | 1203 | ERROR | UUID no corresponde con el emisor |
| 200 | 1205 | ERROR | UUID No existe |
| 200 | 1300 | ERROR | Autenticación no válida |
| 200 | 1301 | ERROR | XML mal formado |
| 200 | 1302 | ERROR | Estructura de folios no válida |
| 200 | 1303 | ERROR | Estructura de RFC no válida |
| 200 | 1304 | ERROR | Estructura de fecha no válida |
| 200 | 1305 | ERROR | Certificado no corresponde al emisor |
| 200 | 1306 | ERROR | Certificado no vigente |
| 200 | 1307 | ERROR | Uso de FIEL no permitido |
| 200 | 1308 | ERROR | Certificado revocado o caduco |
| 200 | 1309 | ERROR | Firma mal formada o inválida |
| 400 | 308 | ERROR | El CSD del emisor no es un certificado emitido por la autoridad del SAT. |
| 400 | 401 | ERROR | El rango de la fecha de generación es mayor a 72 horas con base en la fecha de emisión |
| 400 | 901 | ERROR | El cliente con el CustomerKey proporcionado no es válido |
| 400 | 902 | ERROR | El RFC no esta registrado como cliente |
| 400 | 903 | ERROR | El RFC se encuentra inactivo por el momento |
| 400 | 904 | ERROR | No cuenta con licencia para realizar peticiones |
| 400 | 905 | ERROR | El RFC no pertenece al cliente con el CustomerKey que proporciono |
| 400 | 910 | ERROR | No se puede determinar el cliente a partir del RFC |
| 400 | 999 | ERROR | Error interno en el servidor |
| 400 | 407 | ERROR | Error en el servicio de Cancelación del SAT |
| 400 | ERROR | Cuando faltan parámetros requeridos en la petición |
4 Consideraciones Técnicas
-
Toda comunicación debe realizarse con codificación UTF-8.
-
Las URLs deben invocarse vía
POSTcon contenido tipotext/xml. -
El uso de certificados y estructura XML debe cumplir lo indicado por el Anexo 20 del SAT.
-
En todos los casos, incluya siempre el
CustomerKeycorrecto.
5 Contacto y soporte
Para soporte técnico, dudas sobre el uso del servicio o solicitud de su CustomerKey, puede comunicarse con su ejecutivo o con el área de soporte técnico de Tralix vía ticket.