Cancelación de CFDI-PSECFDI
Este servicio dejará de operar en 2022
A partir de 2022 será necesario señalar el motivo de la cancelación de comprobantes. La actual estructura del servicio de cancelación no tiene soporte para recibir el motivo de cancelación de los comprobantes o el folio fiscal del comprobante que sustituye al cancelado. Puede obtener información del servicio que sustituirá a este servicio en la siguiente liga de actualización al servicio de cancelación.
Con base en los artículos 29 y 29-A del Código Fiscal de la Federación del DECRETO por el que se reforman, adicionan y derogan diversas disposiciones de la Ley del Impuesto sobre la Renta, de la Ley del Impuesto al Valor Agregado, de la Ley del Impuesto Especial sobre Producción y Servicios, de la Ley Federal del Impuesto sobre Automóviles Nuevos, del Código Fiscal de la Federación y otros ordenamientos, publicado en el DOF el día 12 de noviembre de 2021, se señala que:
- A partir de 2022 será necesario señalar el motivo de la cancelación de los comprobantes.
- Al seleccionar como motivo de cancelación la clave 01 "Comprobante emitido con errores con relación" deberá relacionarse el folio fiscal del comprobante que sustituye al cancelado.
- Se actualizan los plazos para realizar la cancelación de facturas: sólo podrán cancelarse en el ejercicio en el que se expidan y siempre que la persona a favor de quien se expidan acepte su cancelación.
Puedes consultar este, y los cambios asociados a la Actualización Factura electrónica – Reforma Fiscal 2022 en el sitio del SAT.
Este servicio permite cancelar los comprobantes fiscales emitidos por Reachcore en su figura como Proveedor de Servicios de Expedición de Comprobante Fiscal Digital a Través de Internet (PSECFDI).
Contenido
-
Características generales
- Cancelación en línea
- Cancelación desconectada (asíncrona)
- Consulta de Acuse de Cancelación
- Comparación de servicios de cancelación de Reachcore
- Requisitos para cancelar un CFDI
-
Integración
- Cancelación a través de Web Service
- Cancelación a través de archivo de texto plano
-
Web Service de Cancelación
- ¿Qué necesito?
- Ubicación del servicio.
-
Método [
Cancelar
]: Cancelación con respuesta síncrona- Solicitud Cancelar
- Respuesta Cancelar
-
Método [
CancelarAsync
]: Cancelación asíncrona -
Método [
GetFolioStatus
]: Consulta para obtener acuse por UUID- Solicitud GetFolioStatus
- Respuesta GetFolioStatus
-
Método [
GetTransactionStatus
]: Consulta de resultado por lote- Solicitud GetTransactionStatus
- Respuesta GetTransactionStatus
-
Códigos de Respuesta de Cancelación del SAT
- Códigos de éxito
- Códigos de error
Características generales
En el esquema de Comprobantes Fiscales Digitales por Internet (CFDI), el SAT resguarda en su base de datos centralizada todos los comprobantes certificados por los Proveedores Autorizado de Certificación para el padrón completo de contribuyentes. Por lo tanto, debido a este modelo centralizado, la cancelación de un CFDI consiste en solicitar directamente al SAT la cancelación del comprobante, mediante la Cancelación de CFDI.
Se describe la forma de realizar la solicitud para realizar la cancelación de CFDI emitido por Reachcore en su figura de un Proveedor de Servicios de Expedición de Comprobante Fiscal Digital a Través de Internet (PSECFDI). Durante este trámite, el SAT puede aprobar o rechazar la solicitud de cancelación, emitiendo un Acuse de la operación indicando ya sea la confirmación de que el comprobante fue cancelado, o bien, la razón del rechazo por la que el comprobante no se pudo cancelar. Las causas de rechazo pueden ser transitorias: si el SAT aún no tiene registrado en su sistema el CFDI; o definitivas: si la solicitud de cancelación es incorrecta.
Para que el SAT de trámite a una solicitud de cancelación de un CFDI emitido por un PSECFDI, se debe de cumplir con que la solicitud de cancelación del UUID (folio fiscal), este firmada electrónicamente con el certificado especial de sello digital (CESD). Reachcore solo procesará los CFDI que emitió como PSECFDI.
Reachcore ofrece varias modalidades de cancelación de CFDI emitidos como un PSECFDI, para realizar la solicitud ante el SAT, obteniendo el Acuse de Cancelación firmado por el SAT que avala la operación. Estas modalidades son:
- Cancelación en línea: con respuesta en línea por parte del SAT, para cancelar hasta 500 comprobantes.
- Cancelación desconectada: cuando el contribuyentes requiere cancelar más de 500 comprobantes, Reachcore ofrece esta modalidad, en donde se generan las solicitudes necesarias con el SAT y un esquema de re-intentos por saturación de los sistemas del SAT en horas pico o causados por alguna otra razón.
Cancelación en línea
En esta modalidad, Reachcore realiza la solicitud de cancelación ante el SAT, de los folios fiscales (UUID) que el contribuyente indica:
- La solicitud es firmada con el CESD.
- El UUID debe corresponder a un CFDI bajo el esquema de PSECFDI
- Enviando la solicitud al SAT
- Recepción de la respuesta de la solicitud por parte del SAT.
Nota importante: Se puede solicitar la cancelación de mas de un folio fiscal de los comprobantes, con la restricción de que éstos pertenezcan al mismo RFC emisor. En caso de enviar diferentes folios fiscales que pertenezcan a diferentes RFC emisores, se marcará como error. Ejemplo de la respuesta
Esta modalidad tiene la ventaja de que al final de la operación el contribuyente recibe el resultado definitivo de la misma, pero tiene las siguientes desventajas:
- Solo se puede cancelar un máximo de 500 comprobantes por operación. Este es un límite establecido por el SAT.
- Si un CFDI que fue emitido recientemente todavía no se encuentra registrado en los sistemas del SAT (hasta 72 horas después de la fecha de timbrado), la transacción será rechazada y deberá ser intentada mas tarde.
- En el escenario de problemas de comunicación, saturación o si el servicio de cancelación del SAT no está disponible, la transacción no podrá ser realizada y deberá ser intentada mas tarde.
Para eliminar estas desventajas, Reachcore ofrece también servicios administrados de cancelación desconectada.
Cancelación desconectada (asíncrona)
En esta modalidad, el contribuyente solicita a Reachcore llevar a cabo el trámite de cancelación de uno o mas folios fiscales (hasta 10,000 en una sola operación). El contribuyente puede hacer llegar a Reachcore la lista de los folios fiscales a cancelar ya sea por medio de un Web Service o de un archivo de texto plano, que se transfiere por una conexión segura (SFTP).
Como resultado inmediato, Reachcore entrega al contribuyente un identificador de seguimiento de la operación.
Reachcore se encarga de realizar tantas sesiones de comunicación con el SAT como sea necesario hasta asegurarse de que todos los comprobantes solicitados han sido cancelados, sin la intervención del contribuyente.
El contribuyente puede consultar en cualquier momento el progreso de la operación, tantas veces como quiera, a través de servicio web de cancelaciones de Reachcore utilizando el número de seguimiento asignado a la operación.
Consulta de Acuses de Cancelación
Sin importar el modelo de cancelación (en línea o desconectada), nuestro Web Service ofrece un método de consulta para que el contribuyente pueda descargar el Acuse de Cancelación emitido por el SAT para la cancelación de un folio fiscal.
Comparación de servicios de cancelación de Reachcore
En esta tabla se muestran una comparación de las principales características de los diferentes servicios de cancelación de CFDI ofrecidos por Reachcore.
Característica | Cancelación | Cancelación desconectada (asíncrona) | Archivo de texto |
---|---|---|---|
Límite de Cancelaciones en una sola petición | 500 comprobantes | 2,000 comprobantes | 10,000 comprobantes |
Reachcore se encarga de realizar los re-intentos ante el SAT | No | Si | Si |
Devuelve en línea el acuse del SAT | Si | No | No |
Permite consultas del acuse del SAT por Folio Fiscal | Si | Si | Si |
Requisitos para cancelar un CFDI bajo PSECFDI
Para realizar la cancelación de un folio fiscal de un CFDI bajo el esquema de PSECFDI, dicho comprobante debió ser emitido por Reachcore; si fue emitido por otro PSECFDI, no se podrá realizar la cancelación.
Integración
Existen dos medios de integración para hacer llegar las solicitudes de cancelación a Reachcore:
- Web Service de Cancelación
- Archivo de texto plano a través de SFTP.
Aquí se explica lo relacionado con el Web Service. Si deseas realizar la cancelación por medio de archivo de texto plano, es necesario crear el archivo de texto plano conforme se indica en la siguiente liga: archivo de texto plano para cancelación. El archivo puede enviarse vía SFTP o cargándolo en el portal de Reachcore.
Para obtener información adicional, por favor contáctenos o con su ejecutivo de cuenta.
Web Service de Cancelación.
En este Web Service se podrán realizar las siguientes operaciones:
- Cancelación en línea.
- Cancelación desconectada.
- Consulta y descarga de acuses de cancelación.
¿Qué necesito?
Para hacer uso del web service de cancelación se necesita:
- Haber generado el CFDI con el PSECFDI Reachcore
- Haber generado un API Key en tu cuenta Reachcore, ya que es el un identificador que te autentica en los Web Services de la plataforma. Para consultar como generar el API Key, consulta este artículo: Generar API Key para Web Services.
- Contar con el folio fiscal a cancelar (UUID) emitido en su cuenta Reachcore
Ubicación del servicio.
Las URLs donde se encuentra la definición del Web Service (WSDL) para cada uno de los ambientes son:
Ambiente | Ubicación del WSDL |
---|---|
Pruebas | https://oat.reachcore.com/api/ws/timbre-fiscal/CancelacionSectorPrimario.svc/basic?wsdl |
Producción | https://go.reachcore.com/api/ws/timbre-fiscal/CancelacionSectorPrimario.svc/basic?wsdl |
Método [Cancelar
]: Cancelación con respuesta síncrona
En este método, se podrá realizar la solicitud de cancelación de hasta 500 folios fiscales. Se puede solicitar la cancelación de mas de un folio fiscal de los comprobantes, con la restricción de que éstos pertenezcan al mismo RFC emisor. En caso de enviar diferentes folios fiscales que pertenezcan a diferentes RFC emisores, se marcará como error. Ejemplo de la respuesta. Si no tiene identificado al emisor, te pedimos puedas usar el método asíncrono o enviar por archivo de integración la solicitud de cancelación.
Solicitud Cancelar
Elemento | Uso | Descripción |
---|---|---|
ApiKey | Requerido | Identificador de autenticación, que se genera en el portal de Reachcore. |
Folios | Requerido | Lista de los folios fiscales de los comprobantes a cancelar, la cual debe contener al menos 1 y hasta 500 folios. Cada folio debe tener el formato de GUID válido, descrito por la siguiente expresión regular: [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} Ejemplo: F9123206-D86C-49EE-80F3-C288CC948631 |
Ejemplo de solicitud:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<soapenv:Header>
<cus:ApiKey>7F3FA21M61.....19E42D72E3</cus:ApiKey>
</soapenv:Header>
<soapenv:Body>
<tem:CancelacionSectorPrimarioRequest>
<tem:Folios>
<arr:guid>D6855812-AF48-4E8F-B30E-3DCB8BD0B40D</arr:guid>
</tem:Folios>
</tem:CancelacionSectorPrimarioRequest>
</soapenv:Body>
</soapenv:Envelope>
Respuesta Cancelar
A continuación se describe la respuesta a la solicitud de cancelación en el método cancelar.
Elemento | Descripción |
---|---|
Error | false : Transacción exitosa. true : Error al procesarse la transacción. |
ErrorMessage | En caso que el elemento Error tenga el valor true, se mostrara la descripción del error. |
FoliosCancelados | Indica la cantidad de comprobantes que fueron exitosamente cancelados. |
AcuseSAT | El acuse en formato XML generado y firmado por el SAT que indica el resultado de la operación de la solicitud de cancelación. Esta dentro de un elemento <![CDATA[...]]> . |
Folios | Se muestra una lista de resultados en donde se tiene un elemento TransactionDetailResponse para cada folio que se solicitó cancelar. Para cada folio se describe:
|
Ejemplo de respuesta:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CancelacionFiscalResponse xmlns="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<Error>false</Error>
<ErrorMessage/>
<FoliosCancelados>2</FoliosCancelados>
<AcuseSAT>
<![CDATA[<Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RfcEmisor="AAA010101AAA" Fecha="2016-01-12T18:09:24.9699876-06:00">
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>23A433E9-FA1B-47CB-804B-2C80666F438C</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>876DB4A9-41C4-49DC-8191-5F03133DF5EE</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Signature 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/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>ufw4amS/YediDE34m1PUDCpSUVY=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>r+MHCtG5TvZzlIV0MHgREDhCnJHig0vSwLJA0Ko+wWNlvv0N/ALNMOg3FhEuF14v3POL1TGAIuDOGX7aGeKlrU3bqgCxIGf5aCpfeqBmWFPXC6M4ppwyrmO9iJSdu4VMbS3yVR7w7Ya1fRjtVLw3mM/HOUU7ITnDrIGe5UVz9Kk=</SignatureValue>
<KeyInfo>
<X509Data>
<X509IssuerSerial>
<X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: Héctor Ornelas Arciga, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. de pruebas</X509IssuerName>
<X509SerialNumber>286524172099382162235533054511188021807429465904</X509SerialNumber>
</X509IssuerSerial>
<X509Certificate>MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NzAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDlaFw0xNjA3MjcxNzAyMDlaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCA0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxjtFKP9bhgV8I8lIlc58M19l8xBIrM6rWJagt1G/yYTo6WLVKTGx9fiWSnTZVeClcrLXo3heKYAkHPla6WHRiMRkwdshafy9AtUx5xyLIDXzER4K/eZitmzp9LWTxi6BYEHPUuOdFJ8PtPkVb3yvadMJgxMtI47uXxmx40mkA9QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEA2D99yNxnBdJ7ONJQ7XiMaaqCTkB4wWYxHaFlxpKgLe3HRc86rEZfBnoHLGd/ACAIoTc2PG09J4qkDOw63fb1aNLa9Zjqat+Nh6qB7+ifC9+pAVd6OrR5Ch7v/Fr0I4APrfSyXbx5U915zaGw9c1wM57Lfa0oGipkPUfab2lnf0y6X1WXMKv+vMMVtlQxUAC0Vc5HBPV3aWtDXwg8pANbcYfZEr8H2i4aOpFBsRLuPjdo9OOqfn4Df6GoqKUrlwBPh6wCqexSKuG3XuTqZB1svdyss9NW+iOTqkBFWJrOPpKwVppyt4YGEcejoPBcnWpGSALpahuxuX5hoUak0+1Yxw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Acuse>
]]>
</AcuseSAT>
<Folios>
<TransactionDetailResponse>
<FolioFiscal>23a433e9-fa1b-47cb-804b-2c80666f438c</FolioFiscal>
<Cancelado>false</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
<TransactionDetailResponse>
<FolioFiscal>876db4a9-41c4-49dc-8191-5f03133df5ee</FolioFiscal>
<Cancelado>false</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
</Folios>
</CancelacionFiscalResponse>
</s:Body>
</s:Envelope>
En caso de que se envíen folios fiscales (UUID) pertenecen a un RFC emisor distinto, este sería el ejemplo de la respuesta con el error.
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body>
<CancelacionSectorPrimarioResponse xmlns="http://tempuri.org/">
<Error>true</Error>
<ErrorMessage>El folio '55de7c7c-3ceb-4004-8afb-e86af5df2163' tiene diferente emisor, que los demás folios.</ErrorMessage>
<FoliosCancelados>0</FoliosCancelados>
<AcuseSAT i:nil="true" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"/>
<Folios xmlns:a="http://schemas.datacontract.org/2004/07/TimbreFiscalServices.Entities" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<a:TransactionDetailResponse>
<a:Cancelado>false</a:Cancelado>
<a:FolioFiscal>468f3f57-8e4c-4b61-8d61-1980755c3d97</a:FolioFiscal>
<a:ResultCode/>
<a:ResultMessage i:nil="true"/>
</a:TransactionDetailResponse>
<a:TransactionDetailResponse>
<a:Cancelado>false</a:Cancelado>
<a:FolioFiscal>55de7c7c-3ceb-4004-8afb-e86af5df2163</a:FolioFiscal>
<a:ResultCode/>
<a:ResultMessage i:nil="true"/>
</a:TransactionDetailResponse>
</Folios>
</CancelacionSectorPrimarioResponse>
</s:Body>
Método [CancelarAsync
]: Cancelación asíncrona
En este método del Web Service, se puede recibir una lista de hasta 2,000 folios fiscales a cancelar. Aquí no se considera que todos los folios fiscales deban de pertenecer al mismo RFC emisor. Reachcore realizará la agrupación.
Solicitud CancelarAsync
Elemento | Uso | Descripción |
---|---|---|
ApiKey | Requerido | Identificador de autenticación, que se genera en el portal de Reachcore. |
Folios | Requerido | Lista de los folios fiscales de los comprobantes a cancelar, la cual debe contener al menos 1 y hasta 500 folios. Cada folio debe tener el formato de GUID válido, descrito por la siguiente expresión regular: [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} Ejemplo: F9123206-D86C-49EE-80F3-C288CC948631 |
TransactionProperty | Opcional | Son parámetros que indican a Reachcore algún tratamiento especial a realizar con la petición de cancelación. Estos parámetros deben ser contratados y configurados previamente por personal de Reachcore. Algunos de ellos son:
|
Ejemplo de Solicitud:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:tem="http://tempuri.org/" xmlns:arr="http://schemas.microsoft.com/2003/10/Serialization/Arrays" xmlns:rc="http://schemas.datacontract.org/2004/07/RC.Core.Entities.Servicios">
<soapenv:Header>
<cus:ApiKey>51e9d1097f634f20b....9e405d933f769303391008</cus:ApiKey>
</soapenv:Header>
<soapenv:Body>
<tem:CancelacionSectorPrimarioRequest>
<tem:Folios>
<arr:guid>D5DCD1AF-6E56-43E0-BEC5-5E1E15234716</arr:guid>
<arr:guid>0563C17E-1498-4CED-A3D7-F4D7BEC90596</arr:guid>
<arr:guid>6C7E68FB-1687-4ABF-9223-57FAC1F9FBAE</arr:guid>
<arr:guid>A98BA438-24D1-4A1D-92C9-B481D7D0CE17</arr:guid>
<arr:guid>20B26F0C-3A72-48AA-BC73-620ADF4EA6B8</arr:guid>
</tem:Folios>
<!--Optional:-->
<tem:TransactionProperties>
<rc:TransactionProperty>
<rc:Key>CancelarRelacionados</rc:Key>
<rc:Value>true</rc:Value>
</rc:TransactionProperty>
</tem:TransactionProperties>
</tem:CancelacionSectorPrimarioRequest>
</soapenv:Body>
</soapenv:Envelope>
Respuesta CancelarAsync
Ejemplo de Respuesta:
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<CancelacionFiscalAsyncResponse xmlns="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<Error>false</Error>
<ErrorMessage/>
<TrackingId>7239b4c5-4554-4ffb-a1fe-0290290d62c1</TrackingId>
</CancelacionFiscalAsyncResponse>
</s:Body>
</s:Envelope>
Método [GetFolioStatus
]: Consulta para obtener acuse por UUID
Por medio de este método, se podrá consultar el resultado de la solicitud de cancelación de un folio fiscal. Se podrá consultar los folios que se hayan solicitado cancelar en Reachcore, ya sea por Web Service o por archivo de integración.
Solicitud GetFolioStatus
Elemento | Uso | Descripción |
---|---|---|
ApiKey | Requerido | Identificador de autenticación, que se genera en el portal de Reachcore. |
UUID | Requerido | El folio de un comprobante que se haya solicitado cancelar previamente, ya sea por Web Service o por archivo de integración. |
Ejemplo de solicitud
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:urn="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<soapenv:Header>
<cus:ApiKey>51e9d1097f634f20......4c406d9e405d933f769303391008</cus:ApiKey>
</soapenv:Header>
<soapenv:Body>
<urn:FolioStatusRequest>
<urn:UUID>D5DCD1AF-6E56-43E0-BEC5-5E1E15234716</urn:UUID>
</urn:FolioStatusRequest>
</soapenv:Body>
</soapenv:Envelope>
Respuesta GetFolioStatus
Elemento | Descripción |
---|---|
Error | false : Transacción exitosa. true : Error al procesarse la transacción. |
Cancelado | Indica si el comprobante ya está cancelado en el SAT. |
ResultCode | Código de respuesta devuelto por el SAT para el folio del comprobante |
ResultMessage | Significado del código de respuesta del SAT. En caso de que Cancelado sea false este campo describe la razón por la que el SAT no aprobó la cancelación del comprobante |
ErrorMessage | En caso que el elemento Error tenga el valor true, se mostrara la descripción del error. |
UUID | El folio fiscal del comprobante consultado. Siempre será igual al valor que fue especificado en la solicitud |
AcuseSAT | El acuse en formato XML generado y firmado por el SAT que indica el resultado de la operación de la solicitud de cancelación. Esta dentro de un elemento <![CDATA[...]]> . NOTA: como el SAT devuelve un acuse para un conjunto de documentos es posible que este acuse contenga también los resultados para otros folios adicionales al que fue consultado. |
Ejemplo de Respuesta:
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<FolioStatusResponse xmlns="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<Error>false</Error>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Cancelación satisfactoria.</ResultMessage>
<UUID>d5dcd1af-6e56-43e0-bec5-5e1e15234716</UUID>
<AcuseSAT><![CDATA[<Acuse xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" RfcEmisor="AAA010101AAA" Fecha="2016-01-12T19:16:24.7748639-06:00">
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>D5DCD1AF-6E56-43E0-BEC5-5E1E15234716</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>0563C17E-1498-4CED-A3D7-F4D7BEC90596</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>6C7E68FB-1687-4ABF-9223-57FAC1F9FBAE</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>A98BA438-24D1-4A1D-92C9-B481D7D0CE17</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Folios xmlns="http://cancelacfd.sat.gob.mx">
<UUID>20B26F0C-3A72-48AA-BC73-620ADF4EA6B8</UUID>
<EstatusUUID>201</EstatusUUID>
</Folios>
<Signature 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/2000/09/xmldsig#rsa-sha1" />
<Reference URI="">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<DigestValue>TK0+x83I5pMZOsykvjgIvnFPQdw=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>fCHqROsGgQySZlAU/IeXKxA9hCxhTi3uqNQVWHp5oSEC4zwqKzKWNGBRK/jCXRcsS+DACjxjlj5fsGjjUW/f/nQFcHKQo1rMCexOwq6/ZzUrR6iXKWAil4dNCct9CFgNcnOttcfZcsXSvcHmRHNDpEnM3SACS7QUkrNP7hX5/y0=</SignatureValue>
<KeyInfo>
<X509Data>
<X509IssuerSerial>
<X509IssuerName>OID.1.2.840.113549.1.9.2=Responsable: Héctor Ornelas Arciga, OID.2.5.4.45=SAT970701NN3, L=Coyoacán, S=Distrito Federal, C=MX, PostalCode=06300, STREET="Av. Hidalgo 77, Col. Guerrero", E=asisnet@pruebas.sat.gob.mx, OU=Administración de Seguridad de la Información, O=Servicio de Administración Tributaria, CN=A.C. de pruebas</X509IssuerName>
<X509SerialNumber>286524172099382162235533054511188021807429465904</X509SerialNumber>
</X509IssuerSerial>
<X509Certificate>MIIEdDCCA1ygAwIBAgIUMjAwMDEwMDAwMDAxMDAwMDU4NzAwDQYJKoZIhvcNAQEFBQAwggFvMRgwFgYDVQQDDA9BLkMuIGRlIHBydWViYXMxLzAtBgNVBAoMJlNlcnZpY2lvIGRlIEFkbWluaXN0cmFjacOzbiBUcmlidXRhcmlhMTgwNgYDVQQLDC9BZG1pbmlzdHJhY2nDs24gZGUgU2VndXJpZGFkIGRlIGxhIEluZm9ybWFjacOzbjEpMCcGCSqGSIb3DQEJARYaYXNpc25ldEBwcnVlYmFzLnNhdC5nb2IubXgxJjAkBgNVBAkMHUF2LiBIaWRhbGdvIDc3LCBDb2wuIEd1ZXJyZXJvMQ4wDAYDVQQRDAUwNjMwMDELMAkGA1UEBhMCTVgxGTAXBgNVBAgMEERpc3RyaXRvIEZlZGVyYWwxEjAQBgNVBAcMCUNveW9hY8OhbjEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTIwMAYJKoZIhvcNAQkCDCNSZXNwb25zYWJsZTogSMOpY3RvciBPcm5lbGFzIEFyY2lnYTAeFw0xMjA3MjcxNzAyMDlaFw0xNjA3MjcxNzAyMDlaMIHbMSkwJwYDVQQDEyBBQ0NFTSBTRVJWSUNJT1MgRU1QUkVTQVJJQUxFUyBTQzEpMCcGA1UEKRMgQUNDRU0gU0VSVklDSU9TIEVNUFJFU0FSSUFMRVMgU0MxKTAnBgNVBAoTIEFDQ0VNIFNFUlZJQ0lPUyBFTVBSRVNBUklBTEVTIFNDMSUwIwYDVQQtExxBQUEwMTAxMDFBQUEgLyBIRUdUNzYxMDAzNFMyMR4wHAYDVQQFExUgLyBIRUdUNzYxMDAzTURGUk5OMDkxETAPBgNVBAsTCFVuaWRhZCA0MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCxjtFKP9bhgV8I8lIlc58M19l8xBIrM6rWJagt1G/yYTo6WLVKTGx9fiWSnTZVeClcrLXo3heKYAkHPla6WHRiMRkwdshafy9AtUx5xyLIDXzER4K/eZitmzp9LWTxi6BYEHPUuOdFJ8PtPkVb3yvadMJgxMtI47uXxmx40mkA9QIDAQABox0wGzAMBgNVHRMBAf8EAjAAMAsGA1UdDwQEAwIGwDANBgkqhkiG9w0BAQUFAAOCAQEA2D99yNxnBdJ7ONJQ7XiMaaqCTkB4wWYxHaFlxpKgLe3HRc86rEZfBnoHLGd/ACAIoTc2PG09J4qkDOw63fb1aNLa9Zjqat+Nh6qB7+ifC9+pAVd6OrR5Ch7v/Fr0I4APrfSyXbx5U915zaGw9c1wM57Lfa0oGipkPUfab2lnf0y6X1WXMKv+vMMVtlQxUAC0Vc5HBPV3aWtDXwg8pANbcYfZEr8H2i4aOpFBsRLuPjdo9OOqfn4Df6GoqKUrlwBPh6wCqexSKuG3XuTqZB1svdyss9NW+iOTqkBFWJrOPpKwVppyt4YGEcejoPBcnWpGSALpahuxuX5hoUak0+1Yxw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Acuse>]]>
</AcuseSAT>
</FolioStatusResponse>
</s:Body>
</s:Envelope>
Método [GetTransactionStatus
]: Consulta de resultado por lote
En este método, se podrá conocer el estado de la solicitud de cancelación realizada, ya sea por el Web Service o por archivo de integración.
Solicitud GetTransactionStatus
Elemento | Uso | Descripción |
---|---|---|
ApiKey | Requerido | Identificador de autenticación, que se genera en el portal de Reachcore. |
TrackingId | Requerido | Identificador de seguimiento de la transacción, el cual es devuelto por una llamada previa a la operación CancelarAsync o el que se obtiene como respuesta del archivo de texto plano. |
Ejemplo de Solicitud:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:cus="http://www.reachcore.com/CFDI/customHeaders" xmlns:urn="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<soapenv:Header>
<cus:ApiKey>51e9d1097f634f20b.......406d9e405d933f769303391008</cus:ApiKey>
</soapenv:Header>
<soapenv:Body>
<urn:TransactionStatusRequest>
<urn:TrackingId>7239b4c5-4554-4ffb-a1fe-0290290d62c1</urn:TrackingId>
</urn:TransactionStatusRequest>
</soapenv:Body>
</soapenv:Envelope>
Respuesta GetTransactionStatus
Elemento | Descripción |
---|---|
Error | false : Transacción exitosa. true : Error al procesarse la transacción. |
ErrorMessage | En caso que el elemento Error tenga el valor true, se mostrara la descripción del error. |
Finished | Indica si la transacción ya fue finalizada true o si continúa en proceso false . |
FoliosCancelados | Indica la cantidad de comprobantes que fueron exitosamente cancelados. Para conocer la razón por la que el resto de los comprobantes no hayan sido cancelados ver el resultado |
Folios | Se muestra una lista de resultados en donde se tiene un elemento TransactionDetailResponse para cada folio que se solicitó cancelar. Para cada folio se describe:
|
Un lote queda en estado finalizado (Finished = true), cuando cada uno de los comprobantes que se solicitaron cancelar se encuentra en alguno de los siguientes estados:
- Cancelado exitosamente.
- No pudo ser cancelado ante el SAT con un motivo de rechazo definitivo. Las razones de rechazo definitivas son las que se listan como no reintentables en la sección de Códigos de Respuesta del SAT para Cancelación.
Ejemplo de Respuesta
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<TransactionStatusResponse xmlns="urn:reachcore.com:services:api:ws:timbre-fiscal:cancelacion:2.0">
<Error>false</Error>
<ErrorMessage/>
<Finished>true</Finished>
<FoliosCancelados>5</FoliosCancelados>
<Folios>
<TransactionDetailResponse>
<FolioFiscal>d5dcd1af-6e56-43e0-bec5-5e1e15234716</FolioFiscal>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
<TransactionDetailResponse>
<FolioFiscal>0563c17e-1498-4ced-a3d7-f4d7bec90596</FolioFiscal>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
<TransactionDetailResponse>
<FolioFiscal>6c7e68fb-1687-4abf-9223-57fac1f9fbae</FolioFiscal>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
<TransactionDetailResponse>
<FolioFiscal>a98ba438-24d1-4a1d-92c9-b481d7d0ce17</FolioFiscal>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
<TransactionDetailResponse>
<FolioFiscal>20b26f0c-3a72-48aa-bc73-620adf4ea6b8</FolioFiscal>
<Cancelado>true</Cancelado>
<ResultCode>201</ResultCode>
<ResultMessage>Petición de cancelación recibida.</ResultMessage>
</TransactionDetailResponse>
</Folios>
</TransactionStatusResponse>
</s:Body>
</s:Envelope>
Códigos de Respuesta de Cancelación del SAT
Para cada solicitud de cancelación de un comprobante, el SAT la autoriza o rechaza especificando un código de estatus. En las siguientes dos tablas se describen los códigos de status conocidos y sus significados.
Aunque el escenario de Sector Primario entra en el grupo de excepciones, se recomienda revisar el estado del CFDI después de llevar a cabo la cancelación.
Puedes obtener más información acerca de este nuevo esquema de cancelación en nuestro Blog, o bien en el sitio del SAT.
Códigos de éxito
Código | Descripción | Significado |
---|---|---|
201 | Petición de cancelación recibida. | El SAT ha recibido la petición de cancelación. Se recomienda usar el servicio de consulta de estado de un Comprobante para conocer el estado de la cancelación. |
202 | Petición de cancelación recibida anteriormente. | El SAT indica que ya habia recibido la petición de cancelación. Se recomienda usar el servicio de consulta de estado de un Comprobante para conocer el estado de la cancelación. |
Códigos de error
Código | Descripción | Significado | ¿Reintentable? | ¿Qué hacer? |
---|---|---|---|---|
204 | UUID No aplicable para cancelación | El Folio Fiscal no se puede cancelar. El SAT no especifica bajo que criterios puede ocurrir este código, pero no es frecuente. | No | Consultar directamente en el SAT en Asistencia al Contribuyente el motivo por el que no se autoriza la cancelación del comprobante. Reachcore no puede hacer nada al respecto. |
205 | UUID No existe | El SAT todavía no publica en su portal de internet el comprobante, y por lo tanto aún no puede ser cancelado. | Si | Asegurar que el comprobante ya está entregado al SAT y re- |
Para mayor información o aclaración de dudas relacionadas con esta guía, por favor envía un correo a MEX-soporte@sovos.com
Regresar