Title: Completez E-Invoicing for WooCommerce
Author: nicunarcisbodea
Published: <strong>November 13, 2026</strong>
Last modified: November 13, 2026

---

Search plugins

![](https://ps.w.org/completez-e-invoicing-for-woocommerce/assets/banner-772x250.
png?rev=3801077)

![](https://ps.w.org/completez-e-invoicing-for-woocommerce/assets/icon-256x256.png?
rev=3801077)

# Completez E-Invoicing for WooCommerce

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

[Download](https://downloads.wordpress.org/plugin/completez-e-invoicing-for-woocommerce.1.0.0.zip)

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

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

## Description

Your shop receives an order and the invoice appears on its own: numbered from the
company’s series, carrying the order’s VAT, **filed with ANAF through RO e-Factura(
SPV)** and sent to the customer by e-mail. Nothing has to be copied by hand from
one system into another.

**Quick setup.** Paste an API key, choose the order status that triggers issuing,
and that’s it — three steps, no XML to configure and no digital certificate to install.
The settings screen shows you at a glance the company tied to the key, the environment(
test or production), whether the ANAF authorisation is valid, and how many invoices
you have left this month.

The plugin **does not generate invoices itself** and does not talk to ANAF directly.
It sends the order to the invoicing service **facturare.completez.ro**, which assigns
the number from the series, builds the UBL 2.1 XML according to CIUS-RO and files
it with the Romanian tax authority’s SPV. The result: an invoice issued from the
shop looks exactly like one issued from the service, and numbering stays a single
series — not two sources overwriting each other.

RO e-Factura is Romania’s national electronic invoicing system, mandatory for business
transactions. This plugin is the bridge between your WooCommerce shop and that obligation.

_Completez E-Invoicing is an independent product by Completez. It is not affiliated
with, endorsed or sponsored by WooCommerce, Automattic or ANAF (the Romanian tax
administration). WooCommerce is a trademark of Automattic Inc.; RO e-Factura and
SPV are public services of ANAF, named here only to describe what the plugin connects
to._

#### What it does

 * **Quick setup** — the API key, the status that triggers issuing, and the shop
   invoices on its own.
 * **Issues the invoice at the status you choose** — “Completed”, “Processing” or
   any other.
 * **Files the invoice with ANAF (SPV)** and tracks the reply: “accepted” or “rejected”
   land back on the order.
 * **Sends the invoice to the customer** by e-mail, with the PDF attached, and adds
   it under My account  Orders.
 * **Recognises companies** by the tax ID (CUI) from checkout and fills in the rest
   from the ANAF registry.
 * **Takes the order’s VAT line by line**, exactly as WooCommerce calculated it,
   not from today’s settings: an old order is invoiced with the rate it had then.
 * **Shipping and fees** become invoice lines; coupons and discounts are already
   reflected in the line amounts.
 * **Credit notes (storno)** from a single button, or automatically on a full refund(
   off by default).
 * **Each order’s status** is shown in a column in the order list: issued, processing,
   accepted, rejected, error.

#### Don’t lose invoices

Issuing does not happen during checkout. A call that includes filing with ANAF can
take seconds, and ANAF does go down now and then; placed at payment completion, 
it would keep the customer on the processing page and, on a timeout, throw an error
over an order that was already paid.

That is why the order enters the WooCommerce queue (Action Scheduler) and goes out
right after. If issuing fails, the plugin retries on its own, with growing pauses(
2 minutes to 12 hours, six attempts). Errors that a retry cannot fix — an incomplete
address, a wrong key — stop on the first try, with the reason written into the order
note.

The same order never receives two invoices: every request carries a unique identifier(`
wc_order_1024`), and the service returns the invoice already issued instead of making
another.

#### Built for invoices that pass at ANAF

The things that, in practice, decide whether an invoice is accepted or rejected:

 * **The county** is sent in a form ANAF understands. “Bucureşti” written with a
   Turkish cedilla (as it comes from many themes and imports) is not the same as“
   București” with a comma below, and that difference is the difference between 
   a filed invoice and a rejected one.
 * **The Bucharest sector** is derived from the address, because ANAF requires “
   SECTOR 3”, not “București”, as the locality.
 * **Broken text** (the “�” character, from old databases or CSV imports in CP1252)
   is cleaned before sending and flagged in the order note. On a filed invoice, 
   a single wrong letter can only be corrected through a credit note.
 * **Discounts** do not become negative-price lines — UBL does not allow them — 
   but are distributed proportionally across the invoice lines, preserving the total
   and the VAT per rate.
 * **The unit price** is computed so that, multiplied by the quantity, it yields
   exactly the amount the customer paid, with no one-penny drift.
 * **An incomplete address** stops issuing with a message that says what is missing,
   instead of sending an invoice that then gets stuck at filing.

#### What you need

An account on [facturare.completez.ro](https://facturare.completez.ro) with the 
company authorised at ANAF, and an API key with write permission, created under **
Integrations**.

### External services

The plugin sends order data to **facturare.completez.ro**, the service that issues
the invoice and files it with ANAF. Without this service, the plugin has nothing
to do.

What is sent, when an invoice is issued: the customer’s billing data (name or company
name, tax ID if present, address, locality, county, country, e-mail, phone), the
order lines (names, quantities, prices, VAT rates), shipping, fees, currency, payment
method, the order number and date, plus an internal identifier of the order and 
of the customer.

When it is sent: when the invoice is issued (automatically, at the configured status,
or manually from the order), when a filing is retried, on a credit note, and when
fetching the PDF.

The data reaches ANAF as part of the electronic invoice, under the legal reporting
obligation (RO e-Factura).

Service: [facturare.completez.ro](https://facturare.completez.ro) · [API documentation](https://facturare.completez.ro/api-docs)

Terms: [facturare.completez.ro/termeni](https://facturare.completez.ro/termeni) ·
Privacy: [facturare.completez.ro/privacy](https://facturare.completez.ro/privacy)

## Screenshots

[⌊Plugin settings: the state of the link with the service — company, environment,
ANAF authorisation, series and invoices left this month.⌉⌊Plugin settings: the state
of the link with the service — company, environment, ANAF authorisation, series 
and invoices left this month.⌉[

Plugin settings: the state of the link with the service — company, environment, 
ANAF authorisation, series and invoices left this month.

[⌊The getting-started steps, while no key is configured yet.⌉⌊The getting-started
steps, while no key is configured yet.⌉[

The getting-started steps, while no key is configured yet.

[⌊The "e-Factura" column in the order list: each invoice's status, at a glance.⌉⌊
The "e-Factura" column in the order list: each invoice's status, at a glance.⌉[

The “e-Factura” column in the order list: each invoice’s status, at a glance.

[⌊The box on the order: invoice number, ANAF index and the buttons for retry, PDF,
e-mail and credit note.⌉⌊The box on the order: invoice number, ANAF index and the
buttons for retry, PDF, e-mail and credit note.⌉[

The box on the order: invoice number, ANAF index and the buttons for retry, PDF,
e-mail and credit note.

[⌊The order notes, where everything that happened at issuing and filing is written.⌉⌊
The order notes, where everything that happened at issuing and filing is written
.⌉[

The order notes, where everything that happened at issuing and filing is written.

## Installation

 1. Install and activate the plugin. WooCommerce must be active.
 2. Create an API key in the invoicing service, under **Integrations**. Give it **write**
    permission. The key is shown only once, at creation.
 3. In WordPress, go to **WooCommerce  Settings  Integration  Completez E-Invoicing**
    and paste the key. At the top you will see the company tied to it, the environment(
    test or production), the ANAF authorisation status and the available series.
 4. Issue the first invoice **manually**, from the “e-Factura” box on an order, to 
    see the result.
 5. If it looks right, tick **“Issue invoices for new orders”** and choose the order
    status that triggers issuing.

Optionally, so the ANAF status reaches the order instantly: copy the **notifications
URL** from the plugin settings into the API key in the service, and paste here the
secret generated there. Without a webhook, the plugin polls a few times on its own(
at 5 minutes, 30 minutes, 2, 6 and 24 hours).

## FAQ

### Can I test without issuing real invoices?

Yes, in two ways. Tick “Test environment” in the settings, or use a test key created
in the service. Test invoices go to the ANAF test environment, have no fiscal value
and do not count against your monthly plan. A test key stays in test even if the
tick is removed — no combination of settings accidentally reaches the real SPV.

### What happens if the customer does not fill in a tax ID (CUI)?

The invoice is issued to the individual, from the billing address. For companies,
the plugin looks for the CUI in the fields used by Romanian checkout plugins (`_billing_cif`,`
_billing_cui`, `_vat_number` and others); if your shop uses a custom field, you 
set it in the settings.

### An order did not get an invoice. Where do I see why?

In the order notes, where the reason is written, along with whether a retry is coming.
In more detail, under **WooCommerce  Status  Logs**, source `completez-e-invoicing-
for-woocommerce`. The status also shows in the “e-Factura” column in the order list.

### I issued on an order by mistake. What do I do?

“Unlink invoice” from the order box: the order becomes free for a new issue. The
invoice **stays** in the invoicing service — a fiscal document is not deleted remotely,
it is reversed with a credit note.

### Can the shop use a different invoice series?

Yes. The series is chosen in the invoicing service, on the API key (under Integrations):
keep the company’s default series to share numbering with invoices issued manually,
or pick a dedicated series so the shop gets its own number range. No plugin setting
is needed — the key carries the series, and the plugin settings screen shows which
one the shop issues on. Series are created in the service.

### Two shops on the same company?

Yes, but change the “Identifier prefix” on the second one. Without that, order 1024
from both would look like a single one, and the second shop would receive the first
shop’s invoice.

### Does it work with HPOS (High-Performance Order Storage)?

Yes. The plugin reads and writes only through the WooCommerce orders API and declares
compatibility, so it does not block enabling HPOS.

### Is the plugin interface only in Romanian?

Yes. It is built for a Romanian fiscal obligation, with terms that have no useful
equivalent in another language (“SPV”, “stornare”, “CIUS-RO”). This readme is in
English as required by the plugin directory; a Romanian translation can be contributed
separately.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Completez E-Invoicing for WooCommerce” is open source software. The following people
have contributed to this plugin.

Contributors

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

[Translate “Completez E-Invoicing for WooCommerce” into your language.](https://translate.wordpress.org/projects/wp-plugins/completez-e-invoicing-for-woocommerce)

### Interested in development?

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

## Changelog

#### 1.0.0

 * First release.
 * Automatic issuing at the chosen order status, through the WooCommerce queue, 
   with backoff retries.
 * Filing with the SPV and tracking the ANAF reply, through a signed webhook or 
   periodic checks.
 * The invoice PDF kept locally, attached to the chosen WooCommerce e-mails and 
   available in the customer account.
 * A status column in the order list, a box on the order with manual actions, a 
   bulk action for orders left without an invoice.
 * Manual credit notes, or automatic on a full refund.
 * Text cleaning before sending (UTF-8, Romanian comma-below diacritics, control
   characters) and normalising counties to the form ANAF accepts.

## Meta

 *  Version **1.0.0**
 *  Last updated **14 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.0 or higher **
 *  Tested up to **7.1.4**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [anaf](https://wordpress.org/plugins/tags/anaf/)[e-factura](https://wordpress.org/plugins/tags/e-factura/)
   [invoicing](https://wordpress.org/plugins/tags/invoicing/)[romania](https://wordpress.org/plugins/tags/romania/)
 *  [Advanced View](https://wordpress.org/plugins/completez-e-invoicing-for-woocommerce/advanced/)

## Ratings

No reviews have been submitted yet.

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

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

## Contributors

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

## Support

Got something to say? Need help?

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