Si estás desarrollando una aplicación, plataforma o sistema que necesita emitir facturas CFDI en México, la API de gigstack te permite integrar facturación en horas, no meses. Esta guía te lleva desde la autenticación hasta la emisión de tu primera factura programáticamente.
La API de gigstack es RESTful, usa JSON para requests y responses, y sigue convenciones estándar de la industria.
Usa siempre Sandbox durante desarrollo. Las facturas de prueba no se timbran con el SAT.
Todas las requests deben incluir tu API Key en el header:
Authorization: Bearer tu_api_key_aqui
curl -X GET "https://api.gigstack.pro/v1/invoices" -H "Authorization: Bearer sk_test_xxx"
const response = await fetch('https://api.gigstack.pro/v1/invoices', { headers: { 'Authorization': 'Bearer sk_test_xxx' } });
https://api.sandbox.gigstack.pro/v1https://api.gigstack.pro/v1POST /invoices - Crear facturaGET /invoices/{id} - Obtener facturaGET /invoices - Listar facturasPOST /invoices/{id}/cancel - Cancelar facturaPOST /payments - Registrar pago (complemento)GET /customers - Listar clientesPOST /customers - Crear clientePOST /validate/rfc - Validar RFC con SATRequest POST a /invoices:
{ "customer": { "rfc": "XAXX010101000", "legal_name": "Cliente de Prueba", "zip_code": "06600", "tax_regime": "601" }, "items": [{ "description": "Servicio de consultoría", "quantity": 1, "unit_price": 10000, "product_key": "80111600", "unit_key": "E48" }], "payment_form": "03", "payment_method": "PUE", "use": "G03" }
{ "id": "inv_abc123", "status": "stamped", "uuid": "ABC12345-1234-1234-1234-123456789ABC", "total": 11600, "pdf_url": "https://...", "xml_url": "https://..." }
Evita rechazos validando el RFC del cliente antes de crear la factura:
Request POST a /validate/rfc:
{ "rfc": "XAXX010101000" }
Response:
{ "valid": true, "legal_name": "NOMBRE REGISTRADO EN SAT", "tax_regime": "601", "zip_code": "06600" }
Usa esta información para autocompletar los datos del cliente en tu interfaz.
Recibe notificaciones cuando ocurren eventos importantes:
invoice.created - Factura creadainvoice.stamped - Factura timbradainvoice.cancelled - Factura canceladainvoice.failed - Error al timbrarpayment.received - Pago registradopayment_complement.created - Complemento generado{ "event": "invoice.stamped", "data": { "id": "inv_abc123", "uuid": "...", "total": 11600 }, "timestamp": "2026-02-12T10:30:00Z" }
Cada webhook incluye un header X-Gigstack-Signature para verificar autenticidad. Compara con el hash HMAC de tu webhook secret.
La API usa códigos HTTP estándar:
{ "error": { "code": "invalid_rfc", "message": "El RFC proporcionado no existe en el padrón del SAT", "field": "customer.rfc" } }
const Gigstack = require('gigstack'); const client = new Gigstack('sk_test_xxx'); const invoice = await client.invoices.create({ customer: { rfc: 'XAXX010101000', legal_name: 'Cliente', zip_code: '06600', tax_regime: '601' }, items: [{ description: 'Producto', quantity: 1, unit_price: 1000, product_key: '43211500', unit_key: 'H87' }], payment_form: '03', payment_method: 'PUE' }); console.log(invoice.uuid);
import gigstack client = gigstack.Client('sk_test_xxx') invoice = client.invoices.create( customer={'rfc': 'XAXX010101000', ...}, items=[{'description': 'Producto', ...}] ) print(invoice.uuid)
$gigstack = new Gigstack\Client('sk_test_xxx'); $invoice = $gigstack->invoices->create([ 'customer' => ['rfc' => 'XAXX010101000', ...], 'items' => [['description' => 'Producto', ...]] ]); echo $invoice->uuid;
POST /invoicesPOST /invoices con los datos del clienteIdempotency-Key para evitar duplicadosEl ambiente Sandbox permite probar sin afectar producción:
Usa XAXX010101000 para pruebas generales.
Si tienes dudas durante la integración:
La API de gigstack te permite agregar facturación CFDI a cualquier aplicación en horas. Obtén tu API Key, prueba en Sandbox, y lleva tu integración a producción cuando estés listo.
Visita gigstack.pro, genera tus credenciales, y emite tu primera factura programáticamente hoy.
