Skip to content

NIP at checkout

Los clientes empresariales necesitan un campo NIP en la página de pago para recibir una factura con IVA. Polski for WooCommerce añade un campo NIP con validación de suma de control y verificación en GUS REGON. Los datos de la empresa se rellenan automáticamente.

El módulo NIP verifica el número en tres niveles:

  1. Validación de formato - comprobación de que el número está compuesto por 10 dígitos
  2. Validación de suma de control - algoritmo de verificación del dígito de control del NIP
  3. Verificación GUS REGON - comprobación en la base de datos de la Oficina Central de Estadística con obtención automática de los datos de la empresa

Vaya a WooCommerce > Ajustes > Polski > Pago y configure la sección “NIP”.

AjusteValor predeterminadoDescripción
Activar campo NIPAñade el campo NIP a la página de pago
Campo obligatorioNoSi el NIP es obligatorio
Posición del campoDespués del campo de empresaDónde mostrar el campo NIP
Validación de suma de controlComprueba la corrección del número NIP
Verificación GUS REGONNoVerifica el NIP en la base de datos GUS
Rellenado automáticoObtiene los datos de la empresa de GUS

El campo NIP se puede mostrar:

  • Siempre - visible para todos los clientes
  • Tras marcar “Quiero una factura” - aparece tras marcarlo
  • Tras introducir un nombre de empresa - aparece cuando el campo “Empresa” está relleno

La opción recomendada es mostrarlo tras marcar “Quiero una factura” - es la más clara para el cliente.

El algoritmo de validación del NIP se basa en un sistema de pesos. El dígito de control (último, décimo dígito) se calcula a partir de los nueve dígitos anteriores.

Pesos para los dígitos sucesivos del NIP: 6, 5, 7, 2, 3, 4, 5, 6, 7

NIP: 1234567890
Sum = 1*6 + 2*5 + 3*7 + 4*2 + 5*3 + 6*4 + 7*5 + 8*6 + 9*7 = 214
Remainder = 214 mod 11
If remainder == last NIP digit -> NIP is valid

El plugin valida tanto en el lado del cliente (JavaScript) como en el del servidor (PHP). La validación del lado del servidor siempre está activa.

El plugin acepta el NIP en diversos formatos:

  • 1234567890 - solo dígitos
  • 123-456-78-90 - con guiones
  • 123 456 78 90 - con espacios
  • PL1234567890 - con prefijo de país

Todos los formatos se normalizan a 10 dígitos antes de la validación.

La API GUS REGON requiere una clave de acceso. El plugin admite dos entornos:

EntornoURLClaveUso
Pruebahttps://wyszukiwarkaregontest.stat.gov.pl/wsBIR/UslugaBIRzewnwordbir.svcabcde12345abcde12345 (clave de prueba pública)Desarrollo y pruebas
Producciónhttps://wyszukiwarkaregon.stat.gov.pl/wsBIR/UslugaBIRzewnetrzny.svcSu propia clave de GUSTienda en producción
  1. Vaya a: https://api.stat.gov.pl/Home/BirIndex
  2. Regístrese e inicie sesión
  3. Presente una solicitud de acceso a la API REGON
  4. La clave se enviará a la dirección de correo electrónico indicada (tiempo de espera: 1-3 días hábiles)
  1. Vaya a WooCommerce > Ajustes > Polski > Pago > NIP
  2. Active Verificación GUS REGON
  3. Seleccione el entorno: Prueba o Producción
  4. Pegue la clave de API (para el entorno de producción)
  5. Guarde los ajustes

En modo de prueba, el plugin utiliza la clave de prueba pública de GUS. La base de datos de prueba contiene datos ficticios. Úsela únicamente durante el desarrollo y las pruebas.

Obtención automática de los datos de la empresa

Section titled “Obtención automática de los datos de la empresa”

Tras verificar el NIP en GUS REGON, el plugin rellena automáticamente los campos del formulario:

Campo de WooCommerceDatos de GUS
EmpresaNombre de la empresa
Dirección 1Calle y número
CiudadCiudad
Código postalCódigo postal
Estado/ProvinciaVoivodato

El cliente ve los datos rellenados y puede corregirlos antes de realizar el pedido.

  • Los campos se rellenan solo si están vacíos o contienen datos de GUS obtenidos previamente
  • Si el cliente ha modificado los datos manualmente, el plugin no sobrescribe los cambios
  • Se informa al cliente con un mensaje sobre la obtención de los datos

El número NIP se guarda como metadatos del pedido:

  • clave: _billing_nip
  • visible en la vista del pedido del panel de administración
  • disponible en las plantillas de correo electrónico
  • exportable en los informes

El NIP se muestra automáticamente:

  • en los detalles del pedido (panel de administración)
  • en el correo electrónico de confirmación del pedido
  • en la página “Mi cuenta > Pedidos”
$order = wc_get_order($order_id);
$nip = $order->get_meta('_billing_nip');
function validate_nip(string $nip): bool {
$nip = preg_replace('/[^0-9]/', '', $nip);
if (strlen($nip) !== 10) {
return false;
}
$weights = [6, 5, 7, 2, 3, 4, 5, 6, 7];
$sum = 0;
for ($i = 0; $i < 9; $i++) {
$sum += (int) $nip[$i] * $weights[$i];
}
return ($sum % 11) === (int) $nip[9];
}
add_filter('polski/checkout/validate_nip', function (bool $is_valid, string $nip): bool {
// Additional validation logic
// e.g. checking against a blocked NIP list
$blocked_nips = ['0000000000'];
if (in_array($nip, $blocked_nips, true)) {
return false;
}
return $is_valid;
}, 10, 2);
  1. Compruebe que la clave de API es correcta y está activa
  2. Verifique que el servidor puede establecer una conexión HTTPS con api.stat.gov.pl
  3. La API de GUS puede no estar disponible - el plugin gestiona los tiempos de espera y muestra un mensaje adecuado
  4. Asegúrese de que la extensión PHP SOAP está instalada en el servidor
  1. Compruebe que el módulo NIP está activado
  2. Verifique el ajuste de visualización condicional
  3. Vacíe la caché (los plugins de caché pueden almacenar en caché el formulario de pago)

Los datos de la empresa no se rellenan automáticamente

Section titled “Los datos de la empresa no se rellenan automáticamente”
  1. Compruebe la consola del navegador en busca de errores AJAX
  2. Verifique que el endpoint de la API REST del plugin es accesible
  3. Asegúrese de que el NIP es correcto y de que la empresa existe en la base de datos GUS
Esta página tiene únicamente carácter informativo y no constituye asesoramiento jurídico. Consulte con un abogado antes de la implementación. Polski for WooCommerce es software de código abierto (GPLv2) proporcionado sin garantía.