Skip to Content
Quickstart

Tu primera factura en 5 minutos

Esta guia te lleva paso a paso desde cero hasta emitir y descargar tu primer CFDI timbrado en el sandbox de FactuLink. Al terminar tendras un PDF listo.


Prerrequisitos

  • Una cuenta en FactuLink (regístrate en www.factulink.com.mx )
  • Acceso al Dashboard con tu email y contraseña
  • Un CSD de prueba (Certificado de Sello Digital) — si no tienes uno, el SAT provee archivos de prueba

Base URL: https://api.factulink.com.mx/api/v1

Todas las peticiones usan la misma URL base. El prefijo de tu API Key determina el ambiente: sk_test_ = sandbox, sk_live_ = producción.


Paso 1 — Obtener tu API Key

1.1 Iniciar sesión con JWT

Primero obtén un token JWT con tus credenciales del dashboard:

curl -X POST https://api.factulink.com.mx/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
  "email": "tu@email.com",
  "password": "tu-password"
}'
POST/api/v1/auth/login200
Response
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 86400
}

1.2 Crear una API Key

Usa el JWT para crear una API Key persistente. Esta clave es la que usarás en todas las llamadas siguientes — no necesitas repetir el login cada vez.

curl -X POST https://api.factulink.com.mx/api/v1/api-keys \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." \
-H "Content-Type: application/json" \
-d '{
  "name": "Mi primera API Key"
}'
POST/api/v1/api-keys201
Response
{
"id": "ak_01HQ3KBXZ9N4WRCM8VDPG5T7EY",
"name": "Mi primera API Key",
"key": "sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b",
"created_at": "2026-04-05T10:30:00Z"
}

Importante: La clave completa (sk_test_...) solo se muestra una vez. Guárdala en un lugar seguro. Si la pierdes, tendrás que generar una nueva.

A partir de aquí, usa tu API Key como header de autenticación:

Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b

Paso 2 — Subir un CSD de prueba (sandbox)

Un CSD (Certificado de Sello Digital) es el par de archivos .cer y .key que el SAT emite para que puedas firmar comprobantes fiscales. En el sandbox puedes usar los CSD de prueba del SAT.

Sube los archivos via multipart/form-data:

curl -X POST https://api.factulink.com.mx/api/v1/csds \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b" \
-F "cer=@/ruta/a/certificado.cer" \
-F "key=@/ruta/a/llave.key" \
-F "password=12345678a"
POST/api/v1/csds201
Response
{
"id": "csd_01HQ3KC8V2M5XNRP7WBTF6D3AH",
"rfc": "EKU9003173C9",
"serial_number": "30001000000500003456",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2028-01-01T00:00:00Z",
"status": "active",
"created_at": "2026-04-05T10:32:00Z"
}

Paso 3 — Emitir tu primer CFDI

Ahora tienes todo lo necesario: API Key y CSD activo. Vamos a emitir un CFDI de tipo Ingreso para público en general con un concepto y IVA al 16%.

curl -X POST https://api.factulink.com.mx/api/v1/cfdis \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b" \
-H "Content-Type: application/json" \
-d '{
  "tipo": "I",
  "receptor": {
    "rfc": "XAXX010101000",
    "nombre": "PUBLICO EN GENERAL",
    "regimen_fiscal": "616",
    "domicilio_fiscal": "06600",
    "uso_cfdi": "S01"
  },
  "conceptos": [
    {
      "descripcion": "Servicio de consultoría",
      "clave_prod_serv": "80101500",
      "clave_unidad": "E48",
      "cantidad": 1,
      "valor_unitario": 1000,
      "objeto_imp": "02",
      "impuestos": {
        "traslados": [
          {
            "impuesto": "002",
            "tipo_factor": "Tasa",
            "tasa_o_cuota": "0.160000",
            "base": 1000,
            "importe": 160
          }
        ]
      }
    }
  ]
}'
POST/api/v1/cfdis201
Request
{
"tipo": "I",
"receptor": {
  "rfc": "XAXX010101000",
  "nombre": "PUBLICO EN GENERAL",
  "regimen_fiscal": "616",
  "domicilio_fiscal": "06600",
  "uso_cfdi": "S01"
},
"conceptos": [{
  "descripcion": "Servicio de consultoría",
  "clave_prod_serv": "80101500",
  "clave_unidad": "E48",
  "cantidad": 1,
  "valor_unitario": 1000,
  "objeto_imp": "02",
  "impuestos": {
    "traslados": [{
      "impuesto": "002",
      "tipo_factor": "Tasa",
      "tasa_o_cuota": "0.160000",
      "base": 1000,
      "importe": 160
    }]
  }
}]
}
Response
{
"id": "cfdi_01HQ3KD5R8N2YPTM4VBWG7E9CK",
"uuid": "6128396f-c09c-4e3a-b4d7-8a5f2e1c9b3d",
"tipo": "I",
"status": "vigente",
"emisor": {
  "rfc": "EKU9003173C9",
  "nombre": "EMPRESA DE PRUEBAS SA DE CV",
  "regimen_fiscal": "601"
},
"receptor": {
  "rfc": "XAXX010101000",
  "nombre": "PUBLICO EN GENERAL"
},
"subtotal": 1000.00,
"total": 1160.00,
"fecha_timbrado": "2026-04-05T10:35:12Z",
"sello_sat": "dGhpcyBpcyBhIGZha2Ugc2VsbG8gZGVsIFNBVA==...",
"certificado_sat": "30001000000500003416",
"cadena_original_sat": "||1.1|6128396f-c09c-4e3a-b4d7-8a5f2e1c9b3d|2026-04-05T10:35:12|...",
"created_at": "2026-04-05T10:35:12Z"
}

Tu CFDI ya está timbrado. El campo uuid es el identificador fiscal único que necesitas para consultar, cancelar o descargar el comprobante.


Paso 4 — Descargar el PDF

Con el UUID del CFDI timbrado puedes descargar la representación impresa (PDF):

curl -X GET https://api.factulink.com.mx/api/v1/cfdis/6128396f-c09c-4e3a-b4d7-8a5f2e1c9b3d/pdf \
-H "Authorization: Bearer sk_test_4b7e2f1a8d9c3e6b5f0a1d2c4e7f8a9b" \
--output factura.pdf
GET/api/v1/cfdis/:uuid/pdf200
Response
Content-Type: application/pdf
Content-Disposition: attachment; filename="6128396f-c09c-4e3a-b4d7-8a5f2e1c9b3d.pdf"

(contenido binario del PDF)

Siguientes pasos

Ya emitiste tu primer CFDI. Desde aquí puedes explorar:

  • Autenticación — JWT, API Keys y permisos en detalle
  • Sandbox — Limitaciones del entorno de pruebas y datos de prueba del SAT
  • Guias — Cancelación de CFDI, complementos de pago, notas de crédito y más
  • Referencia API — Documentación completa de todos los endpoints
Last updated on