# Ver una declaración del SAT

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

Una declaración presentada al SAT, con sus cifras en summary y si ya están su PDF y su acuse.

## 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 satDeclaration = await fiscalisto.satDeclarations.get("dcl_OufpKqnrvx9p1F");
```

## Con el SDK de Python

```python
from fiscalisto import Fiscalisto

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

sat_declaration = fiscalisto.sat_declarations.get("dcl_OufpKqnrvx9p1F")
```

## Con el SDK de PHP

```php
<?php

use Fiscalisto\Fiscalisto;

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

$satDeclaration = $fiscalisto->satDeclarations->get('dcl_OufpKqnrvx9p1F');
```

## Con el SDK de .NET

```csharp
using Fiscalisto;

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

var satDeclaration = await fiscalisto.SatDeclarations.GetAsync("dcl_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()

	satDeclaration, err := client.SatDeclarations.Get(ctx, "dcl_OufpKqnrvx9p1F")
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(satDeclaration.ID)
}
```

## Con el SDK de Java

```java
import com.fiscalisto.FiscalistoClient;

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

var satDeclaration = fiscalisto.satDeclarations().get("dcl_OufpKqnrvx9p1F");
System.out.println(satDeclaration.getId());
```

## Respuesta 200

Correcto.

Un objeto `SatDeclaration`:

| 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_declaration"` | sí | Qué tipo de objeto es («invoice», «customer»…). |
| `issuer` | string | sí | El emisor que la presentó. |
| `source` | `monthly`, `annual`, `dyp` | sí | monthly (provisional o definitiva, desde 2022), annual (la anual de persona moral) o dyp (el servicio anterior Declaraciones y pagos, 2021 y antes). |
| `year` | integer | sí | El ejercicio. (de -9007199254740991 a 9007199254740991) |
| `month` | integer o null | sí | El mes (1 a 12), o null en la anual y otros periodos. |
| `period` | string | sí | El periodo como lo nombra el SAT: «Enero», «Del Ejercicio»… |
| `type` | `normal`, `complementary` | sí | normal o complementary (complementaria). |
| `complementary_type` | string o null | sí | El tipo de complementaria como lo dice el SAT («Modificación de obligaciones»…), o null. |
| `operation_number` | string | sí | El número de operación que le dio el SAT. |
| `payment_line` | string o null | sí | La línea de captura, si hubo algo a pagar. |
| `filed_on` | string o null | sí | Cuándo se presentó (AAAA-MM-DD). |
| `profit_coefficient` | number o null | sí | El coeficiente de utilidad que aplicó (ISR de personas morales), o null. |
| `isr_due` | number o null | sí | El ISR a cargo, según el acuse. |
| `vat_due` | number o null | sí | El IVA a cargo, según el acuse. |
| `total_due` | number o null | sí | El total a pagar, según el acuse. |
| `sections` | arreglo de objeto | sí | Las cifras de la declaración por impuesto (tax), cada una con su texto como lo imprime el SAT (label) y su valor. Vacío en las de Declaraciones y pagos (su PDF trae dos columnas que no se leen con certeza) o si el PDF aún no llega. |
| `sections[].tax` | string | sí | Impuesto: isr, iva o ieps (ImpuestoRet 001, 002, 003). |
| `sections[].fields` | arreglo de objeto | sí | Los renglones del impuesto, en el orden del PDF. |
| `sections[].fields[].label` | string | sí | El renglón como lo imprime el SAT. |
| `sections[].fields[].value` | number | sí | Valor de la mercancía (ValorMercancia); obligatorio en transporte aéreo. |
| `receipt` | objeto o null | sí | Lo que dice el acuse: cada concepto con su cantidad a cargo y a pagar, el total, la línea de captura y su vigencia. null si el acuse aún no llega. |
| `receipt.concepts` | arreglo de objeto | sí | Cada impuesto del acuse. |
| `receipt.concepts[].concept` | string | sí | Concepto del pago (ConceptoPago), c_TipoContribuyenteSujetoRetencion. |
| `receipt.concepts[].due` | number o null | sí | Lo que resultó a cargo. |
| `receipt.concepts[].amount_due` | number o null | sí | La cantidad a cargo. |
| `receipt.concepts[].amount_to_pay` | number o null | sí | La cantidad a pagar. |
| `receipt.total` | number o null | sí | Total en la moneda del comprobante (Total). |
| `receipt.payment_line` | string o null | sí | La línea de captura del acuse. |
| `receipt.valid_until` | string o null | sí | Hasta cuándo sirve la línea de captura (AAAA-MM-DD). |
| `summary` | objeto | sí | Las mismas cifras con nombres fijos, por obligación (ISR, IVA, cada retención), para leerlas igual cada mes sin conocer el formato del SAT. Una cifra que no viene en la declaración o no se pudo leer es null, nunca 0. En Declaraciones y pagos solo trae lo del acuse. |
| `summary.obligations` | arreglo de objeto | sí | Cada obligación de la declaración: isr, vat, ieps, isr_salaries, isr_assimilated_salaries, isr_professional_services, isr_rent, vat_withholdings u other. |
| `summary.obligations[].obligation` | `isr`, `vat`, `ieps`, `isr_salaries`, `isr_assimilated_salaries`, `isr_professional_services`, `isr_rent`, `vat_withholdings`, `other` | sí | Qué obligación es. |
| `summary.obligations[].name` | string | sí | Su nombre como lo imprime el SAT. |
| `summary.obligations[].read` | boolean | sí | true si sus cifras se leyeron de la declaración; false si solo vienen del acuse. |
| `summary.obligations[].amount_due` | number o null | sí | La cantidad a cargo. |
| `summary.obligations[].amount_to_pay` | number o null | sí | La cantidad a pagar. |
| `summary.obligations[].figures` | objeto | sí | Sus cifras con nombres fijos. ISR: income, invoiced_income, income_ytd, deductions, profit_coefficient, taxable_profit, losses_applied, tax_base, tax_caused, prior_payments, withheld. IVA: taxable_16, taxable_0, exempt, charged, paid_16, creditable, withheld, balance_applied. Salarios: workers, payments, exempt, withheld. Todas: surcharges, inflation, paid_before, due, in_favor, to_pay. null si no viene o no se pudo leer. |
| `summary.total_to_pay` | number o null | sí | El total a pagar del acuse; si no hay acuse, la suma de las obligaciones cuando todas se conocen. |
| `files` | objeto | sí | Qué archivos ya tiene: pdf (GET …/pdf), receipt (GET …/receipt) y financial_statements (GET …/financial_statements, solo en la anual de persona moral). |
| `files.pdf` | boolean | sí | Si ya tiene la declaración en PDF (GET …/pdf). |
| `files.receipt` | boolean | sí | Si ya tiene el acuse (GET …/receipt). |
| `files.financial_statements` | boolean | sí | Si ya tiene el Excel de estados financieros (GET …/financial_statements), solo en la anual de persona moral. |
| `files_error` | string o null | sí | Por qué falta un archivo, como lo dijo el SAT (por ejemplo «No se puede generar el archivo»). Se vuelve a pedir en la siguiente consulta. |
| `created_at` | string (date-time) o null | sí | Cuándo se trajo por primera vez. |
| `updated_at` | string (date-time) o null | sí | Cuándo cambió por última vez. |

```json
{
  "id": "dcl_OufpKqnrvx9p1F",
  "object": "sat_declaration",
  "livemode": false,
  "issuer": "iss_OufpKqnrvx9p",
  "source": "monthly",
  "year": 2026,
  "month": 9,
  "period": "Septiembre",
  "type": "normal",
  "complementary_type": null,
  "operation_number": "92026090000001",
  "payment_line": "0426TEST2026090001",
  "filed_on": "2026-10-15",
  "profit_coefficient": 0.0219,
  "isr_due": 7718.53,
  "vat_due": 16520,
  "total_due": 24238.53,
  "sections": [
    {
      "tax": "ISR personas morales",
      "fields": [
        {
          "label": "INGRESOS NOMINALES DEL PERIODO",
          "value": 292500
        },
        {
          "label": "COEFICIENTE DE UTILIDAD",
          "value": 0.0219
        },
        {
          "label": "IMPUESTO A CARGO",
          "value": 7718.53
        }
      ]
    }
  ],
  "receipt": {
    "concepts": [
      {
        "concept": "ISR personas morales",
        "due": 7718.53,
        "amount_due": 7718.53,
        "amount_to_pay": 7718.53
      },
      {
        "concept": "IVA personas morales",
        "due": 16520,
        "amount_due": 16520,
        "amount_to_pay": 16520
      }
    ],
    "total": 24238.53,
    "payment_line": "0426TEST2026090001",
    "valid_until": null
  },
  "summary": {
    "obligations": [
      {
        "obligation": "isr",
        "name": "ISR personas morales",
        "read": true,
        "amount_due": 7718.53,
        "amount_to_pay": 7718.53,
        "figures": {
          "income": 292500,
          "invoiced_income": 292500,
          "income_ytd": 2632500,
          "deductions": null,
          "profit_coefficient": 0.0219,
          "taxable_profit": 57651.75,
          "losses_applied": 0,
          "tax_base": 57651.75,
          "tax_caused": 17295.53,
          "prior_payments": 9577,
          "withheld": 0,
          "surcharges": null,
          "inflation": null,
          "paid_before": null,
          "due": 7718.53,
          "in_favor": null,
          "to_pay": 7718.53
        }
      },
      {
        "obligation": "vat",
        "name": "IVA personas morales",
        "read": false,
        "amount_due": 16520,
        "amount_to_pay": 16520,
        "figures": {
          "taxable_16": null,
          "taxable_0": null,
          "exempt": null,
          "charged": null,
          "paid_16": null,
          "creditable": null,
          "withheld": null,
          "balance_applied": null,
          "surcharges": null,
          "inflation": null,
          "paid_before": null,
          "due": null,
          "in_favor": null,
          "to_pay": null
        }
      }
    ],
    "total_to_pay": 24238.53
  },
  "files": {
    "pdf": true,
    "receipt": true,
    "financial_statements": false
  },
  "files_error": null,
  "created_at": "2026-10-26T09:12:00-06:00",
  "updated_at": "2026-10-26T09:12:04-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.
