Facturación Electrónica CFDI para Servicios de Hosting y Tecnología en México
La facturación electrónica (CFDI) es obligatoria para personas morales y personas físicas con actividad empresarial en México desde 2014. En 2025, el SAT exige CFDI 4.0 con el Complemento de Carta Porte para transporte terrestre y validaciones más estrictas de RFC y datos fiscales. Esta guía técnica cubre cómo integrar la emisión de CFDI en tu sitio web y qué proveedor PAC elegir.
Arquitectura técnica de la facturación electrónica en México
El proceso de emisión de un CFDI involucra cuatro actores: el emisor (tú), un PAC (Proveedor Autorizado de Certificación), el SAT y el receptor (tu cliente). El flujo es:
# Flujo técnico de emisión de CFDI:
# 1. Tu sistema genera el XML del CFDI (estructura según Anexo 20 del SAT)
# 2. El XML se envía al PAC para validación y timbre
# 3. El PAC envía al SAT para validar (o valida con certificado delegado)
# 4. El PAC regresa el CFDI timbrado (con sello del SAT y UUID único)
# 5. Tu sistema almacena el XML timbrado y lo envía al cliente
# Verificar que tienes los certificados CSD (Certificado de Sello Digital)
ls -la *.cer *.key 2>/dev/null
# Si no los tienes, generarlos en: https://www.sat.gob.mx/tramites/16672/genera-tu-certificado
# Verificar la vigencia del certificado
openssl x509 -in tu_certificado.cer -noout -dates
# Busca: notAfter=FECHA_VIGENCIA
Integrar Facturapi (PAC) en WordPress/WooCommerce
<?php
// Facturapi es uno de los PACs más usados por desarrolladores en México
// Documentación: https://www.facturapi.io/docs/
function emitir_cfdi_woocommerce($order_id) {
$orden = wc_get_order($order_id);
$api_key = getenv('FACTURAPI_SECRET_KEY'); // sk_XXXXXXXXXX
// Obtener datos fiscales del cliente (almacenados en meta del usuario)
$user_id = $orden->get_user_id();
$rfc = get_user_meta($user_id, 'rfc_fiscal', true);
$razon_social = get_user_meta($user_id, 'razon_social', true);
$regimen_fiscal = get_user_meta($user_id, 'regimen_fiscal', true) ?: '616';
$uso_cfdi = get_user_meta($user_id, 'uso_cfdi', true) ?: 'G03'; // Gastos en general
// Construir los conceptos de la factura
$conceptos = [];
foreach ($orden->get_items() as $item) {
$conceptos[] = [
'product' => [
'description' => $item->get_name(),
'product_key' => '43232408', // Clave SAT para servicios de hospedaje web
'price' => round($item->get_subtotal() / 1.16, 2), // Precio sin IVA
'tax_included' => false,
'taxes' => [['type' => 'IVA', 'rate' => 0.16]],
],
'quantity' => $item->get_quantity(),
];
}
$payload = [
'customer' => [
'legal_name' => $razon_social,
'tax_id' => $rfc,
'tax_system' => $regimen_fiscal,
'email' => $orden->get_billing_email(),
'address' => [
'zip' => $orden->get_billing_postcode() ?: '06600',
],
],
'items' => $conceptos,
'payment_form' => '04', // Tarjeta de crédito
'use' => $uso_cfdi,
'currency' => 'MXN',
];
$ch = curl_init('https://www.facturapi.io/v2/invoices');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $api_key,
'Content-Type: application/json',
],
]);
$factura = json_decode(curl_exec($ch), true);
curl_close($ch);
if (isset($factura['id'])) {
// Guardar el UUID de la factura
update_post_meta($order_id, '_cfdi_uuid', $factura['uuid']);
update_post_meta($order_id, '_facturapi_id', $factura['id']);
// Descargar y enviar el PDF al cliente
enviar_pdf_factura($factura['id'], $orden->get_billing_email(), $api_key);
return $factura['uuid'];
}
return false;
}
// Hook: generar factura automáticamente cuando el pago se completa
add_action('woocommerce_payment_complete', 'emitir_cfdi_woocommerce');
Claves SAT más usadas para servicios digitales
| Clave SAT | Descripción | Uso en ecommerce |
|---|---|---|
| 43232408 | Servicios de alojamiento de sitios web | Hosting, dominios |
| 43232407 | Servicios de plataforma de tecnología de la información | SaaS, APIs |
| 81161901 | Diseño de sitios web | Servicios de diseño web |
| 43232301 | Servicios de administración de redes | VPS administrado, soporte TI |
| 84121700 | Servicios de publicidad | Google Ads, SEO |
| G03 | Gastos en general (uso CFDI) | Para clientes empresariales |
Escenarios Prácticos: Facturación Electrónica y Hosting
Escenario 1 — Agencia digital que emite 200+ CFDI al mes: Integra la API de Facturama en el servidor para automatizar la emisión de CFDI 4.0 cada vez que un cliente paga. El servidor necesita acceso HTTPS a los PAC del SAT:
// Emitir CFDI 4.0 via Facturama API desde PHP
$cfdi_data = [
'Serie' => 'A',
'Folio' => '1001',
'CfdiType' => 'I', // Ingreso
'PaymentForm' => '03', // Transferencia
'PaymentMethod' => 'PUE',
'Receiver' => [
'Rfc' => 'XAXX010101000', // RFC genérico público en general
'Name' => 'PUBLICO EN GENERAL',
'FiscalRegime' => '616',
'CfdiUse' => 'S01'
],
'Items' => [[ 'Quantity' => 1, 'ProductCode' => '81161500',
'UnitCode' => 'E48', 'Unit' => 'Unidad de servicio',
'Description' => 'Hosting Web Mensual', 'UnitPrice' => 500.00,
'Subtotal' => 500.00, 'TaxObject' => '02',
'Taxes' => [['Total' => 80.00, 'Name' => 'IVA', 'Base' => 500.00,
'Rate' => 0.16, 'IsRetention' => false]]
]]
];
Escenario 2 — PyME que necesita timbrado desde su sitio web: El hosting debe tener acceso a internet saliente sin restricciones de firewall para conectar a los PAC (Proveedores Autorizados de Certificación). En algunos hosting compartidos el egress está limitado; en VPS de VacaWeb no hay restricciones.
Errores Comunes en Facturación Electrónica
| Error | Síntoma | Causa | Solución |
|---|---|---|---|
| CSD caducado | No se puede timbrar | Certificado de Sello Digital vencido | Renovar CSD en el portal del SAT |
| RFC receptor inválido | Rechazo del PAC | RFC con formato incorrecto | Validar RFC con expresión regular del SAT |
| Clave de producto incorrecta | CFDI sin valor fiscal | Catálogo SAT no consultado | Usar buscador de claves en el portal SAT |
| Sin conexión al PAC | Timbrado falla en producción | Puerto 443 bloqueado en servidor | Abrir egress HTTPS desde servidor |
| Complemento de pago faltante | CFDI inválido para deducción | Pago en parcialidades sin complemento | Emitir CFDI de pago al recibir cada parcialidad |
Preguntas Frecuentes sobre CFDI y Hosting
¿Qué es un PAC y cuáles están autorizados en México?
PAC = Proveedor Autorizado de Certificación. Son empresas autorizadas por el SAT para timbrar CFDI. Los más usados en 2025: Facturama, SW Sapien, Finkok, Edisoft, Contabilidad en Nube. El SAT mantiene la lista actualizada en su portal. El timbrado cuesta entre $0.50 y $2.00 MXN por CFDI según volumen.
¿Mi hosting necesita configuración especial para integrar facturación?
Necesitas PHP 7.4+ con extensiones OpenSSL y cURL habilitadas (estándar en todos los hosting modernos). El servidor debe poder hacer peticiones HTTPS salientes al endpoint del PAC. En algunos hosting compartidos, las peticiones salientes están restringidas; verifica esto antes de elegir plan.
¿Qué versión de CFDI es obligatoria en 2025?
CFDI 4.0 es obligatorio desde enero 2023 para todas las personas físicas y morales. Incluye nuevos campos obligatorios: nombre y domicilio fiscal del receptor, clave de régimen fiscal del receptor y uso del CFDI. Los CFDI 3.3 ya no son válidos para timbrar aunque siguen siendo válidos los emitidos antes de la fecha límite.
¿Puedo emitir facturas desde WordPress?
Sí, con plugins como "CFDI para WooCommerce" o "WP-CFDI". Conectan con la API de tu PAC favorito. El cliente llena sus datos fiscales en el checkout y recibe el CFDI por email automáticamente. Asegúrate de que el plugin esté actualizado a CFDI 4.0 y use el catálogo de claves SAT más reciente.
¿Cuánto tiempo debo conservar los archivos XML de los CFDI?
El Código Fiscal de la Federación establece 5 años como plazo mínimo de conservación de comprobantes fiscales. Se recomienda conservarlos 10 años para mayor seguridad legal. Guarda los XML en servidor con backup automático a almacenamiento en nube (S3, Google Drive) y en formato original sin modificaciones.
📚 Profundiza en estos temas
- Métodos de pago en México: OXXO, SPEI y tarjetas integrados en WooCommerce
- Configurar WooCommerce para México: IVA, envíos y pasarelas de pago
- Correo corporativo: cómo enviar CFDIs desde tu dominio profesional
- SSL/HTTPS: obligatorio para proteger datos fiscales en tu ecommerce
- Crear tienda en línea en México: desde el hosting hasta la facturación
Fundador de VacaWeb con más de 15 años administrando infraestructura Linux en producción. Especialista en LiteSpeed, CloudLinux, cPanel/WHM y arquitectura de hosting de alto rendimiento para el mercado mexicano. Ha diseñado y migrado la infraestructura de más de 1,200 sitios web empresariales.