CSF validation (RFC + idCIF)
Every Constancia de Situación Fiscal carries a QR code that points to a public SAT validator. Given the taxpayer's RFC and the idCIF printed on the constancia, this endpoint reads that validator and returns the record the SAT holds today: name, status, fiscal address, and regimes.
No CIEC and no CAPTCHA are involved, the lookup is synchronous, and nothing is stored. Use it to check that a constancia a customer uploaded is genuine and current. To download the constancia PDF itself, use a CSF extraction.
Validate
POST /v1/csf/validate
{ "tax_id": "DIM8701081LA", "id_cif": "1904014102123" }
tax_id— the RFC (12 characters for a company, 13 for a person). Case-insensitive.id_cif— the idCIF from the constancia, digits only.
Response (200 OK) for a company:
{
"tax_id": "DIM8701081LA",
"id_cif": "1904014102123",
"person_type": "moral",
"legal_name": "Mi razón social",
"capital_regime": "SA DE CV",
"incorporated_on": "2019-02-21",
"given_names": null,
"first_surname": null,
"second_surname": null,
"curp": null,
"birth_date": null,
"operations_started_on": "2019-02-21",
"status": "ACTIVO",
"status_changed_on": "2019-02-21",
"address": {
"state": "CIUDAD DE MEXICO",
"municipality": "CUAUHTEMOC",
"neighborhood": "CUAUHTEMOC",
"locality": null,
"street_type": "Tipo vialidad",
"street": "PASEO DE LA REFORMA",
"exterior_number": "143",
"interior_number": "Piso 69",
"zip_code": "72055"
},
"regimes": [
{ "name": "Régimen General de Ley Personas Morales", "registered_on": "2019-02-21" }
]
}
Fields
| Field | Company (moral) |
Person (fisica) |
|---|---|---|
legal_name |
Denominación o Razón Social, as the SAT prints it | null |
capital_regime |
Régimen de capital (e.g. SA DE CV) |
null |
incorporated_on |
Fecha de constitución | null |
given_names, first_surname, second_surname, curp, birth_date |
null |
From the SAT record |
status |
The SAT's own word (e.g. ACTIVO), unchanged |
same |
Dates are YYYY-MM-DD. Any field the SAT leaves empty is null. person_type follows the RFC length.
Responses
| Status | reason |
What happened | What you should do |
|---|---|---|---|
200 |
— | Record retrieved | Use the fields above |
404 |
not_found |
The SAT has no cédula for that RFC and idCIF | Check both values against the constancia |
503 |
unavailable |
The SAT validator could not be reached or answered something unrecognised | Retry later |
422 |
— (Laravel errors) |
Invalid tax_id or a non-numeric id_cif |
Fix the request body |