Available on the Odoo Apps Store

Modelo 347 Spain

Annual return of operations with third parties: amounts per contact and quarter, checks, partner letters and the AEAT file.

Buy on Odoo Apps Store

€14 one-time, per Odoo version

  • Per contact and per quarter
  • Cash above €6,000
  • Rent and real estate
  • Automatic exclusions with a reason
  • Odoo 17 · 18 · 19 · 20
  • Community (tested)
  • Spain
Modelo 347 return with contacts per quarter and the file ready

Buy with confidence

  • Official Odoo Apps Store checkout

    Payment, invoice and download are handled by Odoo S.A. Refunds follow the store's refund policy.

  • Free fit check before you buy

    Email support@normalane.com with your Odoo version and setup. We tell you honestly whether it fits.

  • Original code, tested

    Written from scratch for this job, with 20 automated tests shipped with the module.

  • Full source code (OPL-1)

    Bug fixes for the Odoo version you bought are free.

Overview

Who it's for · The problem it solves

Who it's for

Spanish companies and self-employed people who invoice in Odoo, and their advisers (gestorías).

The problem it solves

Every January and February someone adds up a year of invoices per customer and supplier, per quarter, and chases contacts to agree the figures. This module does the sums, flags missing or wrong NIFs, writes the letters and creates the file for the AEAT.

Spanish businesses report every customer and supplier with whom they exceeded €3,005.06 in the year on Modelo 347, the declaración anual de operaciones con terceras personas. This module reads your posted invoices in Odoo, adds them up per contact and quarter, flags what needs fixing, writes a letter to each contact and generates the file you upload yourself on the AEAT website (presentación mediante fichero).

What it does

Per contact and per quarter

Sales (key B) and purchases (key A) added up separately, VAT included, credit notes in their own quarter. Contacts that share a NIF are merged. Threshold €3,005.06, editable.

Cash above €6,000

Payments in your cash journals are reported per contact, including cash received this year for invoices of earlier years, on a separate line as the AEAT asks.

Rent and real estate

Rent of business premises is reported apart; as landlord your premises are listed with cadastral reference and address. Sales of real estate subject to VAT get their own boxes.

Automatic exclusions with a reason

Intra-EU operations (Modelo 349), imports and exports of goods and invoices with an income-tax withholding (Modelo 190/180) are left out, with the reason shown for every invoice.

Review and checks

One line per contact with the four quarters and a red, amber or green check: NIF/NIE check character, province, name order, EU VAT numbers, company NIF and phone. The file is not created while an error remains.

Partner letters and AEAT file

Print or email one letter per contact, in the contact's language, and record who agrees. The file uses 500-character records from the AEAT layout for 2025 and later.

Before you start

  • Customer invoices, vendor bills and cash payments for the year should be posted.
  • Your company needs its NIF, a contact person and a 9-digit phone number; the guided setup checks them.
  • Companies that keep their VAT books in the SII do not file Modelo 347. The module warns you if your company is marked as SII.
Step 1

Install

  1. Buy and download the module for your Odoo version on the Odoo Apps Store, or install it from the Apps menu if your database is linked to your store account.
  2. Copy the folder l10n_es_modelo347_boe into your addons path (on Odoo.sh: commit it to your repository) and restart Odoo.
  3. In Apps, click Update Apps List, search for Modelo 347 and install it.
Step 2

Guided setup

  1. Open Invoicing › Configuration › Modelo 347 › Guided setup. It checks your company NIF and contact details, SII and cash-basis VAT (RECC) status and your cash journals.
  2. Check how each of your taxes will be treated; it is recognised from the Spanish chart of accounts. Change a line only if your case is different.
  3. If you rent out business premises, add them under Modelo 347 › Business premises.
Step 3

Daily use

  1. Go to Invoicing › Reporting › Modelo 347, press New, pick the year and press Compute.
  2. Open the contacts marked To check, fix them and press Re-read contact; no need to recompute.
  3. Use Print letters or Email letters, and record whether each contact agrees.
  4. Press Create BOE file, upload it on the AEAT website and press Mark as filed.

Screenshots

All screenshots show fictitious demo data.

FAQ

Does it file the return for me?

No. It generates the file and helps you prepare the return. Signing in to the AEAT electronic office (certificate or Cl@ve, or through your adviser), uploading, fixing anything the AEAT validation reports and keeping the receipt stay with you or your adviser.

Can I file a complementary or substitutive return?

Yes. Normal, complementary and substitutive returns are supported, and keys C to G cover the special cases.

What is not covered?

The insurance operations and customs-deposit flags, the legal representative of minors and check digits of cadastral references (only the format is checked). Key E (public entities) is a manual key only.

In which language are the letters?

Each letter is printed in the contact's language. The module ships in English, Spanish and Catalan.

Is it legal or tax advice?

No. The module follows the record layout published by the AEAT. You or your adviser remain responsible for what is filed.

Does it work on Odoo Online?

No. Odoo Online does not allow third-party modules. Use Odoo.sh or an on-premise installation.

Does it work on Odoo Enterprise?

It is tested and listed on Community. It only depends on Accounting / Invoicing, but we have not tested it on Enterprise, so we do not claim it. Planning to use Enterprise? Email support@normalane.com before you buy.

How do I install it?

Buy it for your Odoo version and download the zip from the store (or later from your orders page). Copy the folder into your addons path, update the apps list and install. On Odoo.sh, commit the folder to your repository. The Install section has every step.

What happens when I upgrade Odoo?

Since Odoo 13 the Odoo Apps Store sells each Odoo version of a module separately, so a new major version means buying the module for that version. Bug-fix updates within your version are free: download the latest zip from your orders page and replace the folder. Email us before a major upgrade and we will share any migration notes.

Does it work with several companies?

Yes. Data is kept per company with Odoo's standard multi-company rules.

How quickly do you answer support?

Email support@normalane.com or use the support button on your Odoo Apps Store orders page. A person reads every message and replies on working days (CET). Bug fixes for the purchased version are free.

Ready to use Modelo 347 Spain?

€14, one-time, per Odoo version. Bought and downloaded on the Odoo Apps Store.

En español

Prepare en Odoo la declaración anual de operaciones con terceras personas (Modelo 347): importes por contacto y trimestre, efectivo por encima de 6.000 €, arrendamientos, comprobaciones de NIF, cartas a cada contacto y el fichero para presentar en la sede de la AEAT.

Leer la guía completa en español

Llegir la guia completa en català

Need help?

Email support@normalane.com with your Odoo version and edition (Community or Enterprise). Bug fixes for the purchased Odoo version are free.

Independent module, not affiliated with or endorsed by the AEAT or Odoo S.A.

More for Spain

Explore Spain

Guest registration (parte de viajeros, RD 933/2021): guest self-check-in, checks before sending, official XML or the SES web service.

€29one-time, per Odoo version
Odoo
17181920

Spanish working-time record (art. 34.9 ET) on Odoo Attendances: monthly signatures, hour alerts, tamper-evident log, inspector link.

€24one-time, per Odoo version
Odoo
17181920

Supplier average payment period (PMP) for the notes to the annual accounts: ICAC 2016 normal and abbreviated methods, Ley 18/2022 figures.

€24one-time, per Odoo version
Odoo
17181920