NUEVO ESQUEMA DE CANCELACIÓN 2022 CLIENTES CFDI + TIMBRADO API REST

NUEVO ESQUEMA DE CANCELACIÓN 2022 CLIENTES CFDI + TIMBRADO API REST

Para el servicio de CFDI + TIMBRADO API REST tenemos dos ambientes:

Ambiente Test:


Ambiente Productivo:



JSONSERVICECALL

Idea
IMPORTANTE:
No olvides que, si decides trabajar con jsonservicecall (antes de realizar cualquier solicitud), debes obtener el token de conexión a traves de la transacción "AUTHENTICATE"

Transacción: CANCEL_XML_3

Permite solicitar la cancelación de un CFDI al SAT (Servicio de Administración Tributaria).

En este caso se debe ejecutar la función JSONServiceCall con los siguientes parámetros:


 

Valores:
  1. {
      "jsonData": "string",
      "token": "string",
      "transactionName": "string"
    }
Tomar en cuenta los siguientes campos:
  1. jsonData son los datos en forma de objeto JSON que conforman la materia prima para solicitar la cancelación de un CFDI ante el SAT (Debe estar en Base 64).
  2. transactionName debe indicar la transacción que desea ocupar. En este caso CANCEL_XML_3
  3. token valor obtenido de la transacción AUTHENTICATE.

Estructura json que debe ir en base64 en el campo jsonData:

{
    "motivo": "02",
    "folioSustitucion": "",    
    "emisor": "JES900109Q90",
    "folioFiscal": "2c8271de-bc26-418a-87af-c79d71cf2117",
    "year": "2026",
    "month": "05"
}

Descripción:

motivo (Requerido): Clave del motivo de cancelación del comprobante.
Los valores posibles para este atributo son: 01, 02, 03 y 04.
Clave Descripción
01         Comprobante emitido con errores con relación.
02         Comprobante emitido con errores sin relación.
03         No se llevó a cabo la operación.
04         Operación nominativa relacionada en una factura global.

folioSustitucion (Opcional): Atributo condicional que representa al UUID que sustituye al folio fiscal cancelado.
***Es requerido cuando la clave del motivo de cancelación es 01.

emisor (Requerido): Rfc del emisor de la factura que se quiere solicitar su cancelación.

folioFiscal (Requerido): UUID del CFDI que se quiere solicitar su cancelación.

year (Requerido): Año en que fue emitido el CFDI que se quiere solicitar su cancelación.

month (Requerido): Mes en que fue emitido el CFDI que se quiere solicitar su cancelación.


Ejemplo de Solicitud CANCEL_XML_3:

{  "jsonData":"ewogICAgIm1vdGl2byI6ICIwMiIsICAgIAogICAgImVtaXNvciI6ICJKRVM5MDAxMDlROTAiLAogICAgImZvbGlvRmlzY2FsIjogIjJjODI3MWRlLWJjMjYtNDE4YS04N2FmLWM3OWQ3MWNmMjExNyIsCiAgICAieWVhciI6ICIyMDI2IiwKICAgICJtb250aCI6ICIwNSIKfQ==" ,
  "token": "OxbZPD1Gd9hUomWYNBUGWkzja54cEGlnz9LLPKZY+pI0+bfE1ldh8TKjBK02xvy59Zg3/+6aVRtUXAAsj5rWXM9AF9sR+zoN8ZBvSQWBg0s=",
  "transactionName": "CANCEL_XML_3"
}

Respuesta:

{
   "result": true,
   "payload": "{\"ResponseData1\":\"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Q2FuY2VsYUNGRFJlc3VsdCBGZWNoYT0iMjAyNi0wNS0wN1QxMDoyMjozNC44MjYzNzQ4IiBSZmNFbWlzb3I9IkpFUzkwMDEwOVE5MCIgeG1sbnM9Imh0dHA6Ly9jYW5jZWxhY2ZkLnNhdC5nb2IubXgiPjxGb2xpb3M+PFVVSUQ+MkM4MjcxREUtQkMyNi00MThBLTg3QUYtQzc5RDcxQ0YyMTE3PC9VVUlEPjxFc3RhdHVzVVVJRD4yMDE8L0VzdGF0dXNVVUlEPjwvRm9saW9zPjxTaWduYXR1cmUgSWQ9IlNlbGxvU0FUIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGE1MTIiIC8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGg+bm90KGFuY2VzdG9yLW9yLXNlbGY6OipbbG9jYWwtbmFtZSgpPSdTaWduYXR1cmUnXSk8L1hQYXRoPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIiAvPjxEaWdlc3RWYWx1ZT4xRHBIOVljRTNFWWZFNEYxeDJoUWpDR1BGWloveWIwRnVSSmwxMkVWTUJhRHl5YU9UdXQ4d0dXb0l1WCs0UDREMDFGeWdPU0d6OEw4TDJRbWJ3OWpyZz09PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPmJPdFZDTXdJQ3VnOC9sNlE1dUUyQW5LSzhJYUxFUTQ0Nnp5ZzJEYmtYamFuQll5WkV3U3R1ZEwzbVFCMGIwNGxVNXAwMHJkU0RnOFpYU0FyWWI2clN3PT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlOYW1lPjMwMDAxMDAwMDAwNTAwMDAyNTU0PC9LZXlOYW1lPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+aFVjVU9vR0V0U0RBbHJGOEtlZ1FrR0tZOGFEQWU5dE5Sa2Y0OHVqMStZaXJEUDRjTUVkOFlFZWxRWTFqTHUxR0lOWUtmOU45WHhtT2ZIZEw0RlVyK2N1T2dyQnZpYUdXY0lzSmZaODBJR3B2b3g2a1VTSG9SdCtoMzJ5UWF5VzBIdU5PcDBiM3lpQnA5WTZqVGRZVEZUQVZ6Z3pVamY0TGZWdDhuNUZlalZaMnhFUkl5Uk9uR2diSzhBNHhCc1BwRmF6SFFrSzJQQ2lZZStMWUJtMFV4OVVaWWtZSjlNdTlyTDVjNTFTamdxOEpKZWtvcnAwQnpmS2FkUnJTRUZ5RDJaNkd3QjBSc3dqTFpRc3BvalpHeFVucWxibGR2TzZUakZVVjRNVDdFVjhQN2YyVlRTMHlyNHFTd3gweTA4MHpvSzEwQ2JJb0pYZnNGUk9IeXBGajV3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9DYW5jZWxhQ0ZEUmVzdWx0Pg==\",\"ResponseData2\":\"SAT: 201 - UUID Admitido al proceso de cancelación.\",\"ResponseData3\":\"\"}",
   "token": "OxbZPD1Gd9hUomWYNBUGWkzja54cEGlnz9LLPKZY+pI0+bfE1ldh8TKjBK02xvy59Zg3/+6aVRtUXAAsj5rWXFCLCwDpTCRk5SkS6mvUntc=",
   "errorMsg": "",
   "errorCode": 0
}

Descripción de la Respuesta:

ResponseData1: XML del resultado de la solicitud de cancelación realizada

<?xml version="1.0" encoding="UTF-8"?><CancelaCFDResult Fecha="2026-05-07T10:22:34.8263748" RfcEmisor="JES900109Q90" xmlns="http://cancelacfd.sat.gob.mx"><Folios><UUID>2C8271DE-BC26-418A-87AF-C79D71CF2117</UUID><EstatusUUID>201</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>1DpH9YcE3EYfE4F1x2hQjCGPFZZ/yb0FuRJl12EVMBaDyyaOTut8wGWoIuX+4P4D01FygOSGz8L8L2Qmbw9jrg==</DigestValue></Reference></SignedInfo><SignatureValue>bOtVCMwICug8/l6Q5uE2AnKK8IaLEQ446zyg2DbkXjanBYyZEwStudL3mQB0b04lU5p00rdSDg8ZXSArYb6rSw==</SignatureValue><KeyInfo><KeyName>30001000000500002554</KeyName><KeyValue><RSAKeyValue><Modulus>hUcUOoGEtSDAlrF8KegQkGKY8aDAe9tNRkf48uj1+YirDP4cMEd8YEelQY1jLu1GINYKf9N9XxmOfHdL4FUr+cuOgrBviaGWcIsJfZ80IGpvox6kUSHoRt+h32yQayW0HuNOp0b3yiBp9Y6jTdYTFTAVzgzUjf4LfVt8n5FejVZ2xERIyROnGgbK8A4xBsPpFazHQkK2PCiYe+LYBm0Ux9UZYkYJ9Mu9rL5c51Sjgq8JJekorp0BzfKadRrSEFyD2Z6GwB0RswjLZQspojZGxUnqlbldvO6TjFUV4MT7EV8P7f2VTS0yr4qSwx0y080zoK10CbIoJXfsFROHypFj5w==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo></Signature></CancelaCFDResult>

ResponseData2: Clave SAT obtenida.

Info
La clave SAT: 201 sólo significa que la solicitud de cancelación ha sido recibida por la autoridad SAT para su gestión, no quiere decir que el CFDI ya está cancelado.

Para conocer el estado de cancelación de un CFDI, se debe implementar la siguiente transacción "CONSULT_DOCUMENT"


Transacción: CONSULT_DOCUMENT

Permite solicitar el estado de cancelación de un CFDI ante el SAT (Servicio de Administración Tributaria).

En este caso se debe ejecutar la función JSONServiceCall con los siguientes parámetros:


 

Valores:
  1. {
      "jsonData": "string",
      "token": "string",
      "transactionName": "string"
    }
Tomar en cuenta los siguientes campos:
  1. jsonData son los datos en forma de objeto JSON que conforman la materia prima para solicitar el estado de cancelación de un CFDI ante el SAT (Debe estar en Base 64).
  2. transactionName debe indicar la transacción que desea ocupar. En este caso CONSULT_DOCUMENT
  3. token valor obtenido de la transacción AUTHENTICATE.

Estructura json que debe ir en base64 en el campo jsonData:

{
    "docType": "issued",        
    "emisor": "JES900109Q90",
    "folioFiscal": "2c8271de-bc26-418a-87af-c79d71cf2117",
    "year": 2026,
    "month": 05
}

Descripción:

docType (Requerido): Tipo de documento que se quiere consultar (emitido o recibido), los valores posibles son "issued" o "received".

emisor (Requerido): Rfc del emisor de la factura que se quiere solicitar su estado de cancelación.

folioFiscal (Requerido): UUID del CFDI que se quiere solicitar su estado de cancelación.

year (Requerido): Año en que fue emitido el CFDI que se quiere solicitar su estado de cancelación.

month (Requerido): Mes en que fue emitido el CFDI que se quiere solicitar su estado de cancelación.


Ejemplo de Solicitud CONSULT_DOCUMENT:

{  "jsonData":"ewogICAgZG9jVHlwZTogImlzc3VlZCIsCiAgICBlbWlzb3I6ICJKRVM5MDAxMDlROTAiLCAgIAogICAgZm9saW9GaXNjYWw6ICIgMmM4MjcxZGUtYmMyNi00MThhLTg3YWYtYzc5ZDcxY2YyMTE3IiwKICAgIHllYXI6IDIwMjYsCiAgICBtb250aDogMDUKfQ==" ,
"token": "OxbZPD1Gd9hUomWYNBUGWkzja54cEGlnz9LLPKZY+pI0+bfE1ldh8TKjBK02xvy59Zg3/+6aVRtUXAAsj5rWXM9AF9sR+zoN8ZBvSQWBg0s=",
"transactionName": "CONSULT_DOCUMENT"
}

Respuesta (antes de solicitar la cancelación del CFDI):

{
   "result": true,
   "payload": "{\"ResponseData1\":\"eyJDb2RpZ29Fc3RhdHVzIjoiUyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS4iLCJFc0NhbmNlbGFibGUiOiJDYW5jZWxhYmxlIHNpbiBhY2VwdGFjacOzbiIsIkVzdGFkbyI6IlZpZ2VudGUiLCJFc3RhdHVzQ2FuY2VsYWNpb24iOiIiLCJWYWxpZGFjaW9uRUZPUyI6IjIwMCJ9\",\"ResponseData2\":\"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxBY3VzZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4NCiAgPEV4dGVuc2lvbkRhdGEgLz4NCiAgPENvZGlnb0VzdGF0dXM+UyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS48L0NvZGlnb0VzdGF0dXM+DQogIDxFc0NhbmNlbGFibGU+Q2FuY2VsYWJsZSBzaW4gYWNlcHRhY2nDs248L0VzQ2FuY2VsYWJsZT4NCiAgPEVzdGFkbz5WaWdlbnRlPC9Fc3RhZG8+DQogIDxFc3RhdHVzQ2FuY2VsYWNpb24+RW4gcHJvY2VzbzwvRXN0YXR1c0NhbmNlbGFjaW9uPg0KICA8VmFsaWRhY2lvbkVGT1M+MjAwPC9WYWxpZGFjaW9uRUZPUz4NCjwvQWN1c2U+\",\"ResponseData3\":\"\"}",
   "token": "OxbZPD1Gd9hUomWYNBUGWkzja54cEGlnz9LLPKZY+pI0+bfE1ldh8TKjBK02xvy59Zg3/+6aVRtUXAAsj5rWXMZnDE9kwaESEthgKIPuneI=",
   "errorMsg": "",
   "errorCode": 0
}

Descripción de la Respuesta:

ResponseData1: Estructura en formato json del resultado de la solicitud de estado de cancelación realizada.

{"CodigoEstatus":"S - Comprobante obtenido satisfactoriamente.","EsCancelable":"Cancelable sin aceptación","Estado":"Vigente","EstatusCancelacion":"","ValidacionEFOS":"200"}

ResponseData2: Estructura en formato xml del resultado de la solicitud de estado de cancelación realizada.

<?xml version="1.0" encoding="utf-8"?>
  <ExtensionData />
  <CodigoEstatus>S - Comprobante obtenido satisfactoriamente.</CodigoEstatus>
  <EsCancelable>Cancelable sin aceptación</EsCancelable>
  <Estado>Vigente</Estado>
  <EstatusCancelacion>En proceso</EstatusCancelacion>
  <ValidacionEFOS>200</ValidacionEFOS>
</Acuse>


Respuesta (después de solicitar la cancelación del CFDI "En Proceso"):

{
   "result": true,
   "payload": "{\"ResponseData1\":\"eyJDb2RpZ29Fc3RhdHVzIjoiUyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS4iLCJFc0NhbmNlbGFibGUiOiJDYW5jZWxhYmxlIHNpbiBhY2VwdGFjacOzbiIsIkVzdGFkbyI6IlZpZ2VudGUiLCJFc3RhdHVzQ2FuY2VsYWNpb24iOiJFbiBwcm9jZXNvIiwiVmFsaWRhY2lvbkVGT1MiOiIyMDAifQ==\",\"ResponseData2\":\"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxBY3VzZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4NCiAgPEV4dGVuc2lvbkRhdGEgLz4NCiAgPENvZGlnb0VzdGF0dXM+UyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS48L0NvZGlnb0VzdGF0dXM+DQogIDxFc0NhbmNlbGFibGU+Q2FuY2VsYWJsZSBzaW4gYWNlcHRhY2nDs248L0VzQ2FuY2VsYWJsZT4NCiAgPEVzdGFkbz5WaWdlbnRlPC9Fc3RhZG8+DQogIDxFc3RhdHVzQ2FuY2VsYWNpb24+RW4gcHJvY2VzbzwvRXN0YXR1c0NhbmNlbGFjaW9uPg0KICA8VmFsaWRhY2lvbkVGT1M+MjAwPC9WYWxpZGFjaW9uRUZPUz4NCjwvQWN1c2U+\",\"ResponseData3\":\"\"}",
   "token": "OxbZPD1Gd9hUomWYNBUGWkzja54cEGlnz9LLPKZY+pI0+bfE1ldh8TKjBK02xvy59Zg3/+6aVRtUXAAsj5rWXMZnDE9kwaESEthgKIPuneI=",
   "errorMsg": "",
   "errorCode": 0
}

Descripción de la Respuesta:

ResponseData1: Estructura en formato json del resultado de la solicitud de estado de cancelación realizada.

{"CodigoEstatus":"S - Comprobante obtenido satisfactoriamente.","EsCancelable":"Cancelable sin aceptación","Estado":"Vigente","EstatusCancelacion":"En proceso","ValidacionEFOS":"200"}

ResponseData2: Estructura en formato xml del resultado de la solicitud de estado de cancelación realizada.

<?xml version="1.0" encoding="utf-8"?>
<Acuse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ExtensionData />
  <CodigoEstatus>S - Comprobante obtenido satisfactoriamente.</CodigoEstatus>
  <EsCancelable>Cancelable sin aceptación</EsCancelable>
  <Estado>Vigente</Estado>
  <EstatusCancelacion>En proceso</EstatusCancelacion>
  <ValidacionEFOS>200</ValidacionEFOS>
</Acuse>




REQUESTTRANSACTION


Transacción: CANCEL_DOCUMENT_3

Permite solicitar la cancelación de un CFDI al SAT (Servicio de Administración Tributaria).

En este caso se debe ejecutar la función RequestTransaction con los siguientes parámetros:


Valores:
  1. {
      "Requestor": "string",
      "Transaction": "string",
      "Country": "string",
      "Entity": "string",
      "User": "string",
      "UserName": "string",
      "Data1": "string",
      "Data2": "string",
      "Data3": "string"
    }

Descripción de Parámetros:
Requestor: Es un dato de tipo GUID que proporciona MYSuite al Emisor (cliente), y está relacionado con la seguridad de la transacción así como procesos de autenticación y autorización.
Transaction: Corresponde al método que desee invocar, en este caso CANCEL_DOCUMENT_3.
Country: Corresponde a la abreviatura del país, en este caso MX.
Entity: Identifica el RFC de quién realiza la solicitud, en este caso, corresponde a la empresa que realiza la transacción desde su ERP o sistema de gestión de facturas. Si es un cliente CFDI + Timbrado API-REST y está utilizando el ambiente de prueba debe utilizar el RFC JES900109Q90, de lo contrario debe utilizar el RFC de Emisor (cliente).
User: Repetir la información del Requestor.
UserName: Está considerado para poder indicar el usuario del ERP y que el cliente pueda conocer quién realizó la solicitud, se define por la combinación de varios parámetros de la siguiente manera:
Country.Entity.Usuario_ERP
Ejemplos:
MX.ETN040506RB3.jacinto
MX.ETN040506RB3.mendez
La adopción de un usuario u otro está en dependencia de las necesidades del cliente en cuanto a la división de sus procesos de facturación en sucursales, departamentos o simplemente identificar cada actividad de facturación por empleado.
Data1, Data2 y Data3: En función del método a utilizar se deberá contemplar el llenado de estos nodos conforme corresponda.

Data1:
Estructura XML del elemento <Dictionary> (EN BASE64), para indicar la información del cfdi a solicitar su cancelación:

 <Dictionary name="StoredXmlSelector">
    <Entry k="Store" v="ISSUED"/>
    <Entry k="IssuerCountryCode" v="MX"/>
    <Entry k="IssuerTaxId" v="JES900109Q90"/>
    <Entry k="DocumentGUID" v="90585d23-ce85-40be-8a37-e19c5d5cf2c8"/>
    <Entry k="Year" v="2026"/>
</Dictionary>

Descripción de keys "k":

k="Store" en la llave v= se debe indicar el valor "ISSUED"
k="IssuerCountryCode" en la llave v= se debe indicar el valor "MX"
k="IssuerTaxId" en la llave v= se debe indicar el RFC del Emisor del CFDI a solicitar su cancelación
k="DocumentGUID" en la llave v= se debe indicar el UUID del CFDI a solicitar su cancelación
k="Year" en la llave v= se debe indicar el año en que se emitió el CFDI a solicitar su cancelación


Data2:
Estructura XML del elemento <Dictionary> (EN BASE64), para indicar la información del motivo de cancelación del cfdi a solicitar su cancelación:

<Dictionary name="CancelInfo">
    <Entry k="Motivo" v="02"/>
    <Entry k="FolioSustitucion" v=""/>
</Dictionary>

Descripción de keys "k":

k="Motivo" en la llave v= se debe indicar la Clave del motivo de cancelación del comprobante.
Los valores posibles para este value son: 01, 02, 03 y 04.
Clave Descripción
01         Comprobante emitido con errores con relación.
02         Comprobante emitido con errores sin relación.
03         No se llevó a cabo la operación.
04         Operación nominativa relacionada en una factura global.

k="FolioSustitucion" en la llave v= se debe indicar el UUID que sustituye al folio fiscal cancelado.
***Es requerido cuando la clave del motivo de cancelación es 01, si es otra clave diferente a 01 se debe enviar el valor "".

Ejemplo de Solicitud CANCEL_DOCUMENT_3:

{
  "Requestor": "0c320b03-d4f1-47bc-9fb4-77995f9bf33e",
  "Transaction": "CANCEL_DOCUMENT_3",
  "Country": "MX",
  "Entity": "JES900109Q90",
  "User": "0c320b03-d4f1-47bc-9fb4-77995f9bf33e",
  "UserName": "jan_test_rest",
  "Data1": "PERpY3Rpb25hcnkgbmFtZT0iU3RvcmVkWG1sU2VsZWN0b3IiPjxFbnRyeSBrPSJTdG9yZSIgdj0iSVNTVUVEIi8+PEVudHJ5IGs9Iklzc3VlckNvdW50cnlDb2RlIiB2PSJNWCIvPjxFbnRyeSBrPSJJc3N1ZXJUYXhJZCIgdj0iSkVTOTAwMTA5UTkwIi8+PEVudHJ5IGs9IkRvY3VtZW50R1VJRCIgdj0iOTA1ODVkMjMtY2U4NS00MGJlLThhMzctZTE5YzVkNWNmMmM4Ii8+PEVudHJ5IGs9IlllYXIiIHY9IjIwMjYiLz48L0RpY3Rpb25hcnk+",
  "Data2": "PERpY3Rpb25hcnkgbmFtZT0iQ2FuY2VsSW5mbyI+PEVudHJ5IGs9Ik1vdGl2byIgdj0iMDIiLz48RW50cnkgaz0iRm9saW9TdXN0aXR1Y2lvbiIgdj0iIi8+PC9EaWN0aW9uYXJ5Pg==",
  "Data3": ""
}

Respuesta:

{
   "requestField":    {
      "requestorField": "00000000-0000-0000-0000-000000000000",
      "requestorNameField": null,
      "requestorActiveField": true,
      "transactionField": 291,
      "countryField": "MX",
      "entityField": "JES900109Q90",
      "userField": "00000000-0000-0000-0000-000000000000",
      "userNameField": "jan_test_rest",
      "idField": "3998dead-9f9e-4248-b6d4-d6625ac7292e",
      "timeStampField": "2026-05-07T13:09:33.1279984-06:00"
   },
   "responseField":    {
      "resultField": true,
      "timeStampField": "2026-05-07T13:09:34.1639881-06:00",
      "lastResultField": "",
      "codeField": 1,
      "descriptionField": "",
      "hintField": "",
      "dataField": " 5990 3998dead-9f9e-4248-b6d4-d6625ac7292e",
      "processorField": "TEST-BACK03",
      "identifierField":       {
         "countryField": "MX",
         "entityField": "JES900109Q90",
         "fiscalNameField": "JIMENEZ ESTRADA SALAS A A",
         "aYearField": "0",
         "aNumberField": "",
         "batchField": "SPT",
         "serialField": "2491",
         "documentGUIDField": "90585d23-ce85-40be-8a37-e19c5d5cf2c8",
         "issuedTimeStampField": "2026-05-07T12:06:15",
         "enrolledTimeStampField": "2026-05-07T12:06:18",
         "paidTimeStampField": "",
         "cancelledTimeStampField": "",
         "internalIDField": "",
         "batchIDField": "",
         "batchTimeStampField": "",
         "batchRequestorCountryField": "",
         "batchRequestorEntityField": "",
         "batchPositionField": "",
         "receiverCountryField": "MX",
         "receiverEntityField": "JES900109Q90",
         "receiverTaxIDField": "",
         "receiverNameField": "JIMENEZ ESTRADA SALAS A A",
         "claveAgenteField": "",
         "numeroDePolizaField": "",
         "currencyField": "MXN",
         "totalAmountField": "1,160.00",
         "type1Field": "ingreso",
         "type2Field": "FACTURA",
         "suggestedFileNameField": "JES900109Q90_SPT_2491_JES900109Q90",
         "suggestedFileName2Field": "07052026___SPT2491_",
         "observacionesField": null,
         "observacionesHtmlField": null
      },
      "batchIdentifierField": null
   },
   "responseDataField":    {
      "responseData1Field": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz48Q2FuY2VsYUNGRFJlc3VsdCBGZWNoYT0iMjAyNi0wNS0wN1QxMzowOTozMy45ODQ2NTkzIiBSZmNFbWlzb3I9IkpFUzkwMDEwOVE5MCIgeG1sbnM9Imh0dHA6Ly9jYW5jZWxhY2ZkLnNhdC5nb2IubXgiPjxGb2xpb3M+PFVVSUQ+OTA1ODVEMjMtQ0U4NS00MEJFLThBMzctRTE5QzVENUNGMkM4PC9VVUlEPjxFc3RhdHVzVVVJRD4yMDE8L0VzdGF0dXNVVUlEPjwvRm9saW9zPjxTaWduYXR1cmUgSWQ9IlNlbGxvU0FUIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkc2lnIyI+PFNpZ25lZEluZm8+PENhbm9uaWNhbGl6YXRpb25NZXRob2QgQWxnb3JpdGhtPSJodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAxL1JFQy14bWwtYzE0bi0yMDAxMDMxNSIgLz48U2lnbmF0dXJlTWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxkc2lnLW1vcmUjaG1hYy1zaGE1MTIiIC8+PFJlZmVyZW5jZSBVUkk9IiI+PFRyYW5zZm9ybXM+PFRyYW5zZm9ybSBBbGdvcml0aG09Imh0dHA6Ly93d3cudzMub3JnL1RSLzE5OTkvUkVDLXhwYXRoLTE5OTkxMTE2Ij48WFBhdGg+bm90KGFuY2VzdG9yLW9yLXNlbGY6OipbbG9jYWwtbmFtZSgpPSdTaWduYXR1cmUnXSk8L1hQYXRoPjwvVHJhbnNmb3JtPjwvVHJhbnNmb3Jtcz48RGlnZXN0TWV0aG9kIEFsZ29yaXRobT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS8wNC94bWxlbmMjc2hhNTEyIiAvPjxEaWdlc3RWYWx1ZT5vSnJtbTgxM0xBbXlmU1hjS2x4enFEc1NKbW1YNEJGYzhBWlVXSjhlamRuQU00RDE1RlhIN1IycUhsbWtxTXZMaklPVGNPS2xtcTg0eUd4UFdINmg5QT09PC9EaWdlc3RWYWx1ZT48L1JlZmVyZW5jZT48L1NpZ25lZEluZm8+PFNpZ25hdHVyZVZhbHVlPnoxanN5aVpzdFBRS2dOZDNoY0RvWnBlSE0yR3F6d3l0MHppSVJ6UXlzMWNHTC9FTzJiSm5SYjc5MFBOZmM0TUlnS2h5QnVLNW00dUx0S1pMT000MjlBPT08L1NpZ25hdHVyZVZhbHVlPjxLZXlJbmZvPjxLZXlOYW1lPjMwMDAxMDAwMDAwNTAwMDAyNTU0PC9LZXlOYW1lPjxLZXlWYWx1ZT48UlNBS2V5VmFsdWU+PE1vZHVsdXM+aFVjVU9vR0V0U0RBbHJGOEtlZ1FrR0tZOGFEQWU5dE5Sa2Y0OHVqMStZaXJEUDRjTUVkOFlFZWxRWTFqTHUxR0lOWUtmOU45WHhtT2ZIZEw0RlVyK2N1T2dyQnZpYUdXY0lzSmZaODBJR3B2b3g2a1VTSG9SdCtoMzJ5UWF5VzBIdU5PcDBiM3lpQnA5WTZqVGRZVEZUQVZ6Z3pVamY0TGZWdDhuNUZlalZaMnhFUkl5Uk9uR2diSzhBNHhCc1BwRmF6SFFrSzJQQ2lZZStMWUJtMFV4OVVaWWtZSjlNdTlyTDVjNTFTamdxOEpKZWtvcnAwQnpmS2FkUnJTRUZ5RDJaNkd3QjBSc3dqTFpRc3BvalpHeFVucWxibGR2TzZUakZVVjRNVDdFVjhQN2YyVlRTMHlyNHFTd3gweTA4MHpvSzEwQ2JJb0pYZnNGUk9IeXBGajV3PT08L01vZHVsdXM+PEV4cG9uZW50PkFRQUI8L0V4cG9uZW50PjwvUlNBS2V5VmFsdWU+PC9LZXlWYWx1ZT48L0tleUluZm8+PC9TaWduYXR1cmU+PC9DYW5jZWxhQ0ZEUmVzdWx0Pg==",
      "responseData2Field": "SAT: 201 - UUID Admitido al proceso de cancelación.",
      "responseData3Field": "",
      "responseDataSetField": null
   }
}


responseData1Field: codificación en Base64 que contiene el XML del resultado de la solicitud de cancelación realizada

<?xml version="1.0" encoding="UTF-8"?><CancelaCFDResult Fecha="2026-05-07T13:09:33.9846593" RfcEmisor="JES900109Q90" xmlns="http://cancelacfd.sat.gob.mx"><Folios><UUID>90585D23-CE85-40BE-8A37-E19C5D5CF2C8</UUID><EstatusUUID>201</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>oJrmm813LAmyfSXcKlxzqDsSJmmX4BFc8AZUWJ8ejdnAM4D15FXH7R2qHlmkqMvLjIOTcOKlmq84yGxPWH6h9A==</DigestValue></Reference></SignedInfo><SignatureValue>z1jsyiZstPQKgNd3hcDoZpeHM2Gqzwyt0ziIRzQys1cGL/EO2bJnRb790PNfc4MIgKhyBuK5m4uLtKZLOM429A==</SignatureValue><KeyInfo><KeyName>30001000000500002554</KeyName><KeyValue><RSAKeyValue><Modulus>hUcUOoGEtSDAlrF8KegQkGKY8aDAe9tNRkf48uj1+YirDP4cMEd8YEelQY1jLu1GINYKf9N9XxmOfHdL4FUr+cuOgrBviaGWcIsJfZ80IGpvox6kUSHoRt+h32yQayW0HuNOp0b3yiBp9Y6jTdYTFTAVzgzUjf4LfVt8n5FejVZ2xERIyROnGgbK8A4xBsPpFazHQkK2PCiYe+LYBm0Ux9UZYkYJ9Mu9rL5c51Sjgq8JJekorp0BzfKadRrSEFyD2Z6GwB0RswjLZQspojZGxUnqlbldvO6TjFUV4MT7EV8P7f2VTS0yr4qSwx0y080zoK10CbIoJXfsFROHypFj5w==</Modulus><Exponent>AQAB</Exponent></RSAKeyValue></KeyValue></KeyInfo></Signature></CancelaCFDResult>

responseData2Field: Clave SAT obtenida.

Info
La clave SAT: 201 sólo significa que la solicitud de cancelación ha sido recibida por la autoridad SAT para su gestión, no quiere decir que el CFDI ya está cancelado.

Para conocer el estado de cancelación de un CFDI, se debe implementar la siguiente transacción "CONSULTAR_DOCUMENTO"



Transacción: CONSULTAR_DOCUMENTO

Permite solicitar el estado de cancelación de un CFDI al SAT (Servicio de Administración Tributaria).

En este caso se debe ejecutar la función RequestTransaction con los siguientes parámetros:


Valores:
  1. {
      "Requestor": "string",
      "Transaction": "string",
      "Country": "string",
      "Entity": "string",
      "User": "string",
      "UserName": "string",
      "Data1": "string",
      "Data2": "string",
      "Data3": "string"
    }

Descripción de Parámetros:
Requestor: Es un dato de tipo GUID que proporciona MYSuite al Emisor (cliente), y está relacionado con la seguridad de la transacción así como procesos de autenticación y autorización.
Transaction: Corresponde al método que desee invocar, en este caso CONSULTAR_DOCUMENTO.
Country: Corresponde a la abreviatura del país, en este caso MX.
Entity: Identifica el RFC de quién realiza la solicitud, en este caso, corresponde a la empresa que realiza la transacción desde su ERP o sistema de gestión de facturas. Si es un cliente CFDI + Timbrado API-REST y está utilizando el ambiente de prueba debe utilizar el RFC JES900109Q90, de lo contrario debe utilizar el RFC de Emisor (cliente).
User: Repetir la información del Requestor.
UserName: Está considerado para poder indicar el usuario del ERP y que el cliente pueda conocer quién realizó la solicitud, se define por la combinación de varios parámetros de la siguiente manera:
Country.Entity.Usuario_ERP
Ejemplos:
MX.ETN040506RB3.jacinto
MX.ETN040506RB3.mendez
La adopción de un usuario u otro está en dependencia de las necesidades del cliente en cuanto a la división de sus procesos de facturación en sucursales, departamentos o simplemente identificar cada actividad de facturación por empleado.
Data1, Data2 y Data3: En función del método a utilizar se deberá contemplar el llenado de estos nodos conforme corresponda.

Data1:
Estructura JSON (EN BASE64), para indicar la información del cfdi a solicitar su estado de cancelación:

{ 'docType': 'issued',
'emisor': 'JES900109Q90',
'folioFiscal': '2c8271de-bc26-418a-87af-c79d71cf2117',
'year': '2026' }

Descripción de keys:

'docType': Tipo de documento que se quiere consultar, issued (emitido) o received (recibido), los valores posibles son issued ó received.
'emisor': Rfc del emisor de la factura que se quiere consultar.
'folioFiscal': Folio fiscal (uuid) de la factura que se quiere consultar su estado de cancelación.
'year': Año de la fecha de emisión de la factura que se quiere consultar su estado de cancelación.


InfoLos criterios docType, emisor y folioFiscal son obligatorios; el criterio year solo es obligatorio para casos de documentos emitidos (docType con valor "issued").

Ejemplo de Solicitud CONSULTAR_DOCUMENTO:

{
  "Requestor": "0c320b03-d4f1-47bc-9fb4-77995f9bf33e",
  "Transaction": "CONSULTAR_DOCUMENTO",
  "Country": "MX",
  "Entity": "JES900109Q90",
  "User": "0c320b03-d4f1-47bc-9fb4-77995f9bf33e",
  "UserName": "jan_test_rest",
  "Data1": "eyAnZG9jVHlwZSc6ICdpc3N1ZWQnLCAnZW1pc29yJzogJ0pFUzkwMDEwOVE5MCcsICdmb2xpb0Zpc2NhbCc6ICcyYzgyNzFkZS1iYzI2LTQxOGEtODdhZi1jNzlkNzFjZjIxMTcnLCAneWVhcic6ICcyMDI2JyB9",
  "Data2": "",
  "Data3": ""
}

Respuesta:

{
   "requestField":    {
      "requestorField": "00000000-0000-0000-0000-000000000000",
      "requestorNameField": null,
      "requestorActiveField": true,
      "transactionField": 248,
      "countryField": "MX",
      "entityField": "JES900109Q90",
      "userField": "00000000-0000-0000-0000-000000000000",
      "userNameField": "jan_test_rest",
      "idField": "c4cf1650-ec2f-427f-a18a-e4a4441d7055",
      "timeStampField": "2026-05-07T10:44:49.2134565-06:00"
   },
   "responseField":    {
      "resultField": true,
      "timeStampField": "2026-05-07T10:44:49.4981546-06:00",
      "lastResultField": "",
      "codeField": 1,
      "descriptionField": "",
      "hintField": "",
      "dataField": " 4748 c4cf1650-ec2f-427f-a18a-e4a4441d7055",
      "processorField": "TEST-BACK03",
      "identifierField":       {
         "countryField": "MX",
         "entityField": "JES900109Q90",
         "fiscalNameField": "JIMENEZ ESTRADA SALAS A A",
         "aYearField": "0",
         "aNumberField": "",
         "batchField": "MONTES",
         "serialField": "44277",
         "documentGUIDField": "2c8271de-bc26-418a-87af-c79d71cf2117",
         "issuedTimeStampField": "2026-05-07T09:53:00",
         "enrolledTimeStampField": "2026-05-07T09:53:01",
         "paidTimeStampField": "",
         "cancelledTimeStampField": "",
         "internalIDField": "FA002125-5331450105004761",
         "batchIDField": "",
         "batchTimeStampField": "",
         "batchRequestorCountryField": "",
         "batchRequestorEntityField": "",
         "batchPositionField": "",
         "receiverCountryField": "MX",
         "receiverEntityField": "XAXX010101000",
         "receiverTaxIDField": "",
         "receiverNameField": "OSCAR JESUS GUTIERREZ",
         "claveAgenteField": "",
         "numeroDePolizaField": "",
         "currencyField": "MXN",
         "totalAmountField": "940.00",
         "type1Field": "ingreso",
         "type2Field": "FACTURA",
         "suggestedFileNameField": "JES900109Q90_MONTES_44277_XAXX010101000",
         "suggestedFileName2Field": "07052026__FA002125-5331450105004761_MONTES44277_",
         "observacionesField": null,
         "observacionesHtmlField": null
      },
      "batchIdentifierField": null
   },
   "responseDataField":    {
      "responseData1Field": "eyJDb2RpZ29Fc3RhdHVzIjoiUyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS4iLCJFc0NhbmNlbGFibGUiOiJDYW5jZWxhYmxlIHNpbiBhY2VwdGFjacOzbiIsIkVzdGFkbyI6IlZpZ2VudGUiLCJFc3RhdHVzQ2FuY2VsYWNpb24iOiJFbiBwcm9jZXNvIiwiVmFsaWRhY2lvbkVGT1MiOiIyMDAifQ==",
      "responseData2Field": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4NCjxBY3VzZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczp4c2Q9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIj4NCiAgPEV4dGVuc2lvbkRhdGEgLz4NCiAgPENvZGlnb0VzdGF0dXM+UyAtIENvbXByb2JhbnRlIG9idGVuaWRvIHNhdGlzZmFjdG9yaWFtZW50ZS48L0NvZGlnb0VzdGF0dXM+DQogIDxFc0NhbmNlbGFibGU+Q2FuY2VsYWJsZSBzaW4gYWNlcHRhY2nDs248L0VzQ2FuY2VsYWJsZT4NCiAgPEVzdGFkbz5WaWdlbnRlPC9Fc3RhZG8+DQogIDxFc3RhdHVzQ2FuY2VsYWNpb24+RW4gcHJvY2VzbzwvRXN0YXR1c0NhbmNlbGFjaW9uPg0KICA8VmFsaWRhY2lvbkVGT1M+MjAwPC9WYWxpZGFjaW9uRUZPUz4NCjwvQWN1c2U+",
      "responseData3Field": "",
      "responseDataSetField": null
   }
}


responseData1Field: codificación en Base64 que contiene en estructura JSON el resultado de la solicitud de estado de cancelación realizada:

{"CodigoEstatus":"S - Comprobante obtenido satisfactoriamente.",
"EsCancelable":"Cancelable sin aceptación",
"Estado":"Vigente",
"EstatusCancelacion":"En proceso",
"ValidacionEFOS":"200"}

responseData2Field: codificación en Base64 que contiene en estructura XML el resultado de la solicitud de estado de cancelación realizada:

<?xml version="1.0" encoding="utf-8"?>
  <ExtensionData />
  <CodigoEstatus>S - Comprobante obtenido satisfactoriamente.</CodigoEstatus>
  <EsCancelable>Cancelable sin aceptación</EsCancelable>
  <Estado>Vigente</Estado>
  <EstatusCancelacion>En proceso</EstatusCancelacion>
  <ValidacionEFOS>200</ValidacionEFOS>
</Acuse>

Alert
En el sentido legal, esto no es un Acuse (ya que no viene firmado digitalmente por el SAT).


    • Related Articles

    • CFDI + TIMBRADO API REST

      Es un servicio sustentado en nuestro esquema de integración que engloba los requerimientos de todas las empresas que conforman el mercado de Facturación Electrónica en México y que cuentan con un Sistema administrativo o ERP para el procesamiento de ...
    • NUEVO ESQUEMA DE CANCELACIÓN 2022 CLIENTES CFDI + TIMBRADO

      Transacciones para nuevo esquema de cancelación 2022. Modalidad (CFDI + TIMBRADO) 1. CANCEL_DOCUMENT_3 Petición. · En Data1 se envía, codificado Base64, un xml que especifica la información del documento que se quiere cancelar. Ejemplo de xml (se ...
    • NUEVO ESQUEMA DE CANCELACIÓN 2022 CLIENTES SOLO TIMBRADO

      Transacciones para nuevo esquema de cancelación 2022. Modalidad (SOLO TIMBRADO) 1. CANCEL_CFDI_3 Petición. · En Data1 (igual que como se hacía para las dos transacciones anteriores) se envía, codificado Base64, un xml que especifica la solicitud de ...
    • CONSIDERACIONES SERVICIO DE CANCELACIÓN CLIENTES CFDI + TIMBRADO

      GENERALIDADES En MYSuite existen clientes (que, por su forma de integrarse), son considerados como clientes ASP (CFDI + TIMBRADO). Para este tipo de clientes ASP, MYSuite incorpora internamente una tabla intermedia de registros en la cual, se tiene ...
    • API REST

      Para el servicio de CFDI + TIMBRADO API REST, en MYSuite tenemos dos ambientes: Ambiente Test: https://api.mysuitetest.com/ Ambiente Productivo: https://api.mysuitecfdi.com/ En estos enlaces encontrarás los servicios disponibles para consumir los ...