Funcionamiento interno
Expresiones (input)
El consumidor requiere una expresión para poder consultar. La expresión es el texto que viene en el código QR de la representación impresa de un CFDI.
Las expresiones son diferentes para CFDI 3.2, CFDI 3.3 y RET 1.0. Tienen reglas específicas de formato y de la información que debe contener.
Si no cuentas con la expresión, te recomiendo usar la librería @nodecfdi/cfdi-expresiones
.
Estados (salida)
Después de consumir el servicio, se responderá con un objeto CfdiStatus
que agrupa de los cinco
estados.
No compares directamente los valores de los estados, en su lugar utiliza los métodos is*
, por
ejemplo response.document.isCancelled()
.
Posibles estados:
-
CodigoEstatus
:query: QueryStatus
.Found
: Si el estado inicia conS -
.NotFound
: en cualquier otro caso.
-
Estado
:document: DocumentStatus
.Active
: Si el estado reportóVigente
.Cancelled
: Si el estado reportóCancelado
.NotFound
: en cualquier otro caso.
-
EsCancelable
:cancellable: CancellableStatus
.CancellableByDirectCall
: Si el estado reportóCancelable sin aceptación
.CancellableByApproval
: Si el estado reportóCancelable con aceptación
.NotCancellable
: en cualquier otro caso.
-
EstatusCancelacion
:cancellation: CancellationStatus
.CancelledByDirectCall
: Si el estado reportóCancelado sin aceptación
.CancelledByApproval
: Si el estado reportóCancelado con aceptación
.CancelledByExpiration
: Si el estado reportóPlazo vencido
.Pending
: Si el estado reportóEn proceso
.Disapproved
: Si el estado reportóSolicitud rechazada
.Undefined
: en cualquier otro caso.
-
ValidacionEFOS
:efos: EfosStatus
.Included
: Si el estado no reportó200
o201
.Excluded
: Si el estado reportó200
o201
.
Estados mutuamente excluyentes
CodigoEstatus | Estado | EsCancelable | EstatusCancelacion | Explicación |
---|---|---|---|---|
N - … | * | * | * | El SAT no sabe del CFDI con la expresión dada |
S - … | Cancelado | * | Plazo vencido | Cancelado por plazo vencido |
S - … | Cancelado | * | Cancelado con aceptación | Cancelado con aceptación del receptor |
S - … | Cancelado | * | Cancelado sin aceptación | No fue requerido preguntarle al receptor y se canceló |
S - … | Vigente | No cancelable | * | No se puede cancelar |
S - … | Vigente | Cancelable sin aceptación | * | Se puede cancelar, pero no se ha realizado la cancelación |
S - … | Vigente | Cancelable con aceptación | (ninguno) | Se puede cancelar, pero no se ha realizado la solicitud |
S - … | Vigente | Cancelable con aceptación | En proceso | Se hizo la solicitud y está en espera de respuesta |
S - … | Vigente | Cancelable con aceptación | Solicitud rechazada | Se hizo la solicitud y fue rechazada |
Cuando tienes un CFDI en estado Cancelable con aceptación y mandas a hacer la cancelación entonces su estado de cancelación cambiaría a En proceso.
El receptor puede aceptar la cancelación (Cancelado con aceptación) o rechazarla (Solicitud rechazada).
Si es la primera vez que se hace la solicitud, el receptor tiene 72 horas para aceptarla o rechazarla, si no lo hace entonces automáticamente será cancelada (Plazo vencido).
Podrías volver a enviar la solicitud de cancelación por segunda vez aun cuando la solicitud fue previamente rechazada.
En ese caso, el receptor puede aceptar o rechazar la cancelación, pero ya no aplicará un lapso de 72 horas. Por lo anterior entonces podrías tener el CFDI en estado de cancelación en proceso indefinidamente. Incluso, que la cancelación suceda meses después de lo esperado.