# Revisar varios RFC en las listas del SAT

`POST https://api.fiscalisto.com/v1/sat_lists/check`

Hasta 1,000 RFC en una solicitud, en el mismo orden en que los mandó (sin repetidos). No usa timbres.

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `Idempotency-Key` | encabezado |  | Opcional (los SDK la mandan solos). Si la respuesta se pierde, repita la solicitud con el mismo valor durante 24 horas: contesta lo mismo, con idempotent-replayed: true, y no lo hace dos veces (ni crea, ni manda correos, ni cobra). |

## Cuerpo

| Campo | Tipo | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `tax_ids` | arreglo de string | sí | Los RFC a revisar, hasta 1000. (hasta 1000) |

Ejemplo:

```json
{
  "tax_ids": [
    "AAA080808HL8",
    "ICV060329BY0"
  ]
}
```

## Con el SDK de TypeScript

```ts
import { Fiscalisto } from "fiscalisto";

// La llave viene de FISCALISTO_API_KEY.
const fiscalisto = new Fiscalisto();

const { data } = await fiscalisto.satLists.check({ tax_ids: ["AAA080808HL8", "ICV060329BY0"] }, { idempotencyKey: "pedido-A-1042" });
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

# La llave viene de FISCALISTO_API_KEY.
fiscalisto = Fiscalisto()

data = fiscalisto.sat_lists.check({"tax_ids": ["AAA080808HL8", "ICV060329BY0"]}, idempotency_key="pedido-A-1042")["data"]
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
$fiscalisto = new Fiscalisto();

$data = $fiscalisto->satLists->check(['tax_ids' => ['AAA080808HL8', 'ICV060329BY0']], ['idempotency_key' => 'pedido-A-1042'])['data'];
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var satListCheckList = await fiscalisto.SatLists.CheckAsync(new CheckSatListsParams
{
    TaxIds = new() { "AAA080808HL8", "ICV060329BY0" },
}, new RequestOptions { IdempotencyKey = "pedido-A-1042" });
```

## Con el SDK de Go

```go
package main

import (
	"context"
	"fmt"
	"log"

	fiscalisto "fiscalisto.com/go"
)

func main() {
	// La llave viene de FISCALISTO_API_KEY.
	client, err := fiscalisto.NewClient("")
	if err != nil {
		log.Fatal(err)
	}
	ctx := context.Background()

	satListCheckList, err := client.SatLists.Check(ctx, &fiscalisto.CheckSatListsParams{
		TaxIDs: []string{"AAA080808HL8", "ICV060329BY0"},
	}, fiscalisto.WithIdempotencyKey("pedido-A-1042"))
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("%+v\n", *satListCheckList)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;
import com.fiscalisto.RequestOptions;
import com.fiscalisto.model.CheckSatListsParams;
import java.util.List;

// La llave viene de FISCALISTO_API_KEY.
var fiscalisto = new FiscalistoClient();

var satListCheckList = fiscalisto.satLists().check(new CheckSatListsParams()
        .setTaxIds(List.of("AAA080808HL8", "ICV060329BY0")), RequestOptions.idempotencyKey("pedido-A-1042"));
System.out.println(satListCheckList);
```

## Respuesta 200

Correcto.

Un objeto `SatListCheckList`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `object` | `"list"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `data` | arreglo de objeto | sí | Los objetos de esta página. |
| `data[].object` | `"sat_list_check"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `data[].tax_id` | string | sí | El RFC revisado. |
| `data[].name` | string o null | sí | El nombre con que aparece en las listas del SAT (null si no aparece). |
| `data[].listed` | boolean | sí | true si el RFC aparece en alguna lista, aunque haya desvirtuado. |
| `data[].risk` | `high`, `medium`, `none`, `unknown` | sí | high: 69-B o 69-B Bis como presunto o definitivo (el SAT dice que simula operaciones; sus facturas no se pueden deducir). medium: una lista del art. 69 (no localizado, créditos firmes o exigibles, cancelados, sentencias, CSD sin efectos). none: no aparece en ninguna, con todas las listas al día, o ya desvirtuó o tiene sentencia favorable. unknown: no aparece, pero alguna lista no se pudo actualizar (vea lists_unavailable): no lo dé por limpio. |
| `data[].verified` | boolean | sí | true si todas las listas se leyeron con éxito en los últimos dos días. Con false, que no aparezca no significa que esté limpio. |
| `data[].lists` | arreglo de objeto | sí | Cada lista en que aparece; vacía si no aparece en ninguna. |
| `data[].lists[].list` | `69`, `69b`, `69b_bis` | sí | 69b: art. 69-B (operaciones simuladas). 69b_bis: art. 69-B Bis (pérdidas fiscales). 69: art. 69 (no localizados, adeudos, cancelados). |
| `data[].lists[].source` | string | sí | El archivo del SAT de donde viene (clave). |
| `data[].lists[].source_name` | string | sí | El nombre del archivo del SAT, para mostrarlo. |
| `data[].lists[].situation` | string o null | sí | Su situación según el SAT: Presunto, Definitivo, Desvirtuado, Sentencia favorable; en el art. 69, el supuesto (null si el archivo no la trae). |
| `data[].lists[].published_on` | string o null | sí | Fecha de publicación en el SAT o en el DOF (null si no la trae). |
| `data[].lists[].details` | objeto o null | sí | Lo demás que publica el SAT para ese RFC (oficios, fechas, montos), tal cual; null si nada. |
| `data[].lists_updated_at` | string (date-time) o null | sí | Cuándo se actualizaron las listas por última vez (cada día a las 00:00 de la Ciudad de México). |
| `data[].lists_unavailable` | arreglo de string | sí | Las listas que no se pudieron confirmar (su última actualización falló, falta o tiene más de dos días). Vacía si todas están al día. |
| `has_more` | boolean | sí | true si hay más: pida la siguiente con starting_after igual al id del último. |
| `url` | string | sí | La ruta de esta lista. |

```json
{
  "object": "list",
  "data": [
    {
      "object": "sat_list_check",
      "tax_id": "AAA080808HL8",
      "name": "EMPRESA SIMULADORA SA DE CV",
      "listed": true,
      "risk": "high",
      "verified": true,
      "lists": [
        {
          "list": "69b",
          "source": "69b",
          "source_name": "69-B (operaciones simuladas)",
          "situation": "Definitivo",
          "published_on": null,
          "details": {
            "Publicación página SAT definitivos": "15/03/2024",
            "Número y fecha de oficio global de definitivos": "500-05-2024-1234 de fecha 01/03/2024"
          }
        }
      ],
      "lists_updated_at": "2026-10-24T00:12:40-06:00",
      "lists_unavailable": []
    }
  ],
  "has_more": false,
  "url": "/v1/sat_lists/check"
}
```

## Errores

Puede responder 400, 401, 403, 404, 429, 500 con el cuerpo de error de siempre; cada código está en https://fiscalisto.com/docs/api/errores.md.
