Si usas Stripe con varios precios en una misma suscripción, no debes juntar líneas ni tomar la factura de Stripe como si fuera el registro fiscal. Yo lo resumiría así: cada línea de Stripe debe pasar por separado a VeriFactu, con su base imponible, IVA, periodo, cliente y referencia bien atados.
En la práctica, esto va de evitar tres fallos muy comunes:
- mezclar importes de varias líneas en una sola,
- enviar importes sin pasar a euros cuando la divisa no es EUR,
- y declarar sin NIF/CIF cuando el total supera 400,00 € en una factura ordinaria.
También conviene no perder de vista dos fechas: 1 de enero de 2027 para sociedades y 1 de julio de 2027 para autónomos. Y hay otra idea que manda sobre todo lo demás: Stripe cobra; VeriFactu registra y comunica a la AEAT. Para automatizar este proceso, puedes usar un conector Stripe Verifactu.
Antes de meter mano, yo revisaría esta demo conector Stripe–VeriFactu y este listado corto:
- Serie y numeración propias para Stripe, siempre secuenciales.
- NIF, razón social y domicilio fiscal del emisor bien cargados.
- Datos del cliente completos si toca factura ordinaria.
- IVA por línea según Stripe Tax, sin rehacer cálculos a mano.
- Periodo del servicio además de la fecha de cobro.
- Conversión a euros con tipo BCE si cobras en otra moneda.
- Control de prorrateos, descuentos y reembolsos antes de enviar.
- Rectificativa si hay devolución; nunca borrar el registro previo.
- Idempotencia para no duplicar registros si Stripe reintenta el webhook.
- Estado
paidantes de generar el registro.
La regla central es simple: una línea en Stripe, una línea en VeriFactu. Si todo cuadra línea a línea – base, IVA, descuentos y fechas – , ya puedes generar, firmar y remitir el registro a la AEAT con su hash, su QR y su enlace con el anterior.
A partir de aquí, yo me centraría en mapear bien cada campo, revisar los casos con prorrateo y bloquear cualquier envío que no cierre con margen de ±0,01 € por línea o ±0,05 € en el total.

Stripe a VeriFactu: Flujo de Declaración Multi-Price Paso a Paso
Requisitos de VeriFactu que debes confirmar antes de configurar los precios en Stripe
Con los datos básicos ya revisados, ahora toca dejar claras las reglas fiscales que afectan a los precios en Stripe.
VeriFactu se aplica a los negocios sujetos al reglamento español de facturación del Real Decreto 1007/2023. Cada registro debe quedar encadenado con el anterior, y la factura al cliente tiene que incluir un código QR. Además, el proveedor debe disponer de una declaración responsable de cumplimiento del RD 1007/2023.
Fija la serie, la numeración y el tratamiento fiscal
Antes de crear precios recurrentes, conviene definir una serie propia, por ejemplo STRIPE-2026-, junto con una numeración secuencial.
Con esa serie ya fijada, puedes separar el flujo comercial de Stripe del registro fiscal. Dicho de forma simple: una cosa es cobrar, y otra dejar constancia fiscal de ese cobro. Si hay un reembolso o detectas un error, no borres el registro original. Debes emitir una factura rectificativa que lo referencie dentro de la misma cadena.
La suscripción de Stripe no equivale al registro VeriFactu
Activar una suscripción en Stripe es un evento comercial, no una declaración fiscal. El recibo de Stripe no sustituye al registro VeriFactu. Antes de crear precios y series, deja preparados los campos fiscales que vas a necesitar:
- base imponible
- tipo de IVA
- NIF del cliente
- periodo de servicio
Stripe genera el dato de origen, pero el registro VeriFactu debe crearse y enviarse desde un sistema que cumpla la norma. El Stripe Verifactu Connector automatiza la captura, la firma y el envío del registro sin cambiar el flujo de Stripe.
sbb-itb-b01fb3c
Mapea cada precio de suscripción y línea de factura al registro VeriFactu
Con la serie y el tratamiento fiscal ya fijados, toca pasar cada línea de Stripe al registro VeriFactu sin juntar importes.
Si una suscripción tiene varios precios, cada línea de la factura de Stripe debe pasar al registro VeriFactu con su descripción, cantidad, precio unitario y tipo de IVA.
La regla es simple: una línea en Stripe, una línea en el registro fiscal. Así mantienes la trazabilidad línea por línea:
| Campo Stripe | Campo factura / VeriFactu | Relevancia fiscal | Regla de validación |
|---|---|---|---|
description | Concepto / descripción | Identifica el servicio o producto | Debe coincidir con el nombre del producto o servicio facturado |
quantity | Cantidad | Volumen facturado | Debe coincidir con Stripe |
taxable_amount | Base imponible | Importe antes de impuestos por línea | La suma de bases debe cuadrar con el subtotal |
rate.percentage | Tipo de IVA | Porcentaje aplicado | Tomarlo directamente de Stripe Tax; no recalcular |
currency | Moneda | Importe de la factura | Si la moneda no es EUR, convierte a euros con el tipo de cambio BCE del día del pago |
period_start / period_end | Periodo de facturación | Trazabilidad de la suscripción | Incluirlo en metadatos o notas del registro |
taxability_reason | Exención o inversión del sujeto pasivo | Motivo de exención o inversión del sujeto pasivo | Mapear reverse_charge al código ISP correspondiente |
Guarda subscription_id y stripe_invoice_id para evitar declaraciones duplicadas.
Varios precios, intervalos mixtos y cargos puntuales
Si una suscripción mezcla varios precios, intervalos distintos o invoice items, cada cargo debe enviarse como una línea separada en VeriFactu.
El campo billing_reason señala el origen de cada ciclo. subscription_create y subscription_cycle suelen procesarse de forma automática. Si el origen viene de un cambio de plan, revisa el prorrateo antes de enviar. Y si el ciclo tiene un total de 0 € – por ejemplo, por un periodo de prueba o porque lo cubre un crédito – , lo normal es que no genere registro.
Mantén la lógica de IVA incluido o excluido de forma coherente
Antes de hacer el mapeo, deja por escrito si los precios en Stripe están configurados con IVA incluido o excluido, y aplica ese mismo criterio en todas las líneas.
Si mezclas ambos dentro de una misma factura, aparecerán descuadres entre la base imponible, la cuota de IVA y el total.
Comprueba importes, descuentos, IVA y periodos antes de enviar
Con cada línea ya mapeada, aquí va la última revisión antes del envío.
Valida periodos, prorrateos y redondeo decimal
Comprueba que la base, el IVA y el total coinciden con lo cargado en Stripe y que el periodo facturado es el correcto. Si necesitas calcular el precio unitario, divide la base entre la cantidad.
Trabaja con una tolerancia de ±0,01 € por línea y de ±0,05 € en el total. Si se sale de ese margen, marca el caso para revisión manual.
Los prorrateos y los ajustes negativos conviene revisarlos a mano antes de enviar. Aquí es donde más fácil es que algo “casi cuadre”, pero no del todo.
Si el cobro no está en EUR, pasa los importes a euros con el tipo de cambio del BCE del día del pago.
Aplica descuentos y datos fiscales del cliente correctamente
Antes de enviar, confirma que el cliente tiene el NIF/CIF/NIE y la dirección de facturación completos. Si falta el NIF y el importe supera 400 €, bloquea el envío. Y si el NIF ya está informado, comprueba que sea válido en el censo de la AEAT para evitar rechazos.
Ordinarias, prorrateos y rectificativas
Si los importes ya cuadran, asigna ahora el tipo de registro que toca:
| Tipo de factura | Cuándo se emite | Tratamiento del importe | Referencia obligatoria |
|---|---|---|---|
| Ordinaria (F1) | Ciclo estándar con NIF | Base imponible y cuota de IVA positivas | No aplica |
| Simplificada (F2) | Ciclo estándar sin NIF y por debajo del umbral aplicable (habitualmente 400 €) | Base imponible y cuota de IVA positivas | No aplica |
| Ajuste por prorrateo | Cambio de plan a mitad de ciclo (subscription_update) | Líneas positivas y negativas; revisión manual recomendada | ID de suscripción original |
| Rectificativa (R) | Reembolso total o parcial (charge.refunded) | Importes negativos vinculados a la factura original | UUID o metadatos de la factura original |
Las facturas rectificativas no sustituyen ni borran el registro original. En VeriFactu, cada devolución debe dejar un rastro trazable y enlazado con la factura que corrige.
Con la validación cerrada, toca generar, firmar y remitir el registro.
Genera, firma y envía el registro a la AEAT desde Stripe
Cuando las líneas ya están validadas, el conector genera el registro fiscal, enlaza el nuevo registro con la huella anterior mediante un hash SHA-256, lo firma con el certificado del colaborador social y lo envía a la AEAT por SOAP. Si hay algo que no cuadra, ese registro no se manda.
Cuando la AEAT lo acepta, se guardan estos campos: submission_status, registration_number, invoice_hash, registered_at y qr_url o qr_base64, que luego sirven para el PDF del cliente. El Stripe Verifactu Connector se integra en Stripe sin código y sin tocar la configuración.
Lista de control antes del envío
Antes de firmar, conviene pasar un último filtro. Aquí es donde se evitan fallos tontos y también los que luego cuestan horas.
| Control | Qué verificar |
|---|---|
| Líneas trazables | Una línea por cada precio de suscripción, con su ID de Stripe vinculado |
| Periodo de servicio | Fecha de inicio y fin correctas del ciclo facturado |
| Prorrateos | Revisión manual si el ajuste no encaja con el ciclo normal |
| Validación fiscal | Base imponible, IVA, descuentos, divisa en EUR (tipo BCE de la fecha de pago) y NIF/CIF del cliente cuadran línea a línea; si falta el NIF y el total supera 400 €, el registro queda en revisión manual |
| Estado de pago | La factura debe estar paid en Stripe antes de generar el registro VeriFactu |
| Reembolsos | Generar la factura rectificativa vinculada a la factura original |
| Idempotencia | Evita duplicados si Stripe reintenta el webhook |
La regla principal en suscripciones multi-price
En suscripciones multi-price, la regla es simple: base, IVA, descuentos y periodo tienen que cuadrar línea a línea antes de firmar y enviar a la AEAT.
FAQs
¿Qué pasa si una suscripción mezcla varios precios?
Si una suscripción en Stripe incluye varios precios, la facturación se gestiona sola y no hace falta tocar nada más. En cada renovación, Stripe genera su propia factura con el desglose real de los conceptos, los periodos y los impuestos calculados en ese momento.
Si después hay cambios de plan o prorrateos, se emite el cargo que corresponda con su factura asociada. Así, cada movimiento mantiene el encadenamiento criptográfico y el cumplimiento con VeriFactu.
¿Cuándo hace falta el NIF del cliente?
El NIF del cliente hace falta para emitir una factura ordinaria (F1). Este tipo de factura es obligatoria cuando el destinatario es una empresa o un autónomo que necesita una factura completa.
Si el cliente es un consumidor final y no facilita su NIF, puede emitirse una factura simplificada (F2), siempre que no se superen los límites legales. Si configuras tu sistema para pedir siempre el NIF, los cobros sin ese dato se quedarán pendientes de revisión manual.
¿Cómo se tratan los prorrateos y reembolsos?
En VeriFactu, las facturas emitidas son fiscalmente irreversibles. Dicho de forma simple: no se pueden borrar ni anular.
Con los reembolsos, ya sean totales o parciales, no se elimina la factura original. En su lugar, se genera una factura rectificativa vinculada a esa factura.
Los prorrateos fuera del ciclo regular suelen pedir revisión manual. Si un cambio de plan a mitad de ciclo genera un cargo prorrateado, se emite la factura que corresponda según la configuración aplicada.

