Validate a CFDI

API to validate a CFDI

Intro

With this API, you can validate if one CFDI, if it is valid and is registered on the SAT portal.

Important points

Request

To make the request it is necessary provide all the fields.

fieldtyperequiredDescription
montoNumericYesnumerical value greater than zero, may contain decimal point
rfcEmisorAlphanumericYesIndicate the RFC of the issuer.
rfcReceptorAlphanumericYesIndicate the RFC of the receiver.
uuidAlphanumericYesIndicate the uuid, the middle hyphens are allowed

Successful response

Inside the response object you will only get the next fields.

field NameDescription
CodigoEstatusIt will indicate the status code of the CFDI
EsCancelableIt will indicate if you can still cancel the CFDI
EstadoStatus of the invoice
EstatusCancelacionIt will contain the status if the invoice cancellation was made
ValidacionEFOSN/A
{
    "id": "65600ac52bacd50889a58413",
    "createdAt": "2023-11-24T02:30:29.444346809Z",
    "finishedAt": "2023-11-24T02:30:29.713632202Z",
    "duration": 269,
    "status": "SUCCESS",
    "request": {
        "monto": 161,
        "rfcEmisor": "SAS121109B14",
        "rfcReceptor": "MQMJ900119U24",
        "uuid": "44E5AF40-8E46-4AFE-BA70-64F5CDB4A6DC"
    },
    "response": {
        "CodigoEstatus": "S - Comprobante obtenido satisfactoriamente.",
        "EsCancelable": "Cancelable sin aceptación",
        "Estado": "Vigente",
        "EstatusCancelacion": "",
        "ValidacionEFOS": "200"
    }
}

Test the service (test cases)

We have included a query parameter in Sandbox to enable you to query the test cases that we created for running tests. To get a response, fill the testCaseId parameter with any of the following cases:

NumIdNameDescription
1663567bb713cf2110a1106a5No encontradoIndicates that no information was found for the data provided
2663567bb713cf2110a1106a4Respuesta exitosaIndicates one successful response

📘

Test your own test case

In case you want to test your own test case created in link, you can send in the testCaseId parameter the identifier of the test case you want to use.

For more information visit our knowledge center to know more about test cases

Listing the possible error responses

Required fields

You will get a 400 bad request error any of the fields are not provided in the request body.

{
    "monto": "FORMAT_ERROR; can't be zero or less",
    "rfcEmisor": "EMPTY_ERROR; can't be empty",
    "rfcReceptor": "EMPTY_ERROR; can't be empty",
    "uuid": "EMPTY_ERROR; can't be empty"
}

Invalid format

You will get a 400 bad request error when the RFC does not conform the specific format.

{
    "monto": "FORMAT_ERROR; should be have 2 decimal digits maximum",
    "rfcEmisor": "FORMAT_ERROR; should be in rfc format",
    "rfcReceptor": "FORMAT_ERROR; should be in rfc format",
    "uuid": "FORMAT_ERROR; should be in uuid format"
}

Test case not found

If a test case parameter is not sent or a value other than those mentioned above is sent, the service will return the following error 400 bad request

{
    "testCase": "EMPTY_ERROR; test case not found",
    "testCaseId": "EMPTY_ERROR; test case not found with given id"
}

Unauthorized

It means that the provided API is incorrect and that you are not authorized to access it. You will not receive a body, only a 401 HTTP code.

Language
Authorization
Header
Click Try It! to start a request and see the response here!