Saltar al contenido
Secciones de la documentación

Inicio rápido

En unos minutos timbras tu primer CFDI 4.0 en el sandbox, gratis y sin validez fiscal. Solo necesitas una terminal con curl y tu CSD a la mano.

1. Crea tu cuenta de sandbox

Regístrate en sandbox-app.facturadigital.com.mx/registro. El registro te pide tu Constancia de Situación Fiscal y tu Certificado de Sello Digital (CSD: .cer, .key y contraseña). No lo confundas con la e.firma.

El sandbox es una cuenta aparte de la de producción: sus CFDI se timbran con un proveedor de pruebas y nunca llegan al SAT.

2. Copia tu llave

En tu cuenta de sandbox, entra a Configuración › API y desarrolladores y copia la Llave vigente. Guárdala en una variable de entorno; es como una contraseña.

3. Comprueba la llave

curl
export FD_API=https://sandbox-app.facturadigital.com.mx/api/v5
export FD_API_KEY="tu llave vigente"

curl -sS "$FD_API/account/balance" -H "X-Api-Key: $FD_API_KEY"
200
{ "message": "10 credits available.", "balance": 10, "code": 200 }

Si responde code 501, la llave no corresponde a esa URL: revisa que las dos sean del sandbox. Más en Llave y ambientes.

4. Timbra tu primer CFDI

Guarda este JSON como factura.json. Es una factura de ingreso con un concepto e IVA del 16 % a XENON INDUSTRIAL ARTICLES, un contribuyente de prueba que publica el SAT. Cambia Emisor.RegimenFiscal por tu régimen; el RFC y el nombre del emisor los pone la API desde tu cuenta.

factura.json
{
  "Version": "4.0",
  "Serie": "A",
  "Folio": "1",
  "Fecha": "AUTO",
  "FormaPago": "03",
  "MetodoPago": "PUE",
  "Moneda": "MXN",
  "TipoDeComprobante": "I",
  "Exportacion": "01",
  "LugarExpedicion": "64000",
  "SubTotal": "2501.00",
  "Total": "2901.16",
  "Emisor": { "RegimenFiscal": "601" },
  "Receptor": {
    "Rfc": "XIA190128J61",
    "Nombre": "XENON INDUSTRIAL ARTICLES",
    "DomicilioFiscalReceptor": "76343",
    "RegimenFiscalReceptor": "601",
    "UsoCFDI": "G03"
  },
  "Conceptos": [
    {
      "ClaveProdServ": "01010101",
      "Cantidad": "2",
      "ClaveUnidad": "H87",
      "Descripcion": "Producto de prueba",
      "ValorUnitario": "1250.50",
      "Importe": "2501.00",
      "ObjetoImp": "02",
      "Impuestos": {
        "Traslados": [
          { "Base": "2501.00", "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": "0.160000", "Importe": "400.16" }
        ]
      }
    }
  ],
  "Impuestos": {
    "TotalImpuestosTrasladados": "400.16",
    "Traslados": [
      { "Base": "2501.00", "Impuesto": "002", "TipoFactor": "Tasa", "TasaOCuota": "0.160000", "Importe": "400.16" }
    ]
  }
}
curl
curl -sS -X POST "$FD_API/invoice/create" \
  -H "X-Api-Key: $FD_API_KEY" \
  --data-urlencode "json@factura.json"
200
{
  "message": "The document was generated successfully",
  "code": 200,
  "cfdi": {
    "UUID": "6F1A2B3C-4D5E-4F60-8172-93A4B5C6D7E8",
    "FechaTimbrado": "2026-11-03T10:30:12",
    "XmlBase64": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4…",
    "PDF": "https://sandbox-app.facturadigital.com.mx/docs/pdf/6F1A2B3C-…",
    "…": "…"
  }
}
  • cfdi.UUID es el folio fiscal.
  • cfdi.XmlBase64 es el XML timbrado. Guárdalo en tu sistema.
  • cfdi.PDF abre el PDF con tu plantilla.

5. Pasa a producción

  1. Crea tu cuenta en app.facturadigital.com.mx/registro: trae 10 folios de regalo.
  2. Copia la llave vigente de esa cuenta, en Configuración › API y desarrolladores.
  3. Cambia la URL base a https://app.facturadigital.com.mx/api/v5 y la llave. El resto del código es el mismo.
  4. Cada CFDI timbrado usa 1 folio; cancelar no usa folio. Compra más folios en tu cuenta cuando los necesites; no caducan.

Siguientes pasos

Revisado contra la API v5 en producción el 2026-11-03.