Skip to main content
Finseed puede determinar el impuesto de un pago de Checkout de varias formas. Elige la opción que coincide con tu integración. Para ventas nacionales cuyo porcentaje de IVA ya conoces, un tipo impositivo manual con el IVA incluido suele ser la opción más sencilla. Stripe llama Tax Rates a los tipos impositivos que configuras manualmente. Para el cálculo automático utiliza el nombre Stripe Tax. En esta guía los llamaremos tipos impositivos manuales y Stripe Tax.

Elige cómo indicar el impuesto

Cada pago de un Payment Link genera una sesión de Checkout. Finseed aplica el mismo orden de prioridad en ambos casos. Stripe copia a la sesión los metadatos que has configurado en el enlace. El ejemplo de tipos manuales solo se aplica a sesiones de Checkout creadas mediante la API.

Cómo determina Finseed el impuesto

Finseed comprueba estas fuentes por orden y utiliza la primera que aporta un impuesto válido:
  1. La marca ev_gift_card. Si el pago está marcado como emisión de un bono polivalente, la operación no está sujeta a IVA y no consultamos ninguna otra fuente. No procesamos el pago si Stripe ha cobrado impuesto en alguna de sus líneas o si la sesión cobra gastos de envío: consulta cómo marcar un pago como venta de tarjeta regalo.
  2. Los metadatos ev_tax_rate y ev_tax_name de la sesión. Si la sesión no contiene ninguna de las dos claves, buscamos el par en el PaymentIntent. Cuando el par es válido, aplicamos ese tipo a todas las líneas.
  3. El impuesto de cada línea. Puede proceder de un tipo impositivo manual o del cálculo de Stripe Tax. Si todos los impuestos de Stripe de la línea llegan con importe cero y con el motivo not_collecting, not_supported o not_available, la línea no aporta un impuesto, porque Stripe no lo ha calculado.
  4. La configuración para líneas sin impuesto. Indica si el precio incluye IVA, si la operación está exenta o no sujeta, o si debemos pausar la emisión de la factura para que revises el pedido.
Configura una única fuente por pago. Si varias fuentes indican tipos distintos, Finseed aplica la primera según este orden e ignora las siguientes. Si ninguna aporta un impuesto, la línea cuenta como una línea sin impuesto. Qué hacemos con ella depende del destino y lo explicamos en Cómo factura Finseed una línea al 0 %. Un servicio que vendes desde la península o Baleares a Canarias, Ceuta o Melilla tiene su propia regla. Si la línea tiene un importe distinto de cero y llega sin impuesto o al 0 %, la facturamos como no sujeta por reglas de localización cuando tu perfil fiscal indica Contenido digital automático. Con Servicios con intervención de una persona, una línea sin impuesto sigue tu configuración para líneas sin impuesto. Eso incluye la línea que Stripe Tax deja al 0 % con el motivo not_collecting, not_supported o not_available. Una línea al 0 % por cualquier otro motivo retiene el pedido. Con Servicios sin tipo elegido, retenemos el pedido. Si llega con un impuesto distinto del IVA español, por ejemplo IGIC o IPSI, retenemos el pedido. Si el impuesto va al 21 %, 10 % o 4 % con un importe distinto de cero pero su nombre no permite saber si es IVA, como «Standard», o incluye una palabra como «no», «sin» o «exento», usamos la clasificación que le diste en Configuración > Impuestos. En una sesión de Checkout en modo suscripción, cada línea cuenta como un servicio, salvo que su producto de Stripe indique que requiere envío. Encontrarás el detalle en Ventas de servicios. Los ejemplos utilizan la biblioteca de Stripe para Node.js. La variable stripe representa un cliente ya inicializado.

Configurar un tipo impositivo manual con el IVA incluido

Un tipo impositivo manual de Stripe combina un porcentaje y una etiqueta. Lo creas una vez y lo asignas a cada línea. Stripe aplica el porcentaje que has indicado, pero no lo calcula por ti. Es la opción más sencilla si todos tus productos tributan al mismo tipo de IVA. Cuando vendes a particulares en España, el precio suele incluir el impuesto. Crea el tipo una vez y añádelo a cada línea de Checkout.
Finseed forma el nombre del impuesto con el país, la etiqueta y el porcentaje. Con esta configuración, el resultado es ES IVA 21%. Este impuesto ya está configurado en las cuentas españolas, por lo que Finseed lo reconoce sin pedirte que lo clasifiques. Finseed intenta clasificar automáticamente cualquier combinación nueva mediante el nombre, el porcentaje y el destino de la venta. Si no puede determinar su tratamiento fiscal, pausa la primera factura y te pide que lo clasifiques. Utiliza nombres como ES IVA 21% para que la configuración sea explícita y fácil de reconocer. Consulta la referencia de metadatos para ver la convención completa de nombres. El valor inclusive: true indica que el importe ya contiene el impuesto. En el ejemplo, la factura muestra este desglose: Crea un tipo para cada porcentaje de IVA que utilices, como 21 %, 10 % o 4 %, y asigna el correcto a cada línea.

Calcular los impuestos con Stripe Tax

Stripe Tax calcula el tipo aplicable a partir del producto, la dirección del comprador y tus registros fiscales. Actívalo en la sesión para que Stripe determine el impuesto de cada línea.
Finseed lee el tipo y el país que Stripe ha aplicado a cada línea. Por ejemplo, un producto sujeto al tipo general puede llegar como ES VAT 21% para un comprador español o como FR VAT 20% para uno francés. Finseed reconoce el impuesto por el tipo y el país, no por el nombre. Si reutilizas un Customer, añade customer_update: { address: 'auto' }. Stripe Tax necesita esta opción para utilizar la dirección que introduce el comprador.
Stripe Tax solo cobra impuestos donde tienes un registro fiscal configurado. Sin registro, Stripe deja el impuesto a cero y marca la línea como not_collecting. Stripe Tax tampoco calcula impuestos en Canarias, Ceuta y Melilla: allí marca la línea como not_supported. Si todos los impuestos de Stripe de una línea llegan así, con importe cero, tratamos la línea como una línea sin impuesto, como explicamos más abajo, en Cómo factura Finseed una línea al 0 %. Por ejemplo, retenemos el pedido de un particular de otro país de la UE si la línea tiene un importe distinto de cero. Antes de activar automatic_tax, abre Settings > Tax en Stripe y añade los países donde debas cobrar, o tu registro en la ventanilla única de la UE (OSS).

Indicar el impuesto mediante metadatos

Cuando ya conoces el impuesto y no quieres que Stripe lo calcule, indícalo en la sesión. Finseed aplicará ese tipo a todas las líneas del pago.
Esta opción tiene dos reglas:
  • Escribe los metadatos al crear la sesión. Finseed los lee cuando Stripe comunica el pago. Si los añades después, no llegan a tiempo y los ignoramos.
  • No los utilices en una cesta con distintos tipos de IVA. Finseed aplica un único porcentaje a todas las líneas. Una cesta con un producto al 21 % y un libro al 4 % se facturaría por completo al 21 %.
En un Payment Link, configura los metadatos en el enlace. Stripe los copiará a cada sesión que cree. Finseed valida el par antes de utilizarlo. Ambas claves deben estar presentes. El tipo debe ser un número con un máximo de dos decimales, como '21', '10.5' o '0'. Si el par de la sesión no es válido, lo ignoramos y comprobamos el impuesto de cada línea. En ese caso no consultamos los metadatos del PaymentIntent. El pago no queda bloqueado por este error. Consulta la referencia de metadatos para ver todos los campos y sus reglas de validación.

Cómo factura Finseed una línea al 0 %

En Stripe, una línea al 0 % puede representar situaciones fiscales distintas. Stripe Tax añade un motivo, llamado taxability_reason, para explicar por qué el cálculo ha dado cero. Una línea puede llevar varios impuestos de Stripe, cada uno con su propio motivo. Finseed utiliza esos motivos para distinguir cada caso. Si la línea de un servicio que vendes desde la península o Baleares a Canarias, Ceuta o Melilla tiene un importe distinto de cero y llega con ev_tax_rate: '0' o al 0 % con el motivo standard_rated, la facturamos como no sujeta por reglas de localización cuando tu perfil fiscal indica Contenido digital automático, y retenemos el pedido con cualquier otra respuesta de servicios. Estos son los motivos más habituales que Stripe puede comunicar:
  • not_collecting: no tienes un registro fiscal para ese destino, o el producto lleva en Stripe el código fiscal de producto no sujeto (txcd_00000000). Stripe no calcula el impuesto.
  • not_supported: Stripe Tax no calcula impuestos en ese destino, como Canarias, Ceuta y Melilla, o no calcula el de ese producto en ese destino.
  • not_available: Stripe no ha calculado el impuesto.
  • customer_exempt y product_exempt: el comprador o el producto está exento.
  • zero_rated: corresponde aplicar un tipo del 0 %.
  • reverse_charge: el comprador declara el IVA, como ocurre en una operación intracomunitaria que cumple los requisitos fiscales.
  • not_subject_to_tax: la venta queda fuera del ámbito del impuesto.
  • standard_rated: corresponde el tipo habitual del producto. Algunos bienes en España pueden tener un tipo del 0 %.
Cuando retenemos una venta sin impuesto a un particular de otro país de la UE, mostramos un aviso específico. En este tipo de venta suele corresponder el IVA español o el del país de destino. Por eso, la ausencia de impuesto requiere revisar la configuración.

Impuestos en ventas internacionales

Si vendes a particulares de otros países de la UE, indica tu situación en Configuración > Datos de facturación, dentro de Perfil fiscal. Finseed no calcula el tipo impositivo. Stripe o tu integración deben aportar el porcentaje correcto para el destino. Si indicas que no estás registrado en la ventanilla única (OSS), Finseed acepta los tipos españoles y retiene los pagos que llegan con un tipo extranjero. Si indicas que sí lo estás, clasifica la operación como una venta OSS en el país de destino cuando el tipo recibido es uno de los de ese país, y retiene el pago cuando no lo es. Cómo resolver un pago retenido por este motivo está en Pedidos con un IVA que no corresponde al destino. Esta regla describe cómo interpreta Finseed tu configuración. No determina si tienes la obligación fiscal de registrarte o de cobrar el IVA en destino. Para que Finseed reconozca un tipo manual sin pedirte que lo clasifiques, utiliza la misma convención de nombres que en España: país, nombre y porcentaje. Por ejemplo, FR TVA 20% o DE MwSt 19%. Cuando el comprador está fuera de la UE, su país permite clasificar la operación fuera del ámbito del IVA español. Una venta de bienes puede ser una exportación. Una prestación de servicios puede quedar no sujeta por sus reglas de localización. Los metadatos con ev_tax_rate: '0' pueden servir para estas ventas cuando todas las líneas comparten el mismo tratamiento. El nombre del impuesto debe quedar clasificado como exportación o como operación no sujeta, según corresponda.

Generar el código con un asistente

Copia este texto en tu asistente de programación para implementar la opción adecuada para tu negocio. El texto incluye la recogida del NIF-IVA para ventas a empresas. Consulta recoger el identificador fiscal para entender ese requisito.

Copia este texto para crear sesiones de Stripe Checkout que Finseed pueda facturar correctamente.