Article 69

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

Intro

This API is meant to check whether an RFC appears in any of the 14 lists of published taxpayers that the SAT releases under article 69 of the Federal Fiscal Code — firm and enforceable tax debts, cancelled and forgiven debts, non-located taxpayers, court sentences, digital seal certificates rendered ineffective, and others.
In the answer you will get one entry for every list where the RFC appears, each one with the data that list publishes.

kiban cloud rebuilds its copy of the lists every day at 3:00 a.m. (Mexico City time) from the SAT open-data files, so the query is resolved in seconds and does not depend on the SAT portal being available.

Important Points

Mandatory Fields

kiban cloud performs validations on the information sent to detect special characters or incorrect formats.

fieldtyperequiredlengthDescription
rfcAlphanumericYes12-13RFC to look up. 13 positions for a Persona Física, 12 for a Persona Moral.
externalIdAlphanumericNoN/AYour own identifier. It is not used in the query: it is stored in searchableBy so you can find the execution later.

The response is a plain array, not a wrapped object

Unlike articulo_69_b, this service does not return a status / results wrapper. The response field is directly the array of matches, and it arrives empty ([]) when the RFC is not published in any list. In both cases the execution ends with status: SUCCESS: an RFC with no matches is a valid result, not an error.

One entry per list

The same RFC can appear in several lists at once — for example in firmes and in cancelados — and you get one entry for each. The listado field tells you which list the entry comes from:

listadoSAT list
firmesFirm tax debts
exigiblesEnforceable tax debts
canceladosDebts cancelled for being uncollectible or due to insolvency (art. 146-A)
cancelados_146a_2007_2015Debts cancelled under art. 146-A, 2007-2015
condonados_2007_2015Debts forgiven 2007-2015
condonados_por_decretoDebts forgiven by decree
condonados_concurso_mercantil_art146bDebts forgiven due to bankruptcy proceedings (art. 146-B)
reduccion_multas_art74Fine reductions under art. 74
reduccion_recargos_art21Surcharge reductions under art. 21
retorno_inversionesReturn of investments
no_localizadosNon-located taxpayers
sentenciasTaxpayers with a court sentence for a tax crime
csd_sin_efectosTaxpayers whose digital seal certificate was rendered ineffective
entes_publicos_gobierno_omisosNon-compliant public and government entities

The keys of each entry change with the list

Every SAT list publishes its own columns, so only the keys that list includes travel in each entry. Dates are delivered normalized to yyyy-mm-dd and amounts as text, exactly as the SAT publishes them. If the SAT adds a column to a list, it shows up in the response even though it is not documented here.

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
16a0ea1f3c2d4b5e6f7a8ca01Respuesta exitosa - RFC en varias listasIndicates one successful response with two matches
26a0ea1f3c2d4b5e6f7a8ca02RFC no encontrado en ninguna listaIndicates one successful response with no matches ([])

📘

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

Successful response

Inside the response array each entry may contain the next fields.

subfieldDescription
listadoList the entry comes from. The only field always present.
rfcRFC of the published taxpayer.
razonSocialCompany name of the taxpayer.
nombreDenominacionORazonSocialTaxpayer's name, as that list names the column.
nombreORazonSocialTaxpayer's name, as that list names the column.
contribuyenteTaxpayer's name, as that list names the column.
tipoPersona / tipoDePersonaWhether it is a Persona Física or a Persona Moral.
supuestoGround on which the taxpayer was published.
supuestoDeCancelacionCsdGround on which the digital seal certificate was rendered ineffective.
motivoReason for the publication.
motivoDeCondonacionReason the debt was forgiven.
administracionGeneralResponsableDeLaCancelacionSAT office that resolved the cancellation.
montoAmount of the debt.
importeAmount of the debt.
importeCondonadoAmount that was forgiven.
entidadFederativaTaxpayer's state.
ano / ejercicio / periodoYear or period the entry belongs to.
fechaDeCancelacionDate the debt was cancelled.
fechaDeCancelacionCsdDate the digital seal certificate was rendered ineffective.
fechaDeAutorizacionAuthorization date.
fechaDePublicacionDate the SAT published the entry.
fechaDePrimeraPublicacionDate of the first publication of the entry.
fechasDePrimeraPublicacionPlural variant of the field above, in the lists that name it that way.
fechaDePublicacionConMontoDeAcuerdoALaLeyDeTransparenciaDate the amount was published under the Transparency Law.
{
    "id": "69f211423ab2df39a76bb6c8",
    "createdAt": "2026-04-29T14:10:10.839Z",
    "finishedAt": "2026-04-29T14:10:11.948Z",
    "duration": 1108,
    "status": "SUCCESS",
    "searchableBy": {
        "rfc": "AAA010101AA1"
    },
    "request": {
        "rfc": "AAA010101AA1"
    },
    "response": [
        {
            "listado": "firmes",
            "rfc": "AAA010101AA1",
            "razonSocial": "EMPRESA EJEMPLO SA DE CV",
            "tipoPersona": "M",
            "supuesto": "FIRMES",
            "fechaDePrimeraPublicacion": "2014-01-01",
            "entidadFederativa": "CIUDAD DE MEXICO"
        },
        {
            "listado": "cancelados",
            "rfc": "AAA010101AA1",
            "razonSocial": "EMPRESA EJEMPLO SA DE CV",
            "tipoPersona": "M",
            "supuesto": "CANCELADOS POR INSOLVENCIA",
            "fechaDeCancelacion": "2019-05-28",
            "monto": "1,390,273",
            "fechaDePublicacion": "2019-08-20",
            "entidadFederativa": "MORELOS"
        }
    ],
    "cost": 0
}
{
    "id": "69f211423ab2df39a76bb6c9",
    "createdAt": "2026-04-29T14:12:02.114Z",
    "finishedAt": "2026-04-29T14:12:02.402Z",
    "duration": 288,
    "status": "SUCCESS",
    "searchableBy": {
        "rfc": "BBB020202BB2"
    },
    "request": {
        "rfc": "BBB020202BB2"
    },
    "response": [],
    "cost": 0
}

Listing the possible not success responses

Required fields

You will get a 400 bad request error when the required field is not provided.

[
    {
        "code": "REQUIRED_FIELD_ERROR",
        "message": "EMPTY_ERROR; can't be empty",
        "field": "rfc"
    }
]

Invalid Format

The RFC contains illegal characters or does not comply with the expected format, the service will return a 400 bad request.

[
    {
        "code": "FORMAT_ERROR",
        "message": "must match ^([A-Z&]{3,4})(\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01]))([A-Z\\d]{3})?$",
        "field": "rfc"
    }
]
🚧

Use v2 to get the error detail

The bodies above are the ones returned by v2. On v1 the same validation errors arrive as an object keyed by field name:

{
    "rfc": "FORMAT_ERROR; must match ^([A-Z&]{3,4})(\\d{2}(?:0[1-9]|1[0-2])(?:0[1-9]|[12]\\d|3[01]))([A-Z\\d]{3})?$"
}

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.

Responses

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json