# Ver una factura del SAT

`GET https://api.fiscalisto.com/v1/sat_invoices/{id}`

Un CFDI que trajo una descarga del SAT, con sus importes y su estado ante el SAT.

## Parámetros

| Nombre | Dónde | Obligatorio | Descripción |
| --- | --- | --- | --- |
| `id` | ruta | sí | El id del objeto. |

## Con el SDK de TypeScript

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

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

const satInvoice = await fiscalisto.satInvoices.get("sat_OufpKqnrvx9p1F");
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

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

sat_invoice = fiscalisto.sat_invoices.get("sat_OufpKqnrvx9p1F")
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

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

$satInvoice = $fiscalisto->satInvoices->get('sat_OufpKqnrvx9p1F');
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

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

var satInvoice = await fiscalisto.SatInvoices.GetAsync("sat_OufpKqnrvx9p1F");
```

## 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()

	satInvoice, err := client.SatInvoices.Get(ctx, "sat_OufpKqnrvx9p1F")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(satInvoice.ID)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;

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

var satInvoice = fiscalisto.satInvoices().get("sat_OufpKqnrvx9p1F");
System.out.println(satInvoice.getId());
```

## Respuesta 200

Correcto.

Un objeto `SatInvoice`:

| Campo | Tipo | Siempre viene | Descripción |
| --- | --- | --- | --- |
| `id` | string | sí | Identificador del objeto, con su prefijo (iss_, inv_, ret_, cus_, prd_, emp_, bat_, brn_, whs_, stm_, adj_, evt_, whe_). |
| `livemode` | boolean | sí | true en producción (llaves fk_live_), false en pruebas (fk_test_). Lo de pruebas no vale ante el SAT. |
| `object` | `"sat_invoice"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `issuer` | string | sí | El emisor de su cuenta (iss_…) a quien pertenece esta factura. |
| `uuid` | string | sí | El folio fiscal (UUID del timbre). |
| `direction` | `received`, `issued` | sí | received (se la hicieron al emisor) o issued (la emitió). |
| `type` | `I`, `E`, `P`, `T`, `N` o null | sí | Tipo de comprobante (TipoDeComprobante): I ingreso, E egreso, P pago, T traslado, N nómina. |
| `date` | string | sí | La fecha del comprobante (Fecha), en la hora local con que se emitió. |
| `series` | string o null | sí | Serie (Serie), o null. |
| `folio` | string o null | sí | Folio (Folio), o null. |
| `issued_by` | objeto | sí | Quien la emitió (Emisor). |
| `issued_by.tax_id` | string | sí | RFC (Rfc), 12 caracteres una persona moral y 13 una física. |
| `issued_by.legal_name` | string o null | sí | Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»). |
| `issued_to` | objeto | sí | A quien se la emitieron (Receptor). |
| `issued_to.tax_id` | string | sí | RFC (Rfc), 12 caracteres una persona moral y 13 una física. |
| `issued_to.legal_name` | string o null | sí | Nombre o razón social tal como está en la constancia de situación fiscal, sin el régimen de capital (sin «S.A. de C.V.»). |
| `currency` | string o null | sí | Moneda (Moneda): MXN, USD… |
| `exchange_rate` | number o null | sí | Tipo de cambio (TipoCambio), o null en pesos. |
| `payment_method` | string o null | sí | Método de pago (MetodoPago): PUE o PPD. |
| `payment_form` | string o null | sí | Forma de pago (FormaPago), clave de c_FormaPago. |
| `use` | string o null | sí | Uso del CFDI (UsoCFDI). |
| `subtotal` | number o null | sí | Subtotal (SubTotal). |
| `total` | number o null | sí | Total (Total). |
| `taxes` | objeto | sí | Impuestos del comprobante: trasladados (iva, ieps), retenidos (iva_withheld, isr_withheld, ieps_withheld) y locales. |
| `taxes.iva` | number | sí | IVA trasladado. |
| `taxes.ieps` | number | sí | IEPS trasladado. |
| `taxes.iva_withheld` | number | sí | IVA retenido. |
| `taxes.isr_withheld` | number | sí | ISR retenido. |
| `taxes.ieps_withheld` | number | sí | IEPS retenido. |
| `taxes.local_transferred` | number | sí | Impuestos locales trasladados (ISH y similares). |
| `taxes.local_withheld` | number | sí | Impuestos locales retenidos. |
| `sat_status` | `active`, `canceled` o null | sí | Su estado en el SAT cuando se revisó: active (vigente) o canceled. null si aún no se revisa. |
| `sat_download` | string o null | sí | La descarga (sdl_…) que la trajo, o null. |
| `downloaded_at` | string (date-time) o null | sí | Cuándo llegó. |

```json
{
  "id": "sat_OufpKqnrvx9p1F",
  "object": "sat_invoice",
  "livemode": false,
  "issuer": "iss_OufpKqnrvx9p",
  "uuid": "9B2D4E61-7C3A-4F18-8E5D-0A6B9C1D2E3F",
  "direction": "received",
  "type": "I",
  "date": "2026-09-12T11:04:00",
  "series": "A",
  "folio": "4821",
  "issued_by": {
    "tax_id": "XIA190128J61",
    "legal_name": "XENON INDUSTRIAL ARTICLES"
  },
  "issued_to": {
    "tax_id": "TOL190312KT4",
    "legal_name": "TOLPI"
  },
  "currency": "MXN",
  "exchange_rate": null,
  "payment_method": "PUE",
  "payment_form": "03",
  "use": "G03",
  "subtotal": 18400,
  "total": 21344,
  "taxes": {
    "iva": 2944,
    "ieps": 0,
    "iva_withheld": 0,
    "isr_withheld": 0,
    "ieps_withheld": 0,
    "local_transferred": 0,
    "local_withheld": 0
  },
  "sat_status": "active",
  "sat_download": "sdl_OufpKqnrvx9p3n8vQd2LkW7mZr1XyT5uBc",
  "downloaded_at": "2026-10-24T10:27:40-06:00"
}
```

## 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.
