NewStripe: a buyer with a NIF always gets a standard invoice, and the simplified threshold is deprecated
BeeL
Get startedMulti-NIFVeriFactuRulesStripeAPI referenceChangelog

How taxes are applied

The Fiscal Mirror rule — BeeL. reflects the Stripe charge exactly, with a clean fallback when Stripe Tax isn't enabled.


When BeeL. generates an invoice from a Stripe payment, it does not recalculate taxes. It reflects the Stripe charge exactly — total, breakdown, currency, everything. This is the Fiscal Mirror rule. This page is the practical version of that contract; the full mechanics live in Data conversion.

At a glance

Tax breakdown sourceStripe (when Stripe Tax is enabled) → your account defaults (otherwise)
Does BeeL. recalculateNever. The invoice total = the Stripe charge total
IRPF on Stripe invoicesAlways 0, regardless of your default IRPF setting
Where to override the fallbackSettings > Integrations > Stripe (per-connection inclusivity flag)
Where to set your account defaultSettings > Taxes (used only when Stripe Tax is off)

How it works

When Stripe Tax is enabled

Every Stripe charge carries tax_amounts[] per line with rate, amount, and inclusivity. BeeL. reads those and emits the invoice with the exact same numbers — your account-level tax defaults are not consulted.

Example: Stripe Tax says 21 % IVA, inclusive, on 121 EUR → BeeL. emits a line with base 100.00 €, IVA 21.00 €, total 121.00 €.

When Stripe Tax is NOT enabled

The charge has no breakdown — just a total. BeeL. falls back to your defaults:

  1. The connection's "Prices include tax" setting (override per Stripe integration)
  2. Your default tax (IVA / IGIC / IPSI) at the rate configured in Settings > Taxes

It then decomposes the Stripe total as inclusive of that rate. The decomposition is exact — no residual rounding.

Example: Stripe charges 121 €, your default is IVA 21 % inclusive → BeeL. emits base 100.00 €, IVA 21.00 €, total 121.00 €.

IRPF is always 0 on Stripe invoices

This is a BeeL. rule, not a statement about who must withhold. A withholding would make the invoice total differ from the Stripe charge, which Fiscal Mirror does not allow, so BeeL. never applies your default professional IRPF to a Stripe payment.

If a customer withholds IRPF from what they pay you, a Stripe-generated invoice will not reflect it: issue that invoice through the Invoicing API instead.

Charges at 0 %

A line Stripe charges at 0 % becomes an exempt or non-taxable line, and an invoice needs the reason. Stripe's taxability_reason says whether it knows it; when your main tax is IVA, BeeL. completes what Stripe leaves open with the default exemption reason you declared in Settings > Taxes.

What Stripe reports on the 0 % lineWhat BeeL. does
No reasonUses your default exemption reason. Without one, the charge waits in Needs attention with the reason "0 % rate requires an exemption reason": declare it and retry the event
product_exempt, product_exempt_holidayUses your default reason if it is an exemption. Otherwise the same wait
not_subject_to_taxUses your default reason if it is a non-subject one. Otherwise the same wait
not_available — a manual tax rate at 0 %, such as the one some platforms create by defaultTreated as a charge with no reason when the buyer is in the IVA territory; see below. Otherwise UNSUPPORTED_STRIPE_TAX_TREATMENT
zero_rated, reverse_charge, customer_exempt, not_collecting, not_supported, or a reason BeeL. does not knowUNSUPPORTED_STRIPE_TAX_TREATMENT: BeeL. does not reflect these treatments

The buyer is in the IVA territory when the buyer's country is Spain and the postal code (five digits) is in the peninsula or the Balearic Islands. A postal code starting with 35 or 38 (Canary Islands), 51 (Ceuta) or 52 (Melilla), a buyer from another country, or a payment with no postal code is outside it. A manual 0 % rate does not say why there is no tax, so BeeL. only takes your declared reason for it where the sale carries IVA.

A charge that waits as UNSUPPORTED_STRIPE_TAX_TREATMENT is not retried and has no draft: issue that invoice through the Invoicing API, or correct the tax in Stripe.

If you create a manual 0 % rate in Stripe for sales to Spanish customers, declare your default exemption reason in BeeL. first; without it, those charges wait in Needs attention.

Equivalence surcharge

If your account has the equivalence surcharge (recargo de equivalencia) configured and the Stripe charge maps to a B2B retailer (mapping has the right flag), BeeL. applies the surcharge automatically as part of the line classification. See Equivalence surcharge.

It only ever lands on a standard (F1) invoice: a simplified one cannot carry the surcharge (SIMPLIFICADA_FORBIDS_SURCHARGE), so a retailer in that regime needs a payment that resolves to F1 — with NIF and address on the Stripe customer.

Where to change settings

Connection-level (per Stripe integration)

  1. Go to Settings > Integrations > Stripe
  2. Edit Prices include tax — controls the inclusivity flag used in the fallback path
  3. Save

Account-level (default tax)

  1. Go to Settings > Taxes
  2. Choose your main tax (IVA, IGIC, or IPSI) and the standard rate
  3. Save

Account-level defaults are used only when Stripe Tax doesn't expose a breakdown — when Stripe Tax is on, your defaults are bypassed.

Changes to either set of settings apply to new invoices only. Already-issued invoices are immutable once their VeriFactu submission is in flight.

Worked example

Imagine your Stripe customer pays 100 EUR:

Case A — Stripe Tax enabled (21 % inclusive)

Stripe says: line of 100 EUR base + 21 EUR IVA = 121 EUR total. Customer paid 121 EUR.

FieldValue
Taxable base100.00 €
IVA (21 %)21.00 €
IRPF0 €
Total121.00 €

Case B — Stripe Tax disabled, your default is IVA 21 % inclusive

Stripe says: total of 100 EUR. Customer paid 100 EUR.

BeeL. decomposes inclusively:

FieldValue
Taxable base82.64 €
IVA (21 %)17.36 €
IRPF0 €
Total100.00 €

Case C — Stripe Tax disabled, your default is IVA 21 % exclusive

Stripe says: total of 100 EUR. You turned Prices include tax off on the connection. BeeL. treats the 100 EUR as the base and adds the IVA on top:

FieldValue
Taxable base100.00 €
IVA (21 %)21.00 €
IRPF0 €
Total121.00 €

The customer paid 100 EUR but the invoice total is 121 EUR — a divergence. Only use the exclusive mode when your Stripe prices are net (rare in B2C). Otherwise leave Prices include tax on.

FAQ

Does BeeL. use Stripe's tax rates?

Yes, when Stripe Tax is enabled. BeeL. copies Stripe's breakdown verbatim — that's the Fiscal Mirror rule.

What happens if I change my default IVA rate?

It only matters when Stripe Tax is disabled on that connection. With Stripe Tax enabled, BeeL. uses Stripe's rate, not yours. Either way, the change applies to new invoices only.

Can I have different taxes per Stripe customer?

The per-connection settings apply uniformly. For genuinely per-customer tax behaviour, enable Stripe Tax (which lets you configure tax codes per product / per customer) — BeeL. will reflect Stripe's decision.

What about IGIC / IPSI?

If your default tax is IGIC or IPSI, BeeL. uses it in the fallback path. With Stripe Tax enabled, BeeL. uses whatever rate Stripe sends — make sure your Stripe Tax registrations match your invoicing reality.