Title: FactuHub for WooCommerce
Author: factuhub
Published: <strong>October 8, 2026</strong>
Last modified: October 8, 2026

---

Search plugins

![](https://ps.w.org/factuhub-for-woocommerce/assets/banner-772x250.png?rev=3734061)

![](https://ps.w.org/factuhub-for-woocommerce/assets/icon-256x256.png?rev=3734061)

# FactuHub for WooCommerce

 By [factuhub](https://profiles.wordpress.org/factuhub/)

[Download](https://downloads.wordpress.org/plugin/factuhub-for-woocommerce.0.9.0.zip)

 * [Details](https://wordpress.org/plugins/factuhub-for-woocommerce/#description)
 * [Reviews](https://wordpress.org/plugins/factuhub-for-woocommerce/#reviews)
 *  [Installation](https://wordpress.org/plugins/factuhub-for-woocommerce/#installation)
 * [Development](https://wordpress.org/plugins/factuhub-for-woocommerce/#developers)

 [Support](https://wordpress.org/support/plugin/factuhub-for-woocommerce/)

## Description

FactuHub is a Spanish invoicing service (https://factuhub.com) that sends every 
invoice to the Spanish Tax Agency (AEAT) under the VERI*FACTU system. This plugin
connects your WooCommerce store to your FactuHub account:

 * When an order is paid (or completed, as you choose), FactuHub issues its invoice:
   a full invoice if the customer entered their tax ID (NIF), or a simplified invoice
   if not (up to 3,000 €).
 * When you refund an order, FactuHub issues the corrective invoice and, optionally,
   returns the units to your warehouse.
 * FactuHub emails the invoice to the customer, or the customer downloads it from“
   My account” and from the order page, together with any corrective invoices.
 * VERI*FACTU status on every order: registered with the AEAT, pending, accepted
   with errors or rejected, with a link to check the invoice on the Spanish Tax 
   Agency website (the same address as the QR code on the PDF).
 * WooCommerce customer emails (processing, completed, refunded) include the link
   to the invoice and the AEAT check link. Can be turned off.
 * Catalogue from FactuHub: the items marked “Publish on the web” (simple products
   and products with variants such as size or colour) are created in the store with
   their price, VAT, categories, brands, image and stock. Changes are pulled every
   15 minutes. Three modes: stock only, stock and price, or everything.
 * The plugin never unpublishes a product it did not publish: whatever the store
   already had stays as it was.
 * Each sale can take stock out of a FactuHub warehouse (products are matched by
   SKU = item code).
 * An invoice is never duplicated: each order carries a unique reference and retries
   return the same invoice.
 * Checkout never waits for FactuHub: everything runs in the background and is retried
   automatically if FactuHub does not respond.
 * If the site is copied to another address (staging), the plugin pauses itself 
   so test orders are never invoiced.
 * Optional “sales order” mode: each order appears in FactuHub as soon as it is 
   placed (on hold or processing) and reserves the stock; it is invoiced from the
   order when paid, and cancelled in FactuHub if it is cancelled in the store. The
   store shows the available stock (stock minus what is reserved).
 * Import history: brings the store’s previous orders into FactuHub as historical
   orders (for reference only: no invoice, no stock, no tax effect).
 * Payment gateway fees: when an order paid with Stripe or PayPal is invoiced, FactuHub
   records the fee the gateway kept (or estimates it for Redsys and Bizum with your
   own rate), so you can see what you pay in fees, reconcile the gateway payouts
   with your bank and see your real margin.
 * Product galleries: the additional images of each item are uploaded as the product
   gallery.
 * One-click connection: the “Connect to FactuHub” button links the store to your
   FactuHub account without copying any key.

The plugin interface is in Spanish.

#### Pricing

The plugin is free. You need a FactuHub account with an active plan, and the connection
of each store is activated in FactuHub with a one-time payment (no subscription).
During FactuHub’s free trial (30 days) it works without paying. While a store is
not activated, its orders wait and are invoiced automatically as soon as you activate
it.

### External services

This plugin connects to the FactuHub API (https://app.factuhub.com/api/v1), a paid
invoicing service you must have an account with. It is needed to issue the invoices
and to sync the catalogue; nothing is sent until you connect the store to FactuHub(
with the “Conectar con FactuHub” button or an API key) and enable the plugin.

What is sent, and when:

 * When an order is invoiced or refunded: the order lines (description, quantity,
   price and VAT), shipping and fees, the internal order number and, if the customer
   entered a tax ID (NIF), their name or company, tax ID, billing address, email
   and phone. Without a tax ID, only their email (to send them the invoice).
 * When an order paid through a payment gateway is invoiced (and, if the gateway
   had not stored its fee yet, up to 7 days later): the payment method ID, the gateway’s
   transaction ID (for example the Stripe PaymentIntent or the PayPal order ID),
   the amount charged, and the gateway fee and net amount as stored by the payment
   plugin. When a refund is made through the gateway: the refunded amount and the
   gateway refund ID. No customer data is sent with this information.
 * On every request: the store address (URL), in the X-FactuHub-Tienda-Url header
   and in the User-Agent, to identify the store’s connection.
 * In sales order mode, when an order is placed: the same order data, plus the shipping
   address. If you use “Import history”, the previous orders in the period you choose
   are sent once, with the same data.
 * When you click “Conectar con FactuHub”: your browser goes to FactuHub to approve
   the connection, and the store then exchanges a one-time code for its key.
 * After an invoice is issued, the plugin asks FactuHub a few times for its VERI*
   FACTU status until the AEAT has registered it. No customer data is sent.
 * In direct invoice mode with a warehouse selected: when WooCommerce reduces or
   restores the stock of an order, the store sends FactuHub the order reference (
   store ID and order number), the warehouse and, for each line, the FactuHub item
   ID and quantity. No customer data is sent. FactuHub may also call the store at/
   wp-json/factuhub/v1/aviso with a signed request (no personal data) when stock
   changes, and the store then downloads the available stock of the changed items.
 * The “Check with the Spanish Tax Agency” links shown on the order, in “My account”
   and in the emails point to the AEAT website (https://www2.agenciatributaria.gob.
   es). Nothing is sent to the AEAT by the plugin: the customer’s browser opens 
   that page only if they click the link.
 * If you use “Link products”: when you click “Enviar productos a FactuHub”, the
   store sends FactuHub, in batches, for each product and variation: its WooCommerce
   product ID, the ID and name of its parent product, its name, SKU, EAN, variation
   attributes (for example size or colour), price, VAT, stock, status and image 
   URL. No customer data is sent. FactuHub then calls the store at /wp-json/factuhub/
   v1/aviso with a signed request (no personal data) to tell it that there are SKU
   changes to pick up; the store fetches them from FactuHub, applies them and reports
   back to FactuHub the result of each SKU change (with a readable error message
   when it could not be applied).
 * If you enable the catalogue sync: every 15 minutes the plugin downloads from 
   FactuHub the items, categories, brands, images and stock that changed. No customer
   data is sent. Product images are downloaded from the address FactuHub provides
   for each item (FactuHub’s servers).

FactuHub processes this data as a data processor on behalf of the store.

 * Terms of service: https://app.factuhub.com/terminos-servicio
 * Privacy policy: https://app.factuhub.com/politica-privacidad

## Installation

 1. Install and activate the plugin, then go to WooCommerce › Settings › FactuHub.
 2. Click “Conectar con FactuHub”, sign in to FactuHub and approve the connection. (
    Alternatively, create a key in FactuHub › API with the “Tienda online” template
    and paste it.)
 3. Choose the warehouse, the invoice series and when to invoice, and tick “Facturar
    pedidos”.
 4. In FactuHub › Tienda online, activate the store.

## FAQ

### Do I need a FactuHub account?

Yes. The plugin connects your store to your own FactuHub account, where the invoices
are issued and sent to the Spanish Tax Agency.

### What happens if the store is not activated yet?

Orders are not lost or marked as failed: they wait, an admin notice links to the
activation page, and they are invoiced automatically once the store is activated.

### Can I use it on a staging copy of my store?

Yes. If the site address changes, the plugin pauses and invoices nothing until you
confirm that the new address is the real store.

### Does it work with the block checkout and HPOS?

Yes. The tax ID field works in both the classic and the block checkout, and the 
plugin is compatible with High-Performance Order Storage.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“FactuHub for WooCommerce” is open source software. The following people have contributed
to this plugin.

Contributors

 *   [ factuhub ](https://profiles.wordpress.org/factuhub/)

[Translate “FactuHub for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/factuhub-for-woocommerce)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/factuhub-for-woocommerce/),
check out the [SVN repository](https://plugins.svn.wordpress.org/factuhub-for-woocommerce/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/factuhub-for-woocommerce/)
by [RSS](https://plugins.trac.wordpress.org/log/factuhub-for-woocommerce/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.9.0

 * Arreglo: con WordPress 7.1 las categorías y marcas no se asignaban a los productos(
   get_terms ya no admite meta_key/meta_value: ahora meta_query).
 * Tiendas de demostración de FactuHub: si wp-config.php define FACTUHUB_DEMO_SECRETO,
   FactuHub puede preparar la tienda para una cuenta demo (conexión, usuario gestor
   con contraseña nueva, catálogo desde cero, pago simulado) y reiniciarla al caducar.
   Una tienda normal no tiene estas rutas.

#### 0.8.0

 * Payment gateway fees: the invoice request now includes the gateway, its transaction
   ID and the fee and net amount stored by the payment plugin (Stripe, PayPal). 
   If the fee is not available yet, a background task sends it within 15 minutes(
   for up to 7 days).
 * Refunds made through the payment gateway are sent to FactuHub as a negative gateway
   payment, so payouts can be reconciled.
 * Compatible with older FactuHub versions: if FactuHub does not accept the gateway
   data yet, the invoice is issued without it and the fee is sent later.

#### 0.7.0

 * Products grouped in FactuHub (“Agrupar en FactuHub”) keep using the variable 
   product the store already had: its attributes, variations and SKUs are not changed
   and no duplicate product is created.
 * Stock in real time: when stock moves in FactuHub (point of sale, delivery notes,
   invoices, purchases, adjustments), FactuHub notifies the store and the plugin
   updates only the changed products within seconds. The 15-minute sync remains 
   as a fallback.
 * In direct invoice mode, when WooCommerce reduces the stock of an order the plugin
   reserves those units in FactuHub (so the point of sale and other channels do 
   not count them as available) and releases them if the order is cancelled, fails
   or its payment expires. The invoice consumes the reservation.
 * If the warehouse chosen in the settings no longer exists in FactuHub, the order
   gets a note asking you to choose another one (no retries). A store parent product
   already linked to another FactuHub product is never taken over.
 * Deactivating the plugin also cancels its pending real-time stock updates and 
   reservations.

#### 0.6.0

 * “Link products”: send the store’s products to FactuHub and match them with FactuHub
   items by SKU, EAN or name, from FactuHub. Duplicates and products that exist 
   only in the store are shown and can be resolved there.
 * SKU changes made in FactuHub are applied to WooCommerce within seconds (FactuHub
   notifies the store with a signed request; the plugin also checks every few minutes).
   Errors are reported back to FactuHub in plain language.
 * Products you mark “Do not sync” in FactuHub for this store stop receiving stock
   and price updates. Stock reaches every product FactuHub tracks, also those the
   store sells without FactuHub publishing them.
 * With an old API key, the settings page asks you to press “Conectar con FactuHub”
   again instead of showing a raw error.
 * The store status shown on the Plugins page waits at most 5 seconds for FactuHub
   and does not retry for 5 minutes if it does not answer.
 * In price mode, a linked variation keeps its name, image and parent product and
   only receives the price.
 * The settings page shows whether the store is activated and, during the trial,
   how many days are left.

#### 0.5.0

 * VERI*FACTU status on the order (registered, pending, accepted with errors, rejected,
   cancelled) and a link to check the invoice with the AEAT. Pending invoices are
   checked again automatically.
 * Customers see the invoice and its corrective invoices in “My account” and on 
   the order page, with the AEAT check link, and an “Invoice” button in the orders
   list.
 * WooCommerce customer emails include the invoice link (or where it will be available)
   and the AEAT check link.
 * A registered customer who opens the invoice link while logged out is sent to 
   the login page and back.
 * Changing the API URL deletes the stored key, so it is never sent to another server.
 * “FactuHub” in the WooCommerce menu and a “Settings” link in the plugins list.
 * Uninstalling also removes the sales order mode, history and email settings.
 * If the store already asks for the tax ID with “APG NIF/CIF/NIE” (or another plugin,
   via the factuhub_nif_de_otro_plugin filter), the plugin uses that field instead
   of adding a second one.

#### 0.4.2

 * Las facturas cobran exactamente el total del pedido: se envía el precio con IVA
   de cada línea (requiere FactuHub con pvp_unitario en la API).

#### 0.4.1

 * Text domain changed to “factuhub-for-woocommerce” to match the plugin slug.
 * The “WooCommerce required” notice only shows to users who can manage plugins.

#### 0.4.0

 * “Conectar con FactuHub”: connect the store without copying a key (one-time code
   exchanged server to server).
 * Optional sales order mode: orders reserve stock in FactuHub when placed, are 
   invoiced from the order when paid and cancelled with the store. The store shows
   the available stock.
 * Import history: previous orders as historical orders in FactuHub.
 * Product gallery from FactuHub’s additional images.

#### 0.3.0

 * Each store’s connection is activated in FactuHub (one-time payment). Until then,
   orders wait without being marked as failed, an admin notice links to the activation
   page and, once activated, pending orders are invoiced.
 * Requires WooCommerce (Requires Plugins header) and WordPress 6.5.
 * SSL is always verified when connecting to FactuHub.
 * Deactivating the plugin no longer cancels pending invoice retries.
 * Admin notices only show on WooCommerce screens.
 * Suggested privacy policy text (Settings › Privacy).

#### 0.2.0

 * Catalogue sync from FactuHub (simple and variable products, global attributes,
   categories, brands, images, price with its VAT, and stock), incremental and in
   batches.

#### 0.1.0

 * First version: invoice on payment, corrective invoice on refund, tax ID field
   in the checkout (classic and blocks), PDF on the order and in My account.

## Meta

 *  Version **0.9.0**
 *  Last updated **2 days ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [aeat](https://wordpress.org/plugins/tags/aeat/)[invoices](https://wordpress.org/plugins/tags/invoices/)
   [spain](https://wordpress.org/plugins/tags/spain/)[verifactu](https://wordpress.org/plugins/tags/verifactu/)
   [woocommerce](https://wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://wordpress.org/plugins/factuhub-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/factuhub-for-woocommerce/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/factuhub-for-woocommerce/reviews/)

## Contributors

 *   [ factuhub ](https://profiles.wordpress.org/factuhub/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/factuhub-for-woocommerce/)