When you connect Stripe to Facturaz, two systems can end up producing documents for the same payment: Stripe generates its own receipts and invoices, and Facturaz generates the official Veri*Factu invoice. Stripe's documents have no fiscal validity in Spain, so a customer could receive two papers and not know which one counts.
The fix takes about five minutes, and you only do it once on your own Stripe account: mark Stripe's invoices as proforma and let Facturaz issue the official ones.
1. Add a "PROFORMA" prefix to Stripe invoices
In the Stripe Dashboard, open Settings > Billing > Invoice template. In the Prefix field, type PROFORMA- and save. Stripe invoices are then numbered PROFORMA-0001, PROFORMA-0002, making it clear they are not fiscal documents.
2. Add an informational note
In the same Invoice template section, find the Footer or Memo field and add a line such as: "This document is for information only and has no fiscal validity. The official invoice is issued by Facturaz in compliance with Veri*Factu." Save your changes.
3. Turn off Stripe invoice emails
Open Settings > Billing > Emails and disable Email invoices and receipts to customers, so customers only receive the official invoice from Facturaz. If you still want Stripe to send a simple payment confirmation, leave receipts enabled and only disable invoices.
4. Hide invoices in the Customer Portal
If you use the Stripe Customer Portal, open Settings > Billing > Customer portal and turn off Invoice history visibility. Otherwise customers would still see the proforma documents there.
5. Ask for the buyer's NIF on sales over €400
A sale over €400, VAT included, needs a full invoice with the buyer's NIF (Real Decreto 1619/2012, articles 4 and 6.1.d). If the NIF is missing, Facturaz saves the sale as a draft and you add it there. To have these invoices go out on their own, ask for the NIF when your customer pays. Pick how you sell:
I sell with Stripe Checkout or Payment Links
For business buyers, switch on tax ID collection in Stripe. The buyer ticks that they are buying as a business and types their NIF or EU VAT number.
For private buyers and buyers from abroad, add a text custom field with the label NIF / NIE / Pasaporte. Facturaz recognises it by its label.
My webshop takes payments with a Stripe plugin, such as WooCommerce
Add a field called NIF / NIE / Pasaporte to your shop's checkout. Then ask your developer or the Stripe plugin's support to send it to Stripe as metadata named facturazTaxId. WooCommerce explains how in its Stripe guide.
I built my own checkout (developers)
Business buyers: tax_id_collection on the Checkout Session. A tax ID given there always takes priority.
Everyone else: one name, facturazTaxId. In Stripe Checkout, a text custom field with that key, required only above €400:
custom_fields: [{
key: 'facturazTaxId',
label: { type: 'custom', custom: 'NIF / NIE / Pasaporte' },
type: 'text',
optional: !(totalCents > 40000),
}]With your own payment form (Payment Element, or Checkout in elements mode), send it as metadata on the PaymentIntent. For a subscription, put it on the customer or the subscription. A subscription started in Checkout keeps its custom field.
metadata: { facturazTaxId: 'X1234567L' }What Facturaz checks
A Spanish NIF, NIE or CIF must pass its check character and an EU VAT number is checked in VIES. An ID that doesn't pass never reaches an invoice: the sale waits as a draft, its notice shows what the buyer typed and you correct it there. A sale over €400 with no ID at all, such as a card reader payment, waits the same way.
The result
- Customers receive only the official Veri*Factu invoice from Facturaz.
- Stripe's documents are clearly marked PROFORMA for your own records.
- No duplicates and no confusion about which invoice is valid.
One current limitation: with Stripe invoices hidden, customers can no longer view them in the Stripe Customer Portal. This is the cleanest way to avoid duplicates today.