Skip to main content

1. Obtén tu API key

Llena el formulario en ipsofactura.com/contacto. Nuestro equipo se pondrá en contacto contigo para compartirte tus credenciales de acceso.

2. Registra tu CSD

Para poder timbrar necesitas subir el Certificado de Sello Digital (CSD) de tu empresa: el archivo .cer y la llave privada .key que emite el SAT.
import requests
import base64

# Lee y codifica los archivos en Base64
with open("certificado.cer", "rb") as f:
    cer_b64 = base64.b64encode(f.read()).decode()

with open("llave.key", "rb") as f:
    key_b64 = base64.b64encode(f.read()).decode()

empresa_id = "a1b2c3d4-e5f6-7890-abcd-ef1234567890"  # obtenido en GET /empresas

response = requests.post(
    f"https://api.ipsofactura.com/empresas/{empresa_id}/certificados",
    headers={
        "Authorization": "Bearer {tu_api_key}",
        "Content-Type": "application/json",
    },
    json={
        "certificado_cer_base64": cer_b64,
        "llave_key_base64": key_b64,
        "password_key": "tu_contraseña_del_key",
        "numero_certificado": "00001000000504465028",  # 20 dígitos, aparece en el .cer
        "fecha_fin": "2027-08-15",
    }
)

print(response.json())
Respuesta esperada:
{
  "id": "c3d4e5f6-a1b2-7890-abcd-ef1234567890",
  "empresa_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "numero_certificado": "00001000000504465028",
  "vigente_hasta": "2027-08-15",
  "estado": "activo"
}

3. Timbra tu primer CFDI

Envía el XML de tu CFDI firmado. El campo xml debe contener el CFDI 4.0 completo con todos los nodos requeridos por el SAT.
import requests

response = requests.post(
    "https://api.ipsofactura.com/cfdi",
    headers={
        "Authorization": "Bearer {tu_api_key}",
        "Content-Type": "application/json",
    },
    json={
        "xml": open("factura.xml").read(),  # XML CFDI 4.0 firmado con tu CSD
    }
)

data = response.json()
print(data["uuid"])    # UUID del CFDI timbrado
print(data["xml"])     # XML con el Timbre Fiscal Digital incluido
print(data["qr_url"])  # URL del QR para representación impresa

Respuesta exitosa

{
  "uuid": "6128396f-c09b-4ec6-8699-43da5a244971",
  "status": "timbrado",
  "pac": "finkok",
  "xml": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>...",
  "qr_url": "https://verificacfdi.facturaelectronica.sat.gob.mx/?id=6128396f-...",
  "timbrado_at": "2026-05-28T10:00:00Z"
}

Siguientes pasos

Cancelar un CFDI

Aprende a cancelar CFDIs con o sin aceptación del receptor.

Errores comunes

Guía de errores y cómo resolverlos.