Cómo emitir facturas Verifactu con MemberPress y Stripe

MemberPress no emite facturas Verifactu por sí solo. Si cobras las membresías con Stripe, Finseed automatiza la factura de cada alta y cada renovación: conecta las dos herramientas a la misma cuenta de Stripe, sin cambiar cómo vendes tus membresías.

Isaac Mayolas
Isaac Mayolas
Chief Technology Officer
Última actualización: 21/ago/2026

Si vendes membresías, cursos o una zona privada en WordPress con MemberPress, el cobro ya lo tienes resuelto: MemberPress da de alta al socio, restringe el acceso y le envía un recibo. Lo que no tienes es una factura Verifactu, porque MemberPress no emite facturas y Stripe, por sí solo, tampoco cumple con la normativa española.

La solución no pasa por cambiar de plugin ni de pasarela. MemberPress cobra con Stripe y Finseed factura desde Stripe. Solo hay que conectar las dos herramientas a la misma cuenta y asegurarse de que el NIF del cliente llega a Stripe.

El proceso tiene cinco partes:

  1. Conectar MemberPress con Stripe.
  2. Conectar Finseed con esa misma cuenta de Stripe.
  3. Convertir las facturas que genera Stripe en proforma, para no duplicar facturas.
  4. Pedir el NIF en el formulario de alta de MemberPress.
  5. Guardar ese NIF en el Customer de Stripe con un snippet de PHP.

Antes de empezar, un matiz que cambia la guía entera. Esta guía cubre membresías recurrentes: MemberPress crea una suscripción en Stripe y Stripe genera una factura en cada renovación. Es lo que en Finseed llamamos Stripe Invoices. Si vendes accesos de pago único, MemberPress crea un cobro suelto sin factura de Stripe, y entonces la integración que necesitas es Stripe Payments. Los pasos 3 y 5 cambian en ese caso; el resto es igual.

1. Conecta MemberPress con Stripe

Si ya cobras con Stripe, salta al paso 2.

Si no, en WordPress ve a MemberPress > Settings > Payments, pulsa Add Payment Method, elige Stripe y pulsa Connect with Stripe. Autoriza la cuenta donde quieres recibir los cobros.

MemberPress conecta con Stripe desde Settings > Payments. Activa el modo de prueba de Stripe mientras configuras el resto de la guía.

Haz un alta de prueba y comprueba en Stripe que aparecen el Customer, la suscripción y su primera factura. Si ves la suscripción y la factura, estás en el caso de Stripe Invoices y puedes seguir. MemberPress tiene documentación oficial sobre Stripe por si tu versión difiere.

2. Conecta Finseed con Stripe

  1. Crea tu cuenta en Finseed, si todavía no la tienes. Entrarás en el modo de prueba, que no envía nada a la AEAT.
  2. Ve a Integraciones > Añadir integración y selecciona Stripe.
  3. Autoriza la misma cuenta de Stripe que has conectado a MemberPress.
  4. Al volver a Finseed, elige Stripe Invoices.

Stripe Invoices es la opción para suscripciones. Finseed leerá cada factura que Stripe genere y emitirá la factura Verifactu correspondiente.

Listo. A partir de aquí, cada factura de Stripe genera una factura Verifactu en Finseed. La guía de instalación de Stripe cubre la autorización con más detalle.

3. Convierte las facturas de Stripe en proforma

Este paso es el que casi nadie hace y el que más problemas evita.

Con suscripciones, Stripe genera su propia factura en cada renovación y, por defecto, se la envía al cliente. Finseed genera otra, que es la que tiene validez fiscal. Si no haces nada, tu cliente recibe dos documentos distintos por el mismo cobro.

La forma correcta de resolverlo es convertir las facturas de Stripe en proforma, sin desactivarlas: Finseed las necesita como fuente de datos.

  1. En Stripe, ve a Settings > Billing > Invoices.

  2. En Invoice number, añade PROFORMA- al prefijo de numeración.

  3. En Footer, escribe un aviso del tipo: Este documento es una factura proforma sin valor fiscal. La factura oficial será emitida por [tu empresa] y enviada por email.

  4. En Finseed, entra en los ajustes de la integración de Stripe y desmarca Copiar el pie de factura de Stripe en las notas. Si no, ese aviso de "sin valor fiscal" acabaría impreso en la factura Verifactu.

Desmarca esta opción para que el aviso de proforma no se copie en la factura oficial.

Si además no quieres que el cliente reciba la proforma de Stripe, desactiva el envío en Settings > Billing > Emails. La guía de facturas proforma tiene el detalle.

4. Pide el NIF en el alta de MemberPress

Este paso solo es necesario si quieres emitir facturas completas con identificador fiscal. Si un cliente no deja NIF, Finseed puede emitir una factura simplificada cuando la operación lo permite. Pero si vendes a empresas o autónomos, pide el dato en el alta y no lo persigas después por email.

  1. Ve a MemberPress > Settings > Fields.
  2. En Custom User Information Fields, pulsa + y crea un campo de tipo Text llamado, por ejemplo, NIF / DNI / CIF.
  3. Marca Show at Signup. Si la mayoría de tus clientes son empresas, marca también Required.
  4. Anota el slug que MemberPress le asigna. En esta guía usamos mepr_nif_dni_cif. Si el tuyo es otro, cámbialo también en el snippet del paso 5.

El slug del campo es el que usará el snippet para leer el NIF. Anótalo.

Por defecto el campo aparece en el alta de todas las membresías. Si solo lo quieres en algunas, edita esa membresía, abre Membership Options > Registration, activa Customize User Information Fields y selecciónalo.

Así lo ve el cliente al darse de alta.

Con esto el NIF queda guardado en WordPress. Falta llevarlo a Stripe.

5. Guarda el NIF en el Customer de Stripe

MemberPress guarda el campo en el perfil del usuario de WordPress, pero no lo copia a Stripe. Finseed lee el identificador fiscal desde los metadatos de Stripe con esta clave:

ev_recipient_tax_id

Para suscripciones, guárdala en el Customer de Stripe, no en una factura concreta. Así el dato queda asociado al cliente y sirve para todas sus renovaciones.

Pega este snippet en el functions.php de tu tema hijo o en un plugin tipo Code Snippets:

add_filter('mepr-stripe-create-customer-args', 'ev_set_fiscal_id_on_stripe_customer', 10, 2);

function ev_set_fiscal_id_on_stripe_customer($args, $user) {
  $fiscal_id = '';

  if (!empty($_POST['mepr_nif_dni_cif'])) {
    $fiscal_id = sanitize_text_field(wp_unslash($_POST['mepr_nif_dni_cif']));
  }

  if (empty($fiscal_id) && !empty($user->ID)) {
    $fiscal_id = get_user_meta($user->ID, 'mepr_nif_dni_cif', true);
  }

  if (!empty($fiscal_id)) {
    $args['metadata'] = $args['metadata'] ?? [];
    $args['metadata']['ev_recipient_tax_id'] = $fiscal_id;
  }

  return $args;
}

El snippet se ejecuta cuando MemberPress crea el Customer en Stripe y añade el NIF a sus metadatos.

Tres detalles importantes:

  • La clave debe llamarse exactamente ev_recipient_tax_id. Finseed no lee nif, dni, cif ni tax_id.
  • Si el cliente es extranjero y se identifica con pasaporte u otro documento, añade también ev_recipient_tax_id_type y ev_recipient_tax_id_country. Los valores admitidos están en la guía del identificador fiscal.
  • MemberPress cambia con el tiempo. Comprueba que tu versión sigue disparando el filtro mepr-stripe-create-customer-args. Si no, el objetivo es el mismo: añadir el metadato cuando MemberPress crea el Customer.

6. Haz una prueba completa

Antes de activar nada en producción, recorre el circuito entero en modo de prueba:

  1. Crea un alta en MemberPress rellenando el campo NIF.
  2. Abre el Customer en Stripe y comprueba que sus metadatos incluyen ev_recipient_tax_id. Si el NIF aparece ahí, el snippet funciona y todas las renovaciones de este cliente lo heredarán.
  3. Abre en Finseed la factura generada a partir de esa primera factura de Stripe. Revisa que el NIF, los importes y el tipo de IVA son correctos y que no aparece el aviso de proforma en las notas.

La factura de Finseed lleva el NIF que llegó desde MemberPress y el código QR de Verifactu.

Si ves el NIF en Stripe y después en la factura de Finseed, el circuito está listo.

7. Activa el modo real

Hasta aquí has trabajado en el entorno de pruebas de Finseed, que no envía nada a la AEAT. Cuando el circuito funcione:

  1. Pulsa Activar modo real en la barra superior de Finseed.
  2. Revisa los datos fiscales reales de tu empresa o actividad.
  3. Copia la integración de Stripe que ya has probado.
  4. Indica desde qué fecha quieres empezar a emitir facturas reales.
  5. Elige tu plan y completa el alta.

Comprueba también que MemberPress usa la cuenta de Stripe en modo real y no las claves de prueba. A partir de ahí, cada alta y cada renovación genera su factura Verifactu sin que intervengas.

Casos habituales

  • Renovaciones: quedan cubiertas mientras el NIF esté en el Customer de Stripe.
  • Clientes antiguos: no se actualizan solos. Añádeles ev_recipient_tax_id a mano desde el panel de Stripe o por API antes de su próxima renovación.
  • Devoluciones: un reembolso o una nota de crédito en Stripe genera la rectificativa correspondiente. No edites una factura ya emitida. Más detalle en reembolsos de Stripe Billing.
  • Pago único: usa Stripe Payments. No hay facturas de Stripe que convertir en proforma, y el metadato se lee del PaymentIntent o del Customer.
  • PayPal u otra pasarela: esos cobros no pasan por Stripe y no entran en esta integración. Si quieres automatizar Verifactu con MemberPress, centraliza los pagos en Stripe.

Resumen

MemberPress cobra con Stripe y Finseed factura desde Stripe. Conecta las dos a la misma cuenta, convierte las facturas de Stripe en proforma y, si necesitas facturas completas, guarda el NIF del cliente en Stripe.

Si tienes dudas con tu caso concreto, puedes contactar con nosotros y te echamos una mano.