# DataFirefly Factur-X SW — Factura electrónica Shopware 6: guía completa

> Presentación DfFacturX SW genera facturas electrónicas conformes a EN 16931 para Shopware 6.5, 6.6 y 6.7. Cada vez que se crea un documento de factura, el plugin construye un XML…

- Página: <https://www.datafirefly.com/es/documentation/dffacturx-shopware/>
- Idioma: es
- Actualizado el: 2026-08-06
- Otros idiomas: [fr](https://www.datafirefly.com/documentation/dffacturx-shopware/index.md), [en](https://www.datafirefly.com/en/documentation/dffacturx-shopware/index.md), [de](https://www.datafirefly.com/de/documentation/dffacturx-shopware/index.md), [it](https://www.datafirefly.com/it/documentation/dffacturx-shopware/index.md), [pl](https://www.datafirefly.com/pl/documentation/dffacturx-shopware/index.md), [nl](https://www.datafirefly.com/nl/documentation/dffacturx-shopware/index.md), [pt](https://www.datafirefly.com/pt/documentation/dffacturx-shopware/index.md)
- Índice: <https://www.datafirefly.com/es/documentation/llms.txt>

## Presentación

DfFacturX SW genera facturas electrónicas conformes a **EN 16931** para Shopware 6.5, 6.6 y 6.7. Cada vez que se crea un documento de factura, el plugin construye un XML UN/CEFACT CII y, según el perfil elegido, lo incrusta en el PDF de factura (Factur-X / ZUGFeRD) o lo entrega como archivo autónomo (XRechnung 3.0 para el B2G alemán).

- **Factur-X / ZUGFeRD EN 16931** — perfil recomendado para B2B: el PDF que descarga su cliente es la factura electrónica híbrida.
- **Factur-X BASIC** — perfil ligero, para destinatarios que no exigen el conjunto de datos EN 16931 completo.
- **XRechnung 3.0** — XML autónomo en sintaxis CII para facturar a las administraciones alemanas, con Leitweg-ID obligatorio.

## Instalación

1. Copie la carpeta del plugin en `custom/plugins/DfFacturX` (o suba el ZIP desde el admin, Extensiones y Mis extensiones).
2. Ejecute:

```
bin/console plugin:refresh
bin/console plugin:install --activate DfFacturX
bin/console cache:clear
```

La activación instala el conjunto de campos personalizados **Factura electrónica (DfFacturX)** con el campo `df_facturx_buyer_reference` en cliente y pedido. Ahí se introduce el Leitweg-ID (BT-10).

## Configuración

Admin, Extensiones, DfFacturX, Configuración. Todos los ajustes se aplican por canal de venta.

### General

- **Activar la generación** — crea el XML con cada nuevo documento de factura.
- **Perfil** — Factur-X EN 16931, Factur-X BASIC o XRechnung 3.0.
- **Incrustar el XML en el PDF** — para los perfiles Factur-X; el medio del documento se sustituye por el PDF híbrido.
- **Adjuntar el XML a los correos** — añade `factur-x.xml` (o `numero-xrechnung.xml`) a los correos de pedido.
- **Solo B2B** — genera únicamente si el pedido lleva empresa o número de IVA.

### Vendedor

Razón social, calle, código postal, ciudad, país (ISO-2), número de IVA (BT-31), número fiscal (BT-32), correo (BT-34), teléfono y persona de contacto (BG-6). El correo y el contacto son exigidos por XRechnung.

Campos mínimos del vendedor: nombre, calle, código postal, ciudad, país, más el número de IVA _o_ el número fiscal (regla BR-CO-26). Sin ellos, la generación falla con un error explícito en los logs.

### Pago

IBAN y BIC (transferencia SEPA, código 58), texto de condiciones de pago (BT-20) y días de vencimiento (BT-9). Sin IBAN, el medio de pago se declara como código 1 (no definido).

### Gestión del IVA

Para los tipos al 0 %, el modo **Automático** aplica: **K** entrega intracomunitaria (comprador con IVA en otro país UE), **G** exportación fuera de la UE, **Z** en el resto. Puede forzar una categoría fija (Z, E, K, G) y personalizar el motivo de exención (BT-120).

### XRechnung

Nombre técnico del campo personalizado con la referencia del comprador (por defecto `df_facturx_buyer_reference`) y valor de respaldo si no hay campo relleno.

## Leitweg-ID y referencia del comprador (BT-10)

Introduzca el Leitweg-ID una vez en la ficha del cliente (pestaña de campos personalizados): se reutilizará en todas sus facturas. Para un caso puntual, rellénelo directamente en el pedido — el valor del pedido prevalece sobre el del cliente, que prevalece sobre el de respaldo.

Con el perfil XRechnung, si no se encuentra ninguna referencia del comprador, el plugin **se niega a generar** un XML inválido y registra un error. Corrija el dato y relance con `df:facturx:generate --force`.

## Funcionamiento

1. Al crearse el documento de factura (admin, Flow Builder o API), el plugin carga el pedido en su versión de pedido exacta.
2. El XML CII se construye y se guarda en los campos personalizados del documento (`df_facturx_xml`, `df_facturx_profile`, `df_facturx_generated_at`).
3. Con un perfil Factur-X, el XML se incrusta en el PDF mediante actualización incremental: archivo `factur-x.xml` adjunto, metadatos XMP PDF A-3 y esquema de extensión Factur-X. El medio del documento se sustituye in situ.
4. Si la opción está activa, el XML se adjunta a los correos de pedido.

Con Flow Builder, añada la acción de generación de factura a su flujo de pedido: la factura electrónica sigue automáticamente, sin pasos adicionales.

Por diseño, un error de factura electrónica nunca bloquea la creación del documento: el incidente se registra y la factura PDF clásica sigue disponible.

## Modelo contable EN 16931

- **Modelo neto** — los pedidos con IVA incluido se convierten mediante los impuestos calculados de Shopware.
- **Promociones** — convertidas en descuentos a nivel de documento (BG-20), una entrada por tipo de IVA, porque la norma prohíbe las líneas negativas (BR-27).
- **Gastos de envío** — declarados como cargos a nivel de documento (BG-21), una entrada por tipo.
- **RoundingAmount (BT-114)** — absorbe cualquier desviación de redondeo: el GrandTotal del XML es estrictamente igual al total del pedido en Shopware.
- **Pago SEPA** — transferencia código 58 con IBAN/BIC, vencimiento calculado desde la fecha de factura.

## Comando de consola

```
# Regenerar la factura electrónica de la última factura de un pedido
bin/console df:facturx:generate 10042 --force

# Exportar el XML a un archivo (para un validador)
bin/console df:facturx:generate 10042 --output=/tmp/10042.xml

# Forzar un perfil puntualmente (implica la regeneración)
bin/console df:facturx:generate 10042 --profile=xrechnung-30
```

## Lista de comprobación antes de producción

1. Cree pedidos de prueba que cubran sus casos reales: canal con IVA incluido y canal neto, promoción, gastos de envío, venta intracomunitaria con número de IVA, exportación fuera de la UE.
2. Genere la factura de cada uno y exporte el XML con `--output`.
3. Valide: [validador KOSIT](https://github.com/itplr-kosit/validator) para XRechnung, [Mustang](https://www.mustangproject.org) para Factur-X / ZUGFeRD.
4. Abra el PDF híbrido en Adobe Acrobat y compruebe la presencia del adjunto `factur-x.xml`.

## Solución de problemas

- **No se genera ningún XML** — compruebe que el plugin está activo para el canal de venta, que el tipo de documento es _factura_ y que el modo solo B2B no filtra el pedido. Consulte los logs (`var/log`).
- **Error «Missing seller configuration»** — complete la tarjeta Vendedor (campos mínimos indicados arriba).
- **Aviso «PDF embedding skipped»** — la estructura del PDF no permitió la incrustación; el XML sigue disponible como adjunto de correo y por consola. Caso típico: PDF generado por un motor de terceros.
- **XRechnung rechazado** — falta la referencia del comprador: rellene el campo personalizado o el valor de respaldo, y luego `--force`.
- **Regeneración tras cambios de configuración** — los documentos ya procesados no se reprocesan automáticamente; use `df:facturx:generate --force`.

## Limitaciones conocidas y hoja de ruta

- Versión 1.0: solo facturas (código 380). Abonos (381) y facturas rectificativas (384) previstos para la 1.1.
- La conformidad estricta PDF/A-3B depende también de propiedades del PDF de origen producido por el motor dompdf de Shopware (fuentes incrustadas, output intent). Los destinatarios y las herramientas contables explotan el XML incrustado en todos los casos; para una exigencia estricta PDF/A-3B, use el perfil XRechnung o el adjunto XML.
- Una sola línea de IVA por línea de pedido (comportamiento estándar de Shopware).
