Cómo declarar suscripciones multi‑price en VeriFactu

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 paid antes 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

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.

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 StripeCampo factura / VeriFactuRelevancia fiscalRegla de validación
descriptionConcepto / descripciónIdentifica el servicio o productoDebe coincidir con el nombre del producto o servicio facturado
quantityCantidadVolumen facturadoDebe coincidir con Stripe
taxable_amountBase imponibleImporte antes de impuestos por líneaLa suma de bases debe cuadrar con el subtotal
rate.percentageTipo de IVAPorcentaje aplicadoTomarlo directamente de Stripe Tax; no recalcular
currencyMonedaImporte de la facturaSi la moneda no es EUR, convierte a euros con el tipo de cambio BCE del día del pago
period_start / period_endPeriodo de facturaciónTrazabilidad de la suscripciónIncluirlo en metadatos o notas del registro
taxability_reasonExención o inversión del sujeto pasivoMotivo de exención o inversión del sujeto pasivoMapear 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 facturaCuándo se emiteTratamiento del importeReferencia obligatoria
Ordinaria (F1)Ciclo estándar con NIFBase imponible y cuota de IVA positivasNo aplica
Simplificada (F2)Ciclo estándar sin NIF y por debajo del umbral aplicable (habitualmente 400 €)Base imponible y cuota de IVA positivasNo aplica
Ajuste por prorrateoCambio de plan a mitad de ciclo (subscription_update)Líneas positivas y negativas; revisión manual recomendadaID de suscripción original
Rectificativa (R)Reembolso total o parcial (charge.refunded)Importes negativos vinculados a la factura originalUUID 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.

ControlQué verificar
Líneas trazablesUna línea por cada precio de suscripción, con su ID de Stripe vinculado
Periodo de servicioFecha de inicio y fin correctas del ciclo facturado
ProrrateosRevisión manual si el ajuste no encaja con el ciclo normal
Validación fiscalBase 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 pagoLa factura debe estar paid en Stripe antes de generar el registro VeriFactu
ReembolsosGenerar la factura rectificativa vinculada a la factura original
IdempotenciaEvita 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.

Publicaciones de blog relacionadas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *