SAT API · Documentacion
API REST para acceso programatico a datos del SAT. Autenticacion por API key, 6 categorias de endpoints, ejemplos en 8 lenguajes y catalogo completo de errores.
Que es SAT API
Centraliza el acceso a informacion del SAT (datos fiscales, opinion de cumplimiento 32D, constancia de situacion fiscal, descarga masiva, etc.) y la expone como una API REST unificada con creditos pre-pago. Tu integras contra un solo endpoint, nosotros nos encargamos de toda la complejidad de los sistemas del SAT.
Desarrolladores
API REST limpia con JSON, Bearer auth, y SDKs / Postman / OpenAPI. Integra en minutos en cualquier lenguaje.
Despachos y contadores
Gestiona multiples clientes y RFCs desde un solo panel. Cada cliente tiene su propio saldo y sus propias API keys.
Empresas y fintechs
Onboarding fiscal, KYC, validacion de clientes. Cobras a tus usuarios finales, nosotros facturamos a ti.
Integradores academicos
Proyectos universitarios, demos, pruebas de concepto. Sandbox y plan de cortesia para educacion.
Como se comunica tu sistema con el SAT
Tu app hace una llamada
Un POST a api.cfdi4.com/api/v1/... con header Authorization: Bearer sat_xxx y un body JSON con el RFC a consultar.
SAT API valida y descuenta
Verificamos tu API key, validamos el saldo disponible y descontamos 1 credito (o 3 si es descarga masiva). Si no hay saldo, devolvemos error 1004.
Consultamos al SAT
Llamamos a los sistemas del SAT con la e.firma o CIEC del RFC (previamente cargada en el Vault). Manejamos reintentos, timeouts y errores transitorios.
Devolvemos JSON limpio
Normalizamos la respuesta del SAT a un formato consistente y te la entregamos. Toda la operacion queda registrada en el panel con timestamp, RFC y operacion.
Creditos pre-pago
1 consulta = 1 credito. Descarga masiva = 3 creditos. Recargas cuando quieras, sin mensualidades. Tus creditos no vencen.
Multi-RFC y multi-cliente
Cada cliente puede tener hasta N RFCs (configurable). Cada RFC tiene su API key. Cada llamada queda asociada a un RFC especifico.
Vault cifrado
Las e.firmas y CIEC se almacenan cifradas con AES-256. Nunca viajan en las respuestas del API ni en logs. Solo las usa el motor interno.
Auditoria completa
Cada transaccion (consumo, recarga, error) queda registrada con timestamp, IP, RFC y operacion. Exportable a CSV para facturacion.
# 1. Obten tu API key desde el Panel: https://panel.cfdi4.com/mi-cuenta
# 2. Haz una consulta de ejemplo:
curl -X POST https://api.cfdi4.com/api/v1/usuario/datos-fiscales \
-H "User-Agent: MiApp/1.0" \
-H "Authorization: Bearer sat_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"rfc": "XAXX010101000"}'
import requests
API_KEY = "sat_xxxxxxxxxxxxxxxxxxxx"
API_BASE = "https://api.cfdi4.com/api/v1"
response = requests.post(
f"{API_BASE}/usuario/datos-fiscales",
headers={
"Authorization": f"Bearer {API_KEY}",
"User-Agent": "MiApp/1.0",
},
json={"rfc": "XAXX010101000"},
)
data = response.json()
print(data)
const API_KEY = "sat_xxxxxxxxxxxxxxxxxxxx";
const API_BASE = "https://api.cfdi4.com/api/v1";
const response = await fetch(`${API_BASE}/usuario/datos-fiscales`, {
method: "POST",
headers: {
"Authorization": `Bearer ${API_KEY}`,
"Content-Type": "application/json",
"User-Agent": "MiApp/1.0",
},
body: JSON.stringify({ rfc: "XAXX010101000" }),
});
const data = await response.json();
console.log(data);
<?php
$api_key = "sat_xxxxxxxxxxxxxxxxxxxx";
$api_base = "https://api.cfdi4.com/api/v1";
$ch = curl_init("$api_base/usuario/datos-fiscales");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer $api_key",
"Content-Type: application/json",
"User-Agent: MiApp/1.0",
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["rfc" => "XAXX010101000"]));
$data = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($data);
package main
import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
)
func main() {
apiKey := "sat_xxxxxxxxxxxxxxxxxxxx"
payload := map[string]string{"rfc": "XAXX010101000"}
body, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST",
"https://api.cfdi4.com/api/v1/usuario/datos-fiscales",
bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("User-Agent", "MiApp/1.0")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
data, _ := io.ReadAll(resp.Body)
fmt.Println(string(data))
}
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
// Paquete: System.Net.Http (incluido en .NET 5+)
// Si usas .NET Framework, instala Microsoft.Net.Http via NuGet.
static async Task Main(string[] args)
{
const string apiKey = "sat_xxxxxxxxxxxxxxxxxxxx";
const string apiBase = "https://api.cfdi4.com/api/v1";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("User-Agent", "MiApp/1.0");
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var payload = new
{
rfc = "XAXX010101000"
};
var json = System.Text.Json.JsonSerializer.Serialize(payload);
var content = new StringContent(json, Encoding.UTF8, "application/json");
var response = await client.PostAsync($"{apiBase}/usuario/datos-fiscales", content);
var data = await response.Content.ReadAsStringAsync();
Console.WriteLine(data);
}
}
Empieza en 4 pasos
- Entra al Panel con tu usuario y crea un cliente.
- Registra un
RFCy genera suAPI key(visible una sola vez). - Carga saldo en la seccion
Saldos → Recargar(1 credito = 1 consulta). - Haz tu primera llamada a
/api/v1/usuario/datos-fiscalescon el headerAuthorization: Bearer ....
Toda la documentacion
17 paginas organizadas por categoria. Lo que necesites, donde lo necesites.
Guias
6 paginasInicio
Hero, quickstart y resumen del API.
Autenticacion
API keys, Bearer, buenas y malas practicas.
Endpoints
Los 6 endpoints listos para integrar.
Catalogo de errores
20+ codigos con significado y solucion.
Glosario
30+ terminos tecnicos explicados claro.
Guias por rol Destacado
9 perfiles, 26 guias paso a paso.
Herramientas y exploradores
4 paginasDescargas
2 archivosPara juniors
5 guiasListo para integrar?
Explora los 33 endpoints, importa la spec y empieza a hacer llamadas al SAT en minutos.