Estado cfdi
Por expresión
api/v1/SAT/status-cfdi
Este servicio regresa la validación de una expresión de un cfdi.
URL
GET /api/v1/SAT/status-cfdi?expression={expression-cfdi}
Headers
Authorization: Bearer {token}
Accept: application/json
URL Params
Input | Type | Required | Values acceptable | Default |
---|---|---|---|---|
expression | string | true | type:URL |
Data Params
None
Respuestas Posibles
Success
Code: 200 Response Aceptada
Content:
{
"expression": {
"fullExpression": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=CEE4BE01-ADFA-4DEB-8421-ADD60F0BEDAC&re=POT9207213D6&rr=DIM8701081LA&tt=2010.01&fe=/OAgdg=="
},
"codigoEstatus": "found",
"estado": "active",
"esCancelable": "cancellableByApproval",
"estatusCancelacion": "undefined",
"validacionEFOS": "excluded"
}
Unauthorized
Code: 401 Unauthorized
Content:
{
"message": "Unauthenticated."
}
Unprocessable Content
Code: 422 Unprocessable Content
Content:
{
"errors": {
"expression": ["The expression field is required."]
}
}
{
"errors": {
"expression": ["The expression field must be a valid URL."]
}
}
Ejemplo con curl
curl --location --request GET 'https://bridge.paladins.mx/api/v1/SAT/status-cfdi?expression=https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=CEE4BE01-ADFA-4DEB-8421-ADD60F0BEDAC%26re=POT9207213D6%26rr=DIM8701081LA%26tt=2010.01%26fe=/OAgdg==' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer zbSSVOcamRzUmgx6OD8FS3N3XvB3vhhViqk3iuK6'
Por archivos cfdis (.xml)
api/v1/SAT/status-cfdi
Este servicio regresa el estado de los cfdis mandando los xml para su revisión.
URL
POST /api/v1/SAT/status-cfdi
Headers
Authorization: Bearer {token}
Accept: application/json
URL Params
Input | Type | Required | Values acceptable | Default |
---|---|---|---|---|
cfdis | array | true | 'file', 'mimetypes:application/xml,text/xml' |
Data Params
None
Respuestas Posibles
Success
Code: 200 Response Aceptada
Con un archivo xml
Content:
{
"data": [
{
"expression": {
"fullExpression": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=4c7a0582-5151-43b3-ba74-4e710479a1ee&re=LAN8507268IA&rr=XAXX010101000&tt=6.9&fe=2RuEVw==",
"values": {
"id": "4c7a0582-5151-43b3-ba74-4e710479a1ee",
"re": "LAN8507268IA",
"rr": "XAXX010101000",
"tt": "6.9",
"fe": "i3rTWfK4yQQxqChb7AtT+DSVmJGcer3dR4yikzGq7qE8Z0sKggeh79BbMtZHlH1ltQX9KEL5o8Pl4zy4myj3z6idoU1m5rbD+3RgpW7M4zyQpIOPMThermHXHkpy7DoiX2sFeBJ2LJIEsYCaeWZaLqgwTlEboXk8ySOD8BqoSO2obtEyHVik5KZLwR8gfSujlxCkgbonzDl27VOcbjzzxHjLnL8230WT+JN32K1lY/cZvH5H2E0ClbOLhm3UluShxIBMktxTN+iRHNy0hPFXGBs2MB9esnVje9sTx+Q9YakrEnyQYuQaL/ZZtD4ryypsLASyleWdg4H1nUkI2RuEVw=="
}
},
"codigoEstatus": "notFound",
"estado": "notFound",
"esCancelable": "notCancellable",
"estatusCancelacion": "undefined",
"validacionEFOS": "included"
}
]
}
Con multiples archivos xml
Content:
{
"data": [
[
{
"expression": {
"fullExpression": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=4c7a0582-5151-43b3-ba74-4e710479a1ee&re=LAN8507268IA&rr=XAXX010101000&tt=6.9&fe=2RuEVw==",
"values": {
"id": "4c7a0582-5151-43b3-ba74-4e710479a1ee",
"re": "LAN8507268IA",
"rr": "XAXX010101000",
"tt": "6.9",
"fe": "i3rTWfK4yQQxqChb7AtT+DSVmJGcer3dR4yikzGq7qE8Z0sKggeh79BbMtZHlH1ltQX9KEL5o8Pl4zy4myj3z6idoU1m5rbD+3RgpW7M4zyQpIOPMThermHXHkpy7DoiX2sFeBJ2LJIEsYCaeWZaLqgwTlEboXk8ySOD8BqoSO2obtEyHVik5KZLwR8gfSujlxCkgbonzDl27VOcbjzzxHjLnL8230WT+JN32K1lY/cZvH5H2E0ClbOLhm3UluShxIBMktxTN+iRHNy0hPFXGBs2MB9esnVje9sTx+Q9YakrEnyQYuQaL/ZZtD4ryypsLASyleWdg4H1nUkI2RuEVw=="
}
},
"codigoEstatus": "notFound",
"estado": "notFound",
"esCancelable": "notCancellable",
"estatusCancelacion": "undefined",
"validacionEFOS": "included"
},
{
"expression": {
"fullExpression": "https://verificacfdi.facturaelectronica.sat.gob.mx/default.aspx?id=4c7a0582-5151-43b3-ba74-4e710479a1ee&re=LAN8507268IA&rr=XAXX010101000&tt=6.9&fe=2RuEVw==",
"values": {
"id": "4c7a0582-5151-43b3-ba74-4e710479a1ee",
"re": "LAN8507268IA",
"rr": "XAXX010101000",
"tt": "6.9",
"fe": "i3rTWfK4yQQxqChb7AtT+DSVmJGcer3dR4yikzGq7qE8Z0sKggeh79BbMtZHlH1ltQX9KEL5o8Pl4zy4myj3z6idoU1m5rbD+3RgpW7M4zyQpIOPMThermHXHkpy7DoiX2sFeBJ2LJIEsYCaeWZaLqgwTlEboXk8ySOD8BqoSO2obtEyHVik5KZLwR8gfSujlxCkgbonzDl27VOcbjzzxHjLnL8230WT+JN32K1lY/cZvH5H2E0ClbOLhm3UluShxIBMktxTN+iRHNy0hPFXGBs2MB9esnVje9sTx+Q9YakrEnyQYuQaL/ZZtD4ryypsLASyleWdg4H1nUkI2RuEVw=="
}
},
"codigoEstatus": "notFound",
"estado": "notFound",
"esCancelable": "notCancellable",
"estatusCancelacion": "undefined",
"validacionEFOS": "included"
}
]
]
}
Unauthorized
Code: 401 Unauthorized
Content:
{
"message": "Unauthenticated."
}
Unprocessable Content
Code: 422 Unprocessable Content
Content:
{
"errors": {
"cfdis": ["The cfdis field is required."]
}
}
{
"errors": {
"cfdis.0": [
"The cfdis.0 field must be a file of type: application/xml, text/xml."
]
}
}
Ejemplo con curl
curl --location --request POST 'https://bridge.paladins.mx/api/v1/SAT/status-cfdi' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer zbSSVOcamRzUmgx6OD8FS3N3XvB3vhhViqk3iuK6' \
--form 'cfdis[]=@"/home/miguelangelmp10/Descargas/detallista-example.xml"' \
--form 'cfdis[]=@"/home/miguelangelmp10/Descargas/detallista-example.xml"'
Por parametros
/api/v1/SAT/status-cfdi-with-parameters
Este servicio regresa la validación de una expresión de un cfdi. Usando requiendo
- folioFiscal
- rfcEmisor
- rfcReceptor
URL
POST /api/v1/SAT/status-cfdi-with-parameters
Headers
Authorization: Bearer {token}
Accept: application/json
URL Params
None
Data Params
Input | Type | Required | Values acceptable | Default |
---|---|---|---|---|
folioFiscal | string | true | type:uuid | |
rfcEmisor | string | true | type:rfc | |
rfcReceptor | string | true | type:rfc |
Respuestas Posibles
Success
Code: 200 Response Aceptada
Content:
{
"rfcEmisor": "IAPJ561231KP5",
"nombreEmisor": "JUAN FRANCISCO ERNESTO IBARRA PADILLA",
"rfcReceptor": "CMM860120KI1",
"nombreReceptor": "CASA DE MONEDA DE MÉXICO",
"folioFiscal": "ECF48707-7C06-4408-AA09-D8E8C6BFF720",
"fechaEmision": "2017-12-04T12:23:37",
"fechaCertificacion": "2017-12-04T12:23:38",
"rfcPac": "FIN1203015JA",
"monto": "$115.20",
"efectoComprobante": "Ingreso",
"estado": "Vigente",
"esCancelable": "Cancelable sin aceptación",
"estatusCancelacion": "",
"fechaCancelacion": "",
"motivo": "",
"folioSustitucion": ""
}
Unauthorized
Code: 401 Unauthorized
Content:
{
"message": "Unauthenticated."
}
Unprocessable Content
Code: 422 Unprocessable Content
Content:
{
"errors": {
"folioFiscal": ["The folio fiscal field is required."],
"rfcEmisor": ["The rfc emisor field is required."],
"rfcReceptor": ["The rfc receptor field is required."]
}
}
{
"errors": {
"folioFiscal": ["The folio fiscal field must be a valid UUID."]
}
}
Ejemplo con curl
curl --location --request POST 'https://bridge.paladins.mx/api/v1/SAT/status-cfdi-with-parameters' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer 5MOzR0TAmmpjikNzDKwc72LBjicd2Fo1AsT73aRG' \
--header 'Content-Type: application/json' \
--data-raw '{
"folioFiscal": "ECF48707-7C06-4408-AA09-D8E8C6BFF720",
"rfcEmisor": "IAPJ561231KP5",
"rfcReceptor": "CMM860120KI1"
}'
Posibles estados
CodigoEstatus
found
: Si el estado inicia conS -
.notFound
: en cualquier otro caso.
Estado
active
: Si el estado reportóVigente
.cancelled
: Si el estado reportóCancelado
.notFound
: en cualquier otro caso.
EsCancelable
cancellableByDirectCall
: Si el estado reportóCancelable sin aceptación
.cancellableByApproval
: Si el estado reportóCancelable con aceptación
.notCancellable
: en cualquier otro caso.
EstatusCancelacion
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
included
: Si el estado no reportó200
.excluded
: Si el estado reportó200
.
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.