Modelo 349 & VAT OSS: Cross-Border Invoicing from Spain (2026 Guide)
How to invoice EU clients VAT-free from Spain: ROI registration, VIES validation, Modelo 349 and the One-Stop Shop (OSS). The complete intra-community guide for freelancers, with Frihet's multi-currency engine.
TL;DR: If you invoice EU businesses from Spain, you can do it VAT-free — but only after registering on the ROI, verifying your client in VIES, and filing Modelo 349 each quarter. If you sell to EU consumers (B2C), the rules are different: you need the VAT One-Stop Shop (OSS) once you cross €10,000 in cross-border sales per year.
Key takeaways
- B2B reverse charge: invoice EU business clients VAT-free once you are on the ROI and your client has a valid VIES number. The buyer self-assesses VAT in their country.
- B2C OSS threshold: €10,000 net per year in combined cross-border EU consumer sales (vigente 2026). Below that, you charge Spanish VAT. Above it, you register for OSS and charge the destination country rate.
- Modelo 349 is quarterly by default, and monthly if your intra-EU supplies exceed €50,000 (VAT excluded) in the current quarter or any of the four previous ones (vigente 2026). The annual filing option was abolished in 2020 — there is no longer a €35,000 annual bracket.
- VIES validation is a legal condition, not a nice-to-have. If your client is not in VIES at the time of invoicing, you must charge Spanish VAT — no exceptions.
- You register on the ROI via Modelo 036 (the "alta en el Registro de operadores intracomunitarios" box). There is no separate fee or form.
Contents
If you invoice a client in Germany, France or the Netherlands from Spain, you do not charge them VAT — as long as you have done three things first: registered on the ROI, verified them in VIES, and committed to filing Modelo 349 every quarter. Skip any one of those steps and you are back to charging 21% Spanish VAT, which your EU client cannot deduct and you will have to explain to AEAT.
This guide covers the full intra-community VAT flow for Spanish freelancers and small businesses in 2026: the B2B reverse charge rules, the B2C OSS regime, and how to file Modelo 349 correctly.
Intra-community VAT in plain English: what it means
The EU has a single VAT area, but VAT rates differ by country. To avoid double taxation on cross-border business transactions, the EU uses a system called reverse charge: when you sell a service or good to a VAT-registered business in another EU member state, you issue the invoice with 0% VAT and the buyer declares and pays VAT in their own country, at their own rate.
This only works when two conditions are met:
- You are a registered intra-community operator (ROI) in Spain — meaning AEAT has issued you a Spanish VAT ID (
ESxxxxxxxx). - Your client is VAT-registered in their country — meaning they appear in VIES with a valid status.
When both conditions hold, no Spanish VAT applies: intra-community supplies of goods are exempt under Article 25 of the Spanish VAT Law (Ley 37/1992), and B2B services fall outside Spanish VAT under the place-of-supply rules (Articles 69–70 LIVA, mirroring Article 44 of EU VAT Directive 2006/112/EC). One condition is substantive since March 2020: the exemption only holds if you actually report the operation on Modelo 349. You write Operación intracomunitaria exenta / Intra-community supply — reverse charge applies on the invoice, and you declare it on Modelo 349.
B2B vs B2C matters. Reverse charge is for B2B (business to business). If your client is a private individual without a VAT number, a different set of rules applies: the OSS regime. More on that in section 5.
Registering for the ROI (intra-community operator registry) in Spain
The ROI is not a separate registry — it is a flag within your existing AEAT registration. You activate it through Modelo 036 (the Spanish business registration/modification form), by checking the alta en el Registro de operadores intracomunitarios box (consult the current Modelo 036 on the AEAT Sede for the exact page, as the layout changes between form versions).
You can file Modelo 036 online through the AEAT Sede Electrónica with a digital certificate or Cl@ve. There is no fee.
Once AEAT processes your application, they assign you a Spanish intra-community VAT number in the format ES + your NIF (for example, ES54052380B for an individual, or ESB12345678 for a company). This number goes on every intra-community invoice you issue.
How long does it take? AEAT typically processes ROI registrations within a few business days to a few weeks depending on the period. Check the current processing timeline at agenciatributaria.gob.es before planning your first EU invoice — do not issue a VAT-free invoice before you have a confirmed ROI number.
| What you need for ROI | How to do it |
|---|---|
| Existing alta en Hacienda (Modelo 036/037 already filed) | Prerequisite |
| Modelo 036 with the ROI registration box checked | File online via Sede Electrónica |
| Digital certificate or Cl@ve | For online filing |
| Wait for AEAT confirmation | Check your electronic address (DEHú) |
Once you have your Spanish VAT ID, you can check whether it appears in VIES at ec.europa.eu/taxation_customs/vies. Both yours and your client’s ID should show as “valid.”
Validating your EU client in VIES before you invoice
VIES (VAT Information Exchange System) is the European Commission’s official tool to verify whether a VAT number is valid and active in its member state. It is not a directory — it is a live query against each country’s VAT registry.
Why this matters: Reverse charge is only valid when your client is VAT-registered. If you issue a 0% VAT invoice to a client whose number is not in VIES at the time of invoicing, AEAT can reclassify the supply as a domestic sale and require you to pay 21% Spanish VAT — out of your own pocket if you have already invoiced without it.
How to validate:
- Go to ec.europa.eu/taxation_customs/vies.
- Enter the client’s country and VAT number.
- Get a “valid” or “invalid” response.
- Save proof. Print the result or export the confirmation. AEAT inspections have requested this documentation in reverse charge audits.
If the number is temporarily unavailable in VIES (some countries’ registries go offline), do not invoice VAT-free until you get a valid response. An invalid or unconfirmed status is not a technicality — it is the legal foundation of the exemption.
Common mistake: Your client gives you their company registration number instead of their VAT number. In Spain, these are often the same (NIF = CIF for companies), but in Germany (Umsatzsteuer-Identifikationsnummer) or France (numéro de TVA intracommunautaire), they differ. Always ask for the VAT number specifically, not the company number.
Reverse charge: invoicing EU businesses VAT-free
Once you are on the ROI and your client is validated in VIES, the invoice itself is straightforward.
What goes on a reverse-charge invoice:
- Your company name and address
- Your Spanish VAT number (ES + NIF)
- Your client’s company name, address, and EU VAT number
- Invoice date and a unique, sequential invoice number
- Description of the service or goods
- Net amount (base imponible) in any currency
- VAT rate: 0% (or leave blank and state the reason)
- A reference to the reverse charge rule. For services:
VAT — reverse charge (Articles 44 and 196, EU VAT Directive 2006/112/EC). For goods:Exempt intra-community supply (Article 138, EU VAT Directive / Article 25 Ley 37/1992)
You do not collect VAT. The buyer self-assesses VAT in their country.
Currency. You can issue the invoice in EUR, GBP, USD or any other currency. For Modelo 349, the amounts must be reported in EUR, converted at the official rate on the date the VAT becomes chargeable. If you bill in several currencies, invoicing in a tool that keeps each currency at its correct decimal precision removes one source of the conversion errors AEAT cross-checks.
We covered the mechanics of invoicing across currencies from Spain separately.
Selling to EU consumers: when you need VAT OSS
Reverse charge is a B2B mechanism. If you sell digital services, goods or anything else directly to private individuals (consumers) in other EU member states, different rules apply.
The EU reformed its B2C VAT rules in July 2021. The core principle: VAT is owed in the country of the consumer, not the seller. The threshold that triggers this obligation is €10,000 net per calendar year in combined cross-border B2C sales to EU consumers (vigente 2026).
| Annual cross-border B2C sales (net, all EU combined) | What you do |
|---|---|
| Below €10,000 | Charge Spanish VAT (21%/10%/4% depending on product). File normally via Modelo 303. |
| €10,000 or above | Register for VAT OSS. Charge each consumer the VAT rate of their country. File a single quarterly OSS return via AEAT. |
What is the VAT OSS?
The One-Stop Shop (OSS) is an EU mechanism that lets you file and pay VAT for cross-border B2C sales across all EU member states through a single quarterly return filed with AEAT. Without OSS, you would need to register for VAT in every EU country where you have consumer sales — a compliance nightmare for a solo freelancer or small team.
To register for OSS in Spain:
- File the OSS adhesion declaration (Modelo 035) via the AEAT Sede Electrónica, opting into the Union scheme.
- As a general rule registration takes effect from the first day of the quarter after you apply (it can be earlier if you register before your first qualifying sale and notify AEAT in time).
- File the quarterly OSS VAT return (Modelo 369) by the last day of the month following each calendar quarter — 30 April, 31 July, 31 October and 31 January (vigente 2026). The deadline does not move if it lands on a weekend or holiday.
- Pay the total VAT collected (at destination-country rates) to AEAT, which distributes it to the relevant member states.
The OSS covers cross-border B2C supplies of services (digital, telecom, broadcasting and others) and goods shipped to EU consumers from Spain. If you run an ecommerce store shipping across the EU, OSS is almost certainly relevant to you. Check the current scope and forms at agenciatributaria.gob.es before you register.
OSS ≠ Modelo 349. Modelo 349 covers intra-community B2B supplies. OSS covers cross-border B2C supplies. If you have both types of clients, you will file both — plus Modelo 303 for all domestic activity.
Filing Modelo 349 (and how it ties to Modelo 303)
Modelo 349 is an information return — it declares your intra-community transactions to AEAT, but it does not generate a tax payment. It tells AEAT who your EU B2B clients and suppliers are, so they can cross-check against their counterpart filings in other member states. A mismatch generates an automatic query.
Who files it
Any Spanish autónomo or company that has made or received intra-community supplies in the period. If you had zero intra-community activity, you do not file.
Filing frequency (vigente 2026)
The annual filing option was abolished in 2020 — Modelo 349 is now only quarterly or monthly. The trigger is your intra-community supplies (goods + services you sell, VAT excluded — acquisitions don’t count), measured across the current quarter and the four previous ones.
| Your intra-community supplies (VAT excluded) | Filing frequency |
|---|---|
| Do not exceed €50,000 in the current quarter or any of the four previous ones | Quarterly |
| Exceed €50,000 at the end of any month | Monthly (you switch from that month, no request needed) |
Most freelancers stay in the quarterly bracket. The frequency is determined automatically, operation by operation — once you cross €50,000 in a month, you file monthly for that month onward. The quarterly deadlines mirror those of Modelo 303:
| Quarter | Period | Filing deadline |
|---|---|---|
| Q1 | January – March | 1–20 April |
| Q2 | April – June | 1–20 July |
| Q3 | July – September | 1–20 October |
| Q4 | October – December | 1–30 January |
What goes in Modelo 349
For each intra-community counterpart, you declare:
- Their country code and EU VAT number
- The total net amount of supplies to them (or acquisitions from them) during the period
- The type of operation code (E = supply of services, A = acquisition of services, S = triangular operation, etc.)
You do not need to list individual invoices — only totals per counterpart.
How it ties to Modelo 303
Modelo 303 has an informational box for intra-community supplies: box 59 covers your exempt intra-community supplies of both goods and services (base only, no VAT). The total you put in box 59 should reconcile with what you declare in Modelo 349. AEAT cross-references both automatically.
If you sell both domestically and to EU clients, your 303 will show the EU sales as exempt (no VAT charged) in the appropriate boxes, while still accumulating deductible input VAT from your business expenses. This is how you continue to recover VAT on your Spanish costs even when your revenue is partly exempt from charging it.
For a full walkthrough of Modelo 303 step by step, that guide covers the complete domestic VAT return in detail.
Multi-currency + Peppol + 349 in one flow with Frihet
Cross-border invoicing adds layers of complexity that compound quickly: currency conversion, VIES verification, correct invoice wording, quarterly Modelo 349 data extraction, and OSS tracking if you have consumer clients. Each one is manageable in isolation. Together they create the kind of overhead that makes people go back to Excel and postpone dealing with it.
Frihet’s fiscal engine handles the parts it can:
Multi-currency invoicing. Issue invoices in 170+ currencies across 71 countries, each with the correct decimal precision (yen has none, dinars have three). The EUR figure you report on Modelo 349 stays yours to confirm — Frihet does not silently overwrite it with its own rate. More on how invoicing across currencies from Spain works in practice.
Modelo 349 preview. Frihet generates a Modelo 349 preview from your intra-community invoices — counterparts, VAT numbers and amounts by operation type, pulled automatically. You review it and use it to complete the filing on the AEAT Sede Electrónica. Frihet does not submit Modelo 349 to AEAT for you.
Structured e-invoice export. If your EU client requires structured electronic invoices (increasingly common in B2G and large B2B procurement in Germany, France, and the Netherlands), Frihet generates the XML — Peppol BIS 3.0, XRechnung, Factur-X, UBL, CII and Facturae — from the export dialog, optionally XAdES-signed. For Spanish B2G, Frihet also submits Facturae to the FACe portal. Transmission over the Peppol network itself is on the roadmap, not live yet — for now you download the XML and route it through your client’s channel.
Fiscal calendar alerts. Modelo 349 deadlines are built into the tax calendar. You get a reminder before each Q deadline — the same cadence as your 303 — so the filing does not slip through while you are focused on actual work.
What Frihet does not do (honest disclosure): VIES validation is not currently automated inside the product — you run the check manually at ec.europa.eu/taxation_customs/vies and keep the screenshot. OSS filing is on the roadmap. For quarterly tax estimation as a freelancer, the dashboard gives you a real-time read on where you stand.
The intra-community rules are not complicated once you understand the two-track structure — B2B reverse charge and B2C OSS — and the administrative steps that enable each one. The friction is mostly upfront: the ROI registration and the VIES habit. After that, Modelo 349 is a quarterly extraction of data you already have.
If you are about to send your first invoice to an EU client, the checklist is short: ROI active, client in VIES, 0% on the invoice, calendar alert set for the next 349 deadline.
Frequently asked questions
What is Modelo 349 and who has to file it?
Modelo 349 is the Spanish intra-community operations return. Any Spanish self-employed person (autónomo) or company that sells goods or services to VAT-registered businesses in other EU member states must file it. The filing period is quarterly for most filers and monthly once your intra-EU supplies exceed €50,000 (VAT excluded) in the current quarter or any of the four previous ones (vigente 2026). The annual filing option was abolished in 2020. It declares the total value of intra-community supplies and acquisitions by counterpart, broken down by EU country.
What is the difference between reverse charge and OSS?
Reverse charge applies to B2B sales: you invoice an EU business client with 0% VAT, and they declare and pay VAT in their own country. OSS (One-Stop Shop) applies to B2C sales: you sell to EU consumers and, once you exceed the €10,000 threshold, you charge the VAT rate of the buyer’s country and remit it through a single quarterly OSS return filed with AEAT on behalf of all EU member states.
Do I need to register for the ROI before my first EU invoice?
Yes. You must be on the ROI before issuing a VAT-free intra-community invoice. Register by submitting Modelo 036 and checking the ROI registration box. AEAT assigns you a Spanish VAT ID in the format ES + your NIF. Processing typically takes a few days to a few weeks; check agenciatributaria.gob.es for current timelines.
What happens if my EU client is not in VIES?
If a client’s VAT number does not appear as valid in VIES at the time you invoice, you must charge Spanish VAT (21% standard rate). You cannot apply reverse charge to an unverified client. Always screenshot or export your VIES check — AEAT may ask for proof.
Does Modelo 349 replace Modelo 303?
No. They serve different purposes and both must be filed. Modelo 303 is your quarterly VAT return for all domestic and deductible VAT. Modelo 349 is purely an information return listing your intra-community counterparts — it does not generate a tax payment itself, but AEAT cross-references it against your 303 and against the filings of your EU clients.
Can I invoice EU clients in currencies other than EUR?
Yes. Intra-community invoices can be issued in any currency. For Modelo 349, the base amounts must be reported in EUR, converted at the official exchange rate on the date each VAT becomes chargeable. Frihet lets you invoice in 170+ currencies with correct per-currency decimal precision; the EUR figure you report stays your (or your accountant’s) call, so always check it against the rate on record.
Was this article helpful?
FAQ
What is Modelo 349 and who has to file it?
Modelo 349 is the Spanish intra-community operations return. Any Spanish self-employed person (autónomo) or company that sells goods or services to VAT-registered businesses in other EU member states must file it. The filing period is quarterly for most filers and monthly once your intra-EU supplies exceed €50,000 (VAT excluded) in the current quarter or any of the four previous ones (vigente 2026). The annual filing option was abolished in 2020. It declares the total value of intra-community supplies and acquisitions by counterpart, broken down by EU country.
What is the difference between reverse charge and OSS?
Reverse charge applies to B2B sales: you invoice an EU business client with 0% VAT, and they declare and pay VAT in their own country. OSS (One-Stop Shop) applies to B2C sales: you sell to EU consumers and, once you exceed the €10,000 threshold, you charge the VAT rate of the buyer's country and remit it through a single quarterly OSS return (Modelo 369) filed with AEAT, which forwards the VAT to each member state.
Do I need to register for the ROI before my first EU invoice?
Yes. You must be on the ROI (Registro de Operadores Intracomunitarios) before issuing a VAT-free intra-community invoice. Register by submitting Modelo 036 and checking the ROI registration box. AEAT assigns you a Spanish VAT ID in the format ES + your NIF. Processing typically takes a few days to a few weeks; check agenciatributaria.gob.es for current timelines.
What happens if my EU client is not in VIES?
If a client's VAT number does not appear as valid in VIES at the time you invoice, you must charge Spanish VAT (21% standard rate). You cannot apply reverse charge to an unverified client. Always screenshot or export your VIES check — AEAT may ask for proof.
Does Modelo 349 replace Modelo 303?
No. They serve different purposes and both must be filed. Modelo 303 is your quarterly VAT return for all domestic and deductible VAT. Modelo 349 is purely an information return listing your intra-community counterparts — it does not generate a tax payment itself, but AEAT cross-references it against your 303 and against the filings of your EU clients.
Can I invoice EU clients in currencies other than EUR?
Yes. Intra-community invoices can be issued in any currency. For Modelo 349, the base amounts must be reported in EUR, converted at the official exchange rate on the date each VAT becomes chargeable. Frihet lets you invoice in 170+ currencies with correct per-currency decimal precision; the EUR figure you report stays your (or your accountant's) call, so always check it against the rate on record.