Plugin NIF para WooCommerce: opciones compatibles con tu facturación

Vendes por WooCommerce y, antes o después, te cae el primer pedido de una empresa que pide factura con NIF. Miras el pedido y solo encuentras nombre, dirección y email: ningún campo fiscal. Toca escribir al cliente, pedirle el NIF por correo y copiar y pegar a mano en tu programa de facturación. Multiplica eso por treinta pedidos al mes y entiendes por qué el campo NIF en el checkout no es un capricho, sino la pieza que separa una facturación automática de una operativa manual condenada a errores. La buena noticia es que un plugin NIF para WooCommerce lo soluciona en cinco minutos. La mala es que no todos guardan el dato en el sitio que tu sistema de facturación espera leer.

Por qué necesitas un campo NIF en tu checkout WooCommerce

WooCommerce nació pensado para tiendas B2C anglosajonas. En España la realidad es mixta: una parte de tus clientes son particulares (B2C) y otra parte son empresas o autónomos (B2B) que necesitan factura completa con NIF para deducir el gasto y el IVA soportado. Sin ese dato, la operación se queda en el limbo: o emites una simplificada que el cliente B2B no puede deducir, o la rehaces a mano como ordinaria.

La diferencia es legal. Una factura ordinaria en España requiere identificar al destinatario con NIF, razón social y dirección fiscal. Si no capturas esa información en el checkout, dependes de pedirla después por email, lo que añade fricción y abre la puerta a errores de transcripción.

Capturar el NIF en el checkout te permite emitir factura ordinaria sin pasos intermedios y te da los datos necesarios para crear o actualizar el contacto en tu programa de facturación (en nuestro caso, Factura Directa).

Lo que WooCommerce ofrece de fábrica (y por qué no es suficiente)

WooCommerce no incluye un campo NIF nativo. Los campos de facturación que vienen por defecto son los pensados para el mercado anglosajón: nombre, apellidos, empresa (opcional, sin validación fiscal), dirección, ciudad, código postal, país, teléfono y email. Ni rastro de un campo para el identificador fiscal.

Puedes añadir un campo personalizado a mano modificando functions.php o con el filtro woocommerce_checkout_fields. Es viable para un desarrollador, pero tiene tres problemas: no valida formato (DNI, NIE, CIF tienen reglas distintas), no se guarda en una meta key estándar que otras herramientas reconozcan, y cualquier actualización del tema lo borra si no usas child theme correctamente.

Lo razonable es instalar un plugin específico que ya resuelva esos tres puntos. Y ahí entra la cuestión de cuál elegir, porque hay varias opciones y no todas guardan el dato igual.

wc-apg-nifcifnie-field: el plugin más usado

El plugin de referencia para añadir un campo NIF a WooCommerce es wc-apg-nifcifnie-field, también conocido como «WooCommerce NIF/CIF/NIE Field». Es gratuito, está publicado en el repositorio oficial de WordPress.org y es la opción más extendida entre tiendas españolas.

Lo que hace, en resumen:

  • Añade un campo «NIF/CIF/NIE» en la sección de datos de facturación del checkout.
  • Valida el formato del documento introducido (DNI con su letra de control, NIE con su algoritmo, CIF con su dígito de control). Si el cliente teclea un valor incorrecto, el checkout no le deja avanzar.
  • Guarda el valor en dos meta keys del pedido: billing_nif (vía REST API y formularios estándar) y _billing_nif (la versión legacy con guion bajo, almacenada como meta interna del pedido).
  • Muestra el NIF en el panel de administración del pedido, en los emails de confirmación y en la página de «Mi cuenta» del cliente.

La instalación es la habitual: Plugins → Añadir nuevo, lo activas, y revisas su configuración para decidir si el campo es obligatorio para todos los clientes o solo si marcan «facturar a empresa». Esa segunda opción es la más cómoda en tiendas mixtas B2C+B2B, porque no obligas al cliente particular a rellenar un dato que no necesita.

Donde wc-apg-nifcifnie-field encaja con la facturación automática es en las meta keys que usa: son dos de las cuatro que PayPam consulta para extraer el NIF del pedido y mandarlo a Factura Directa. Si instalas este plugin, no tienes que tocar nada más.

Otros plugins privados o personalizados

Más allá de wc-apg-nifcifnie-field, hay tiendas que usan plugins privados o desarrollos a medida para capturar el NIF. Pueden ser de varios tipos:

  • Plugins desarrollados a medida por la agencia que monta la tienda, que guardan el NIF en una meta key propia (por ejemplo _billing_dni_nif o billing_dni_nif) en lugar de la convención de wc-apg-nifcifnie-field.
  • Plugins de pago de terceros, como los que vienen en packs de «WooCommerce España» comerciales, que añaden NIF junto con otras funcionalidades fiscales (Verifactu, recibos, libros).
  • Implementaciones manuales en el tema que un desarrollador añadió en su día, sin plugin separado.

Cada uno guarda el dato en su propia meta key. Si tu sistema de facturación automática no está preparado para leer varias convenciones, te tocaría mapear campos a mano. Para el caso PayPam → Factura Directa, esto está resuelto: PayPam consulta cuatro meta keys en orden y se queda con la primera que tenga valor.

Cómo PayPam recoge el NIF y lo manda a Factura Directa

Cuando un pedido se completa en WooCommerce, PayPam dispara su flujo de facturación automática. Una de las primeras cosas que hace es buscar el NIF/DNI del cliente para incluirlo como fiscalId en el contacto que se crea (o actualiza) en Factura Directa. La lógica de búsqueda es deliberadamente generosa: PayPam consulta hasta cuatro meta keys del pedido en este orden, y se queda con el primer valor no vacío que encuentra.

Las cuatro meta keys que PayPam comprueba son:

  1. _billing_dni_nif — meta interna de WooCommerce con guion bajo. Esta es la convención que usan algunos plugins privados o desarrollos a medida, y es la primera que PayPam consulta.
  2. billing_dni_nif — la misma meta sin guion bajo. Aparece cuando el pedido se crea vía REST API o desde formularios que escriben directamente en el formato accesible públicamente.
  3. billing_nif — la meta key estándar de wc-apg-nifcifnie-field. Si tienes ese plugin instalado, el NIF se guarda aquí y PayPam lo recoge sin más configuración.
  4. _billing_nif — la versión legacy con guion bajo de wc-apg-nifcifnie-field. Versiones antiguas del plugin guardaban en esta clave; PayPam también la consulta para no dejar pedidos sin NIF si vienes de una instalación con histórico.

Cuando PayPam encuentra valor en una de esas claves, lo limpia (espacios, guiones, prefijos) y lo envía a Factura Directa como fiscalId en la llamada de creación o actualización de contacto. A partir de ese momento, el contacto en FD ya tiene su NIF correctamente asignado, y todas las facturas posteriores asociadas a ese cliente se emiten como facturas ordinarias con identificación fiscal completa. Para el detalle del flujo end-to-end, esta guía completa de Factura Directa cubre la integración paso a paso.

PayPam también captura el NIF si lo añades manualmente desde el panel de administración del pedido. Si un cliente hace el checkout sin rellenar el NIF y luego escribe pidiendo factura, basta con que abras el pedido en WooCommerce, edites el campo correspondiente y guardes. La próxima vez que PayPam procese ese pedido leerá el valor que has puesto a mano.

Por qué cuatro meta keys y no una

Cada tienda WooCommerce española tiene su propio histórico: unas usan wc-apg-nifcifnie-field desde hace años, otras montaron un plugin privado en su día, otras escribieron código a medida en el tema. Consultando las cuatro convenciones más extendidas, PayPam funciona «out of the box» con prácticamente cualquier plugin compatible. Si tu plugin guarda el NIF en una meta key distinta, los caminos son dos: cambiar a wc-apg-nifcifnie-field y migrar pedidos, o pedirnos añadir tu clave a la lista.

Qué pasa si el cliente no rellena el NIF

No todos los pedidos van a llegar con NIF: particulares que compran como B2C, clientes que no marcan «facturar a empresa», olvidos.

Cuando PayPam procesa un pedido y no encuentra valor en ninguna de las cuatro meta keys, no bloquea la facturación. Emite el documento sin fiscalId. En Factura Directa con configuración estándar, eso genera factura simplificada en lugar de ordinaria. Ambas son legales para venta a particulares, pero tienen requisitos y usos distintos. Cubrimos la diferencia en este artículo sobre factura simplificada vs ordinaria y cuándo usar cada una.

En la práctica, esto significa que tu operativa funciona en ambos casos:

  • Pedido con NIF capturado: PayPam crea o actualiza el contacto en Factura Directa con fiscalId, y emite factura ordinaria con todos los datos fiscales del cliente.
  • Pedido sin NIF: PayPam emite el documento como factura simplificada (o el formato que tengas configurado para clientes sin identificación fiscal). Sigue siendo legal y deducible para el vendedor; lo que cambia es el formato del documento y los datos del destinatario que aparecen en él.

Si después de la venta el cliente te pide factura ordinaria, abres el pedido, completas el NIF y regeneras. PayPam vuelve a leer las cuatro meta keys y emite la factura correctamente. Para el contexto completo de cómo encaja esto sin Zapier, ayuda esta guía sobre automatizar WooCommerce con Factura Directa sin pelear con Zapier.

Preguntas frecuentes

¿Qué plugin NIF para WooCommerce me recomiendas si parto de cero?

Si vienes sin plugin instalado, wc-apg-nifcifnie-field es la opción por defecto razonable: es gratuito, está en el repositorio oficial de WordPress.org, valida formatos de DNI/NIE/CIF y guarda en billing_nif y _billing_nif. Esas dos meta keys están entre las cuatro que PayPam lee, así que la integración con tu facturación a Factura Directa no requiere configuración extra. Para casos avanzados (validación contra censo de la AEAT, recargo de equivalencia, IVA intracomunitario automático) puedes valorar opciones de pago, pero para la mayoría de tiendas el plugin gratuito basta.

¿Tengo que cambiar mi plugin actual si ya guardo el NIF en otra meta key?

Solo si tu meta key no está entre las cuatro que PayPam lee (_billing_dni_nif, billing_dni_nif, billing_nif, _billing_nif). Si está, no tienes que tocar nada: PayPam ya recoge el dato. Si tu plugin guarda en una clave distinta, tienes dos caminos: migrar a wc-apg-nifcifnie-field (con la migración de los pedidos históricos pertinente) o pedirnos que añadamos tu meta key concreta al lector.

¿El NIF que captura el plugin se valida o solo se guarda como texto?

Depende del plugin. wc-apg-nifcifnie-field valida el formato: comprueba la letra de control del DNI, el algoritmo del NIE y el dígito de control del CIF. Si el cliente teclea un valor inválido, el checkout no le deja confirmar el pedido. Otros plugins privados pueden o no validar; revisa su documentación. La validación de formato no es lo mismo que la validación contra el censo de la AEAT (que confirma que el NIF existe y a quién pertenece). Para la mayoría de tiendas, la validación de formato es suficiente.

¿PayPam captura el NIF también de pedidos creados por la API o por importación?

Sí. PayPam lee las meta keys del pedido sin importar cómo se haya creado el pedido. Si un pedido entra vía REST API (por ejemplo desde una integración B2B o un ERP) y guarda el NIF en cualquiera de las cuatro claves consultadas, PayPam lo recoge igual que en un pedido de checkout normal. Lo mismo aplica a pedidos importados desde otra plataforma con un script de migración: si el script escribe en una de esas cuatro meta keys, todo funciona.

¿Puedo añadir el NIF a un pedido después de completarse y refacturar?

Sí. Abres el pedido en WooCommerce, editas el campo NIF en los datos de facturación y guardas. Cuando regeneres la factura desde PayPam (o cuando el sistema vuelva a procesar el pedido), las cuatro meta keys se leerán de nuevo, se encontrará el valor recién añadido, y la factura se emitirá ya como ordinaria con fiscalId poblado. Es el camino habitual cuando un cliente B2C te pide a posteriori una factura con datos fiscales para deducirla.

Cierre: el NIF en el checkout es la pieza que automatiza el resto

Capturar el NIF en el checkout no es un detalle estético: es la pieza que decide si tu facturación a Factura Directa es ordinaria o simplificada. El plugin NIF para WooCommerce que elijas determina dónde se guarda el dato; PayPam lo lee en cualquiera de las cuatro convenciones más extendidas y lo manda como fiscalId a Factura Directa sin que tú toques nada.

Si vienes de cero, instala wc-apg-nifcifnie-field, configúralo para que el campo aparezca cuando el cliente marca «facturar a empresa», y deja que PayPam haga el resto. Si ya tienes una instalación con histórico, comprueba que tu meta key está entre las cuatro que PayPam lee. En ambos casos: cada pedido B2B sale con factura ordinaria correcta, cada B2C con simplificada legal, y tu facturación recibe los datos sin copy-paste manual.