RFC 69-B blacklist
The SAT Art. 69-B blacklist (EFOS — Empresas que Facturan Operaciones Simuladas) is the official list of taxpayers that SAT has identified as emitters of phantom invoices. Paying a supplier on this list means your invoices from them are not tax-deductible, and your business may face audits or penalties.
SAT publishes the complete list as open data. We import it monthly and serve instant lookups from a local index — no external calls, sub-millisecond response.
Check an RFC
POST /v1/rfc/blacklist
{ "rfc": "COSC8001137NA" }
Response (200 OK) — always returned for valid RFCs, whether listed or not:
{
"rfc": "COSC8001137NA",
"on_blacklist": false,
"situation": null,
"name": null,
"last_refreshed_at": "2025-12-31T18:00:00.000000Z",
"list_size": 14250
}
When listed:
{
"rfc": "AAA080808HL8",
"on_blacklist": true,
"situation": "Sentencia Favorable",
"name": "ASESORES EN AVALÚOS Y ACTIVOS, S.A. DE C.V.",
"last_refreshed_at": "2025-12-31T18:00:00.000000Z",
"list_size": 14250
}
Field reference
| Field | Type | Description |
|---|---|---|
rfc |
string | The RFC queried, uppercased |
on_blacklist |
bool | Whether the RFC appears on the list |
situation |
string | null | SAT situation code (see table below). null if not listed |
name |
string | null | Taxpayer name as published by SAT. null if not listed |
last_refreshed_at |
ISO-8601 | null | When the local list was last imported from SAT |
list_size |
integer | Total entries in the current list (0 if list not yet loaded) |
Situation values
situation |
Meaning | Action recommended |
|---|---|---|
Definitivo |
Confirmed EFOS — SAT has ruled the invoices are simulated | Do not accept invoices; deductibility is voided |
Presunto |
Presumed EFOS — under investigation | Exercise caution; monitor the case |
Desvirtuado |
RFC cleared — taxpayer provided evidence of legitimate operations | Safe to accept |
Sentencia Favorable |
Court ruling in favor of the taxpayer | Cleared by court order |
List freshness
The SAT publishes updates to the 69-B list irregularly (typically once or twice a year for
definitivos, more often for presuntos). Our list is refreshed monthly via a scheduled
job. Check last_refreshed_at and list_size to verify the data is current.
If list_size is 0, the list has not been imported yet — run rfcblacklist:refresh to
populate it.
Responses
| Status | What happened | What to do |
|---|---|---|
200 |
RFC checked — response always returned | Use on_blacklist |
422 |
rfc failed format validation |
Fix the request body |
This endpoint queries a local database copy of the SAT 69-B list — no external calls, instant response. For full supplier screening combine it with CFDI verification.