Title: FGSync for Oblio
Author: Eduard Doloc
Published: <strong>Îlon 25, 2026</strong>
Last modified: Cotmeh 9, 2026

---

Search plugins

![](https://ps.w.org/fgsync-oblio/assets/banner-772x250.jpg?rev=3737232)

![](https://ps.w.org/fgsync-oblio/assets/icon-256x256.jpg?rev=3737232)

# FGSync for Oblio

 By [Eduard Doloc](https://profiles.wordpress.org/rwky/)

[Download](https://downloads.wordpress.org/plugin/fgsync-oblio.1.4.1.zip)

[Live Preview](https://kmr.wordpress.org/plugins/fgsync-oblio/?preview=1)

 * [Details](https://kmr.wordpress.org/plugins/fgsync-oblio/#description)
 * [Reviews](https://kmr.wordpress.org/plugins/fgsync-oblio/#reviews)
 *  [Installation](https://kmr.wordpress.org/plugins/fgsync-oblio/#installation)
 * [Development](https://kmr.wordpress.org/plugins/fgsync-oblio/#developers)

 [Support](https://wordpress.org/support/plugin/fgsync-oblio/)

## Description

FGSync for Oblio is an independent open-source integration between WooCommerce and
the Oblio.eu invoicing service. It is not developed, endorsed, maintained, or supported
by Oblio.eu; Oblio is a third-party service, and an active Oblio account is required.

**Documents**

 * Issue invoices, proformas, delivery notes and credit notes (storno), automatically
   or manually from the order screen.
 * Proforma to invoice rule: a proforma is transformed into an invoice or deleted;
   a proforma is never issued after an invoice, nor for an order already paid online,
   since a proforma is a request for payment.
 * When an order already has a delivery note, its invoice is issued based on it 
   in Oblio, so stock is taken out only once.
 * Automatic credit note on WooCommerce refunds (partial and full). Refunds made
   before the invoice is issued are taken off the invoice instead, and an order 
   refunded in full before invoicing gets no invoice.
 * Experimental bridge to the WooCommerce Returns feature, off by default and available
   only when your WooCommerce version has that feature.
 * Customers find their invoices and credit notes in a “Facturi” section of their
   WooCommerce account.
 * Document options: series, document date (issue day or order day), work point,
   warehouse, unit of measure, due date, notes, “issued by” and delegate, document
   language and product type.
 * Per product and per variation: Oblio product type and units per package (decimals
   allowed, for example 2.5 m² per box). Virtual products (for example digital goods)
   can get their own default type, such as “Serviciu”.
 * Works with Oblio accounts without warehouses, for example shops selling only 
   digital products: the stock options are switched off and invoices are issued 
   without stock deduction.
 * Sale discounts are invoiced as the customer saw them at checkout, even if prices
   change later.
 * Optional: fill in company details from Oblio by CIF.

**VAT**

 * Each line is sent with the exact VAT category from your Oblio account, matched
   by rate (including rates like 25.5% or 5.5%), using the rate recorded on the 
   order.
 * A “TVA” tab lists the WooCommerce rates your Oblio account has no category for,
   with the name to give each one in Oblio, so a missing rate is caught before an
   invoice fails.
 * Choose which 0% category is used for lines without VAT (SDD, SFDD, Scutita, Taxare
   inversa, etc.).
 * Optional one-click import of the standard VAT rates for all 27 EU countries into
   WooCommerce, refreshed with plugin updates.
 * Company and individual customers (CUI, CNP, registration number, bank, IBAN) 
   from the free “Facturare – Persoana Fizica sau Juridica” plugin, on classic and
   block checkout.

**Performance**

 * Queued processing (Action Scheduler) so issuing never blocks checkout or status
   changes.
 * Automatic retries with backoff, plus a reconciliation job for missed invoices.
 * Stock synced in batches, across one or more warehouses (locations), matching 
   the WooCommerce SKU with the Oblio product code.
 * Optional price update from Oblio during stock sync, keeping your sale prices.
 * Optional stock reservation for orders not yet invoiced, so the store doesn’t 
   oversell.
 * Bulk actions (invoice/proforma/storno for multiple orders at once) are queued
   per order, not run one after another in the same admin request.
 * Settings and warehouse/series lists are read from a short-lived cache, refreshed
   on demand, instead of calling Oblio on every page load.

**Collection and notifications**

 * Automatic “mark as paid”, configurable per payment method, with exceptions.
 * Invoices issued the moment the order reaches a status, or on a schedule (batch),
   your choice, and optionally as soon as an online payment is confirmed.
 * Customer notifications two ways: a standalone email from the plugin, or a button
   linking to the invoice inside WooCommerce’s own order emails.

**Orders screen**

 * Oblio status column on the orders list, with an error badge and the reason when
   issuing failed.
 * Filter the orders list by Oblio document (none, proforma, invoice, delivery note,
   credit note, failed).
 * Issue, view or delete documents from the order screen; the delete button only
   shows when Oblio allows it (the last document in its series).

**Status and security**

 * The API key is stored encrypted (AES-256-GCM).
 * A “Stare” tab with today’s log (with live updates), the processing queue, update
   status, any plugin hooks overridden by other code, and a one-click diagnostics
   report for support that never includes the API key or personal data.
 * A connection dot in the admin toolbar, and suggested text for your site’s privacy
   policy.

**Compatibility**

 * Works with both High-Performance Order Storage (HPOS) and the classic order storage.
 * Compatible with WPML / WooCommerce Multilingual (invoice language and currency
   from the order).
 * WooCommerce Product Bundles: the components are invoiced and take the stock, 
   and a fixed bundle price is split across them.
 * Logs through WooCommerce (WooCommerce, Status, Logs) and a dedicated status panel.
 * One-click import from the old “WooCommerce Oblio” plugin.

**Extensibility**

 * Filters and actions for cases the settings screen doesn’t cover: adjusting a 
   stock quantity or price before it’s written, overriding a document’s currency
   or language per order, and changing the invoice email button’s behavior.

This plugin uses the Oblio.eu API. You need an Oblio account and an API secret.

Project page, with features and a comparison with the old plugin: https://rwkyyy.
github.io/fgsync-oblio/
 Source code and issue tracker: https://github.com/rwkyyy/
fgsync-oblio Try it in your browser in WordPress Playground: https://playground.
wordpress.net/?blueprint-url=https://rwkyyy.github.io/fgsync-oblio/blueprint.json

### External services

This plugin connects to the Oblio.eu invoicing service (https://www.oblio.eu) through
its API (https://www.oblio.eu/api) to create and manage your accounting documents.
Sending data to Oblio is the core purpose of the plugin and happens only for the
actions you enable.

When data is sent:

 * When a document is issued (invoice, proforma, delivery note, or credit note),
   automatically on the order status you choose or manually from the order screen.
 * When an order is marked as paid (“collection”), if you enable it.
 * When stock is synchronised from Oblio, on the schedule you set or on demand.
 * When you test the connection or import settings from the connection screen.

What is sent for a document: your company identifier (CIF), the customer’s billing
details (name, company, address, tax/registration identifiers, email and phone when
present), the order lines (product name, code/SKU, quantity, price, VAT), shipping
and fees, totals, and the payment method. Authentication uses your Oblio account
email and API secret. No data is sent to any party other than Oblio.

Oblio service: https://www.oblio.eu
 Oblio Terms and Conditions: https://www.oblio.
eu/terms Oblio confidentiality/privacy policy: it is part of the Terms and Conditions
above (the “notă de confidențialitate”); the current version is published on https://
www.oblio.eu

Please review those documents before use. Sending customer and order data to Oblio
is subject to your agreement with Oblio and your own privacy obligations.

### Upgrading from a pre-1.1.0 beta

If you installed an earlier `oblio-fgwoo` beta build directly (not through this 
wp.org listing), note before updating:

 * This release ships under a new plugin slug/folder (`fgsync-oblio`) and main file(`
   fgsync-oblio.php`). WordPress treats it as a different plugin, not an in-place
   update of the old folder.
 * Deactivate and delete the old `oblio-fgwoo` (or similarly named) plugin folder
   first, then install this one. Your settings, order metadata, product fields, 
   and issued-document history are preserved: they are all stored under the `oblio_fgwoo_`
   option/meta prefix, which this release deliberately did not rename.
 * Any Action Scheduler job (document issue, refund/storno, stock sync, reconciliation)
   still queued or in-flight at the exact moment of the swap may need to be re-triggered
   manually (e.g. via “Sync now” or by re-saving the order), since the old plugin’s
   runtime is gone when its folder is removed. Nothing already completed (issued
   invoices, stored settings) is lost.
 * Any custom code hooking the plugin’s filters/actions (e.g. `oblio_fgwoo_email_button_issue`)
   keeps working unchanged, since those hook names were intentionally not renamed.

## Screenshots

[⌊Conectare: connect your Oblio account with its email and API secret, then load
your company, series and warehouses with "Preia ultimele date".⌉⌊Conectare: connect
your Oblio account with its email and API secret, then load your company, series
and warehouses with "Preia ultimele date".⌉[

Conectare: connect your Oblio account with its email and API secret, then load your
company, series and warehouses with “Preia ultimele date”.

[⌊Documente: series for invoices, proformas and delivery notes, document date, work
point and warehouse. On an account without warehouses, the stock options are switched
off with an explanation.⌉⌊Documente: series for invoices, proformas and delivery
notes, document date, work point and warehouse. On an account without warehouses,
the stock options are switched off with an explanation.⌉[

Documente: series for invoices, proformas and delivery notes, document date, work
point and warehouse. On an account without warehouses, the stock options are switched
off with an explanation.

[⌊TVA: the WooCommerce VAT rates that have no category in your Oblio account, with
the name to give each one, and the 0% category for lines without VAT.⌉⌊TVA: the 
WooCommerce VAT rates that have no category in your Oblio account, with the name
to give each one, and the 0% category for lines without VAT.⌉[

TVA: the WooCommerce VAT rates that have no category in your Oblio account, with
the name to give each one, and the 0% category for lines without VAT.

[⌊Încasare: mark invoices as paid in Oblio by payment method.⌉⌊Încasare: mark invoices
as paid in Oblio by payment method.⌉[

Încasare: mark invoices as paid in Oblio by payment method.

[⌊Sincronizare: stock (and optionally price) sync from Oblio, warehouses, and stock
reservation for orders not yet invoiced.⌉⌊Sincronizare: stock (and optionally price)
sync from Oblio, warehouses, and stock reservation for orders not yet invoiced.⌉[

Sincronizare: stock (and optionally price) sync from Oblio, warehouses, and stock
reservation for orders not yet invoiced.

[⌊Email: send the invoice to the customer in a separate email, or as a button in
WooCommerce's own order email.⌉⌊Email: send the invoice to the customer in a separate
email, or as a button in WooCommerce's own order email.⌉[

Email: send the invoice to the customer in a separate email, or as a button in WooCommerce’s
own order email.

[⌊Avansat: document language, Oblio product type (with a separate type for virtual
products), notes, "issued by" and delegate.⌉⌊Avansat: document language, Oblio product
type (with a separate type for virtual products), notes, "issued by" and delegate
.⌉[

Avansat: document language, Oblio product type (with a separate type for virtual
products), notes, “issued by” and delegate.

[⌊Stare: connection, today's documents, queue and stock sync status, the live activity
log, update status, overridden hooks and the diagnostics report.⌉⌊Stare: connection,
today's documents, queue and stock sync status, the live activity log, update status,
overridden hooks and the diagnostics report.⌉[

Stare: connection, today’s documents, queue and stock sync status, the live activity
log, update status, overridden hooks and the diagnostics report.

## Installation

 1. Upload the plugin folder to `/wp-content/plugins/`.
 2. Activate the plugin through the Plugins menu.
 3. Open the FGSync settings (top-level “FGSync” menu), enter your Oblio account email
    and API secret, then press “Preia ultimele date” to connect and load your company,
    series and warehouses.

## FAQ

### Is this plugin made or supported by Oblio?

No. FGSync for Oblio is an independent, community-built open-source integration.
It is not developed, endorsed, maintained, or supported by Oblio.eu. Oblio is a 
third-party invoicing service accessed through its public API; an active Oblio account
is required to use this plugin.

### What support is available?

Support is community/best-effort, through the WordPress.org support forum or the
plugin’s public issue tracker (https://github.com/rwkyyy/fgsync-oblio/issues). There
is no guaranteed response time or SLA.

### Is it compatible with HPOS?

Yes, with both HPOS and the classic order storage.

### How are updates delivered?

Through WordPress.org, like any plugin. There is no custom updater.

### How do I migrate from the old plugin?

The “Conectare” tab has an “Importă setările” button that copies the old plugin’s
settings. Documents already issued are shown automatically.

### When are invoices issued?

Three modes, under Documente. “Prin coadă” (the default) queues the invoice the 
moment the order enters one of the selected statuses; it’s issued within seconds,
without ever slowing down that request. “Instant” issues it synchronously, in the
same request that changed the order’s status (checkout, a manual status edit, a 
payment gateway callback), useful if you need the invoice to exist the instant the
status changes, at the cost of adding a few seconds to that request; if the attempt
fails for any reason, it automatically falls back to the queue, so nothing is lost.“
Programat” issues invoices periodically at the interval you choose, useful when 
invoicing happens later, e.g. on delivery. Optionally, “Emite și la confirmarea 
plății” also issues the invoice as soon as an online payment (card, PayPal, etc.)
is confirmed, even if the order hasn’t reached one of the selected statuses yet;
it works in the queued and instant modes, like the old plugin’s automatic invoicing.
In all three modes a reconciliation scan re-checks recent orders (the last 7 days
by default, adjustable with a filter) and re-queues any invoice a missed hook or
a brief Oblio outage skipped.

### My order shows a red “!”. What does that mean?

The plugin tried to issue that order’s invoice and it failed; hover the badge on
the orders list (or open the order) to see the stored reason. Recoverable failures
are retried automatically through the reconciliation scan and Action Scheduler’s
own backoff. If the reason points to something on the Oblio side (for example, insufficient
stock in the linked gestiune), fix it there, then re-issue manually from the order
screen.

### Why can’t I delete an older invoice?

Oblio only allows deleting the last document issued in a series. If a newer invoice
already exists in the same series, the delete button is hidden for the older one;
issue a storno (credit note) instead to reverse it. Proformas are the exception:
they can always be deleted, since Oblio treats them separately from the numbered
invoice series.

### What happens to a refund made before the invoice is issued?

It is taken off the invoice: refunded quantities and amounts are left out, and a
refund by amount only shows as a discount line. That refund gets no separate credit
note. An order refunded in full before invoicing gets no invoice. If the invoice
is built on a delivery note or proforma issued before the refund, it keeps that 
document’s values and the refund gets a credit note as usual.

### How are WooCommerce Product Bundles invoiced?

Under Avansat, “Produse pachet (Bundles)” controls this. The default, “AUTOMAT”,
invoices the bundle’s individual components, not the bundle product itself, because
the bundle product usually has no stock record of its own in Oblio, and deducting
stock against it fails. If the bundle has its own price (a fixed-price or promotional
bundle, with the components at 0), that price is split across the components, weighted
by their regular prices, so the invoice total matches the order and stock still 
comes off the real products. Partial refunds of such a bundle are credited on the
same components, in the same proportions. If your store doesn’t deduct stock through
Oblio, “INCLUDE linia pachetului” is worth trying instead: it shows the bundle as
a single line with its own name and price, which often reads more clearly on the
invoice.

### Which VAT categories do I need in Oblio?

One per VAT rate your shop uses, under Oblio  Setări  Cote TVA. The plugin matches
them by percentage, not by country or name, and the TVA tab lists any rate that 
has no category yet, with the recommended name (the rate itself, for example “25.5”).
After adding one, press “Preia ultimele date” on the Conectare tab.

### What happens when a VAT rate changes?

Oblio does not allow editing a VAT category once an invoice uses it, so add a new
category for the new rate (for example “21” next to “19”) and keep the old one. 
Update the rate in WooCommerce  Setări  Taxe, by hand or with the EU import button.
New orders then use the new category; invoices already issued keep their original
rate, and documents for orders placed before the change still use the old category.
Which rate applies to an order placed before and invoiced after a change is a question
for your accountant: the plugin uses the rate recorded on the order.

### Does the plugin decide which VAT rate applies?

No. WooCommerce calculates the VAT on the order (by your tax settings and any VAT
exemption plugin), and FGSync sends that rate to Oblio unchanged. Rules such as 
OSS, reverse charge for EU companies, or exports are configured in WooCommerce and
agreed with your accountant. If taxes are turned off in WooCommerce, lines are sent
without a VAT rate and Oblio applies your account’s own settings (for example, not
a VAT payer); the TVA tab then shows only the OSS and customer settings.

### How are sales to EU companies (reverse charge) handled?

FGSync does not check VAT numbers in VIES. Use a checkout plugin that validates 
the customer’s EU VAT number in VIES and removes the VAT from the order; FGSync 
then sends those lines at 0% with the category chosen in the TVA tab (for example“
Taxare inversa”). Keeping proof of the VIES check for your records is up to that
plugin and your accountant.

### What does “Emite în EUR pentru clienții din afara României” do?

Under TVA, when enabled, documents for a billing address outside Romania (in the
EU or elsewhere) are issued in EUR regardless of the order’s currency, with Oblio
showing the RON equivalent alongside it. It changes only the currency, never the
VAT: the VAT still comes from WooCommerce. It’s off by default; whether EUR invoices
suit your store is a question for your accountant.

### Why does my WooCommerce stock drop before an order is invoiced?

If “Rezervă stoc pentru comenzi nefacturate” is enabled (Sincronizare tab), the 
stock WooCommerce displays is reduced for pending/processing orders that haven’t
been invoiced with stock deduction yet, so the store doesn’t oversell while waiting.
The actual deduction inside Oblio only happens once an invoice is issued with stock
deduction on; this setting only affects what WooCommerce shows as available in the
meantime.

### What’s the status dot in the admin toolbar?

A shortcut to the FGSync “Stare” tab, with a small colored dot: green means everything’s
normal, yellow means the processing queue has a large backlog, and red means the
last attempt to reach Oblio failed (it clears as soon as a later call succeeds).
It’s on by default; turn it off from a checkbox on that tab.

### How do customers get the invoice by email?

Under Email, pick a mode. “Email separat (la emitere)” sends a separate message 
from the plugin when the document is issued, using your subject/message templates.“
Nativ în mail-ul WooCommerce” instead adds a button linking to the Oblio invoice
inside WooCommerce’s own order emails, for the order statuses you select (for example,
the Completed order email). In that mode, if the invoice has not been issued yet
when that email is sent, the plugin tries to issue it at that moment, even when 
automatic invoicing is off, so the button usually links to a real invoice. If Oblio’s
rate limit is busy or that attempt fails, the invoice is queued instead and that
particular email goes out without the button; the invoice itself still gets issued
shortly after. Use the `oblio_fgwoo_email_button_issue` filter to disable the inline
attempt if you only want a button when an invoice already exists.

### Can I customize FGSync’s behavior for my store?

Yes. A few examples: `oblio_fgwoo_stock_quantity` and `oblio_fgwoo_stock_price` 
adjust a value right before it’s written during stock sync, `oblio_fgwoo_document_currency`
and `oblio_fgwoo_document_language` override those per order, and `oblio_fgwoo_email_button_issue`(
see above) controls the email button’s inline-issue behavior. See the plugin’s GitHub
repository (https://github.com/rwkyyy/fgsync-oblio) for the current list.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

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

Contributors

 *   [ Eduard Doloc ](https://profiles.wordpress.org/rwky/)

[Translate “FGSync for Oblio” into your language.](https://translate.wordpress.org/projects/wp-plugins/fgsync-oblio)

### Interested in development?

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

## Changelog

#### 1.4.1

 * The plugin page now links to the project page, the source code, the issue tracker
   and a live WordPress Playground demo, and shows screenshots of each settings 
   tab.
 * Fixed: with stock reservations on, an order that already had a delivery note (
   aviz) was subtracted twice during stock sync, once by Oblio and once as reserved.
   Orders with an aviz are no longer counted as reserved.
 * Fixed: testing new connection details with “Preia ultimele date” without saving
   them no longer replaces the companies loaded for your saved account. When you
   save a new email or API key, the companies, series, warehouses and VAT categories
   are all loaded again from the new account, so they no longer mix with data from
   the previous one.
 * Fixed: settings shown as disabled (the warehouse options on an account without
   warehouses, the bundle option without Product Bundles) keep their values when
   you save. Previously they were reset, so a selected warehouse list could turn
   back into “all warehouses”.
 * Fixed: the email sent for a delivery note now calls it “Avizul” instead of “Factura”.
 * Fixed: issuing an invoice, proforma or aviz again after deleting it no longer
   reuses the deleted document’s idempotency key, which could make Oblio answer 
   with the deleted document instead of creating a new one. The key is also sent
   with the delete, as the old plugin did.
 * Changed: stock sync now skips an Oblio product whose type differs from the WooCommerce
   product’s (set on the product, or the default type in Avansat), like the old 
   plugin did. The same code on another type is different stock, for example raw
   goods stored as Marfa next to the finished product you sell. The skipped codes
   are shown when a manual sync ends and on the Stare tab. To sync regardless of
   type, turn off “Sincronizează doar produsele cu același tip” on the Sincronizare
   tab.
 * Fixed: the message at the end of a manual stock sync showed 0 out of 0 products
   instead of the real totals.
 * Settings and messages that mention another tab or setting now link to it. The
   link switches to that tab without reloading the page and briefly highlights the
   setting, for example the default product type, the activity log or the „Preia
   ultimele date” button.
 * The TVA tab now opens with a recommendation to talk to your store developer and
   your accountant before changing its settings.

#### 1.4.0

 * New “TVA” tab in FGSync settings, with the VAT options in one place; the EUR 
   setting for customers outside Romania moved there from Avansat and was renamed
   from “Facturare OSS” to “Emite în EUR pentru clienții din afara României”, since
   it changes only the currency, not the VAT. When WooCommerce taxes are turned 
   off, the tab explains that and shows only the settings that still apply.
 * New setting: choose which 0% VAT category from your Oblio account is used for
   lines without VAT (SDD by default, or SFDD, Scutita, Taxare inversa, etc.).
 * Lines added by the plugin (the rounding line on invoices, adjustment lines on
   credit notes) now use the order’s main VAT rate instead of being sent without
   VAT.
 * Company and individual customers are invoiced correctly with the free “Facturare–
   Persoana Fizica sau Juridica” plugin (recommended in the TVA tab): its choice
   of persoană fizică / juridică, CUI, CNP, registration number, bank and IBAN are
   sent to Oblio, on both the classic and the block checkout. Without it, these 
   details are still looked up in the order fields, and a 13-digit CNP entered as
   tax code is treated as an individual.
 * New “Importă cotele standard de TVA ale UE” button in the TVA tab: adds the standard
   VAT rate of every EU country to WooCommerce  Setări  Taxe, plus a rate for the
   rest of the world at your store country’s rate. Before you press it, the tab 
   shows which rates are new, which would change and which of your own rows stay
   untouched. The rates ship with the plugin and are checked monthly; when an update
   changes a rate you imported, a notice points you to the TVA tab to apply it.
 * The TVA tab lists the WooCommerce tax rates your Oblio account has no VAT category
   for, with the name to give each one in Oblio (for example “25.5”), so missing
   rates are found before an invoice fails. The error shown when a rate is missing
   now includes the same recommended name.
 * Fixed: an Oblio account without warehouses (for example, a shop selling only 
   digital products) no longer stops the VAT categories and series from loading,
   and no longer logs an error on every refresh. The warehouse options are disabled
   with an explanation, and invoices are issued without stock deduction.
 * “Preia ultimele date” now selects the company automatically when the Oblio account
   has only one, and reloads the page so the new series and categories show up right
   away.
 * New setting under Avansat: the Oblio product type for virtual products (for example“
   Serviciu” for digital goods), used unless the product has its own type.
 * New option “Emite și la confirmarea plății”: the invoice is issued as soon as
   WooCommerce confirms an online payment (card, PayPal, etc.), as the old “WooCommerce
   Oblio” plugin did. Importing settings from the old plugin turns it on when its
   automatic invoicing was on.
 * No proforma for orders already paid online (card, PayPal, etc.): a proforma is
   a request for payment, so it isn’t issued automatically, offered on the order
   screen or included in the bulk action for those orders. Cash on delivery, bank
   transfer and cheque orders are unaffected.
 * When an order already has a delivery note (aviz), its invoice is now issued based
   on that aviz in Oblio, instead of as a separate document. If the order has both
   a proforma and an aviz, the aviz is used.
 * Product Bundles: the new default “AUTOMAT” handles fixed-price and promotional
   bundles too. The bundle’s price is split across its components (weighted by their
   regular prices), so the invoice total matches the order and stock comes off the
   real products; partial refunds of such a bundle are credited on the same components.
   Previously these orders stopped with an error. Stores that had “OMITE” selected
   switch to “AUTOMAT” automatically.
 * Refunds made before the invoice is issued are now taken off the invoice (smaller
   quantities or amounts, or a discount line for a refund by amount only), and get
   no separate credit note. An order refunded in full before invoicing gets no invoice
   and is no longer reported as an error. An invoice built on an aviz or proforma
   keeps the values of that document, so later refunds still get a credit note.
 * A “Setări” link under the plugin’s name on the Plugins screen opens the FGSync
   settings.

#### 1.3.6

 * Fixed: lines with 19% VAT were issued by Oblio at 21% without any error. This
   affected credit notes (storno) for orders invoiced before the August 2025 rate
   change, and any order still taxed at 19%. Every taxed line is now sent with the
   exact name of the matching VAT category from your Oblio account, so it keeps 
   its real rate.
 * Invoices and credit notes use the VAT rate recorded on the order when it was 
   placed, so changing your WooCommerce tax rates later no longer changes the rate
   on documents for older orders.
 * Non-integer VAT rates (for example 25.5% for Finland or 5.5% for France) are 
   kept as they are instead of being rounded to a whole number.
 * If your Oblio account has no VAT category for a line’s rate, the document is 
   no longer issued with a different rate: it stops with a clear message telling
   you which rate to add in Oblio  Setări  Cote TVA.

#### 1.3.5

 * Credit notes (storno) now match the original invoice: same package quantities,
   product type, currency (including EUR for OSS orders), document language, warehouse
   and unit-of-measure translation.
 * Quantities keep up to 4 decimals regardless of the shop’s price decimals (1.5
   kg no longer becomes 2 kg in a shop with 0 decimals), and the document precision
   sent to Oblio always stays within the 2-4 range Oblio accepts.
 * Sale discounts on invoices are now correct for shops that enter prices without
   VAT and for VAT-exempt (B2B) customers, and use the prices from the moment of
   the order, so a later price change no longer creates a discount line that never
   existed.
 * Stock sync with “Actualizează prețul la sincronizare” now keeps your sale prices,
   including scheduled sales. A sale price is removed only when it is no longer 
   below the new regular price from Oblio.
 * “Bucăți pe pachet” accepts decimals (for example 2.5 m² per box) on products 
   and variations, on invoices, credit notes and stock sync.
 * Orders with several shipping methods get one “Transport” line per method, each
   with its own VAT rate.
 * Negative lines with VAT (for example gift cards) keep their VAT rate instead 
   of being sent as not subject to VAT.
 * “Doar plăți cu cardul” no longer marks cheque payments or orders without a payment
   method as paid by card.
 * The payment receipt now uses the order number your customers see, not the internal
   order ID.
 * Company code (CIF/CNP) and registration number are found even when a checkout
   plugin saved an empty field first, and unrelated order data is no longer picked
   up as the registration number or bank.
 * The “Produse pachet (Bundles)” setting is disabled, with an explanation, when
   WooCommerce Product Bundles is not installed.

#### 1.3.4

 * Added a “Diagnoză rapidă” panel to the Status page: one click copies a ready-
   to-paste, Markdown-formatted report (collapsible, with tables) covering the server
   environment, WooCommerce tax/currency settings, the processing queue, Oblio connection
   health, and plugin settings — meant for opening a GitHub issue. It never includes
   the API key, account email, company tax ID (CIF), or any named individual’s data.
 * Added a link to the project’s presentation page (rwkyyy.github.io/fgsync-oblio)
   in the plugin’s admin notice and the development README.

#### 1.3.3

 * Fixed opening an order that already has an invoice, delivery note or credit note
   being very slow (and slowing down the rest of the site with it) on stores with
   a large order history; checking whether that document can still be deleted is
   now instant.
 * Fixed the reconciliation watchdog and scheduled stock sync silently failing to
   ever get (re)scheduled, logging an hourly “Could not (re)schedule” error instead;
   the check now waits until Action Scheduler is actually ready instead of running
   one step too early.
 * Reworded the status page’s update-delivery note for clarity.

#### 1.3.2

 * Fixed invoice reconciliation never reaching orders past the first 100 missed 
   invoices in the lookback window on stores with a large backlog; it now makes 
   forward progress across runs instead of rechecking the same batch every time.
 * Storno reconciliation no longer needs to scan up to 20 pages of orders in a single
   run; progress now carries over between runs instead.
 * Fixed deleting an invoice not immediately restoring that order to normal stock
   reservation; it could stay excluded for up to an hour due to a stale cache.
 * Fixed a rare race where a queued invoice or refund job could proceed using a 
   stale or already-reclaimed pending marker instead of stopping, risking a duplicate
   or outdated issuance.
 * Fixed a “permanently failed” indicator staying on an order after the document
   was later issued successfully by hand.
 * Fixed the “Ultima sincronizare” (last sync) label on the stock status page displaying
   literal `<strong>` tags instead of bold text.
 * Fixed the manual stock sync description still describing the old page-blocking
   behavior; it now correctly says the sync runs in the background and the page 
   can be closed.
 * The plugin log no longer records the customer’s email address when a document
   email is sent or fails to send.
 * The queue status panel no longer queries an all-time “complete” job count that
   was never shown on screen.
 * Documentation: described bulk-action queuing and settings-page caching under 
   Performance, added an Extensibility section listing the available filters/actions,
   and added a matching FAQ entry.

#### 1.3.1

 * Fixed a background job (invoice/refund issuance, stock sync page) that Action
   Scheduler failed to actually schedule being reported as queued anyway and silently
   disappearing; it’s now correctly retried or surfaced as a failure instead.
 * Fixed the background refresh of the series/warehouse list not actually running
   when triggered outside the WordPress admin area (WP-Cron, WP-CLI) — it would 
   silently report success without refreshing anything.
 * Fixed a rare case, only reachable on a store with a very deep queue backlog, 
   where two documents could end up queued for the same order at once.
 * Fixed removing the Oblio credentials while a stock sync was running leaving that
   sync’s lock stuck for up to 30 minutes instead of stopping immediately.
 * Queued invoice/refund issuance and the inline “Vezi factura” email button no 
   longer block for up to 20 seconds when another process is already working on 
   the same order; they now back off and retry automatically instead, the same way
   an already-queued job does.
 * A queued invoice/refund job now waits in place for its turn to call Oblio for
   at most 5 seconds (was 15); longer waits are rescheduled instead, so a burst 
   of orders is processed with less delay per background worker.
 * Checking whether a document is already queued for an order is now instant regardless
   of how large the pending queue is, and two near-simultaneous triggers for the
   same order (e.g. an automatic and a manual issue) can no longer both queue a 
   document.
 * Stock sync now aggregates reserved quantities from open orders in a single database
   query instead of scanning them in batches, and no longer rebuilds that cache 
   twice per run.
 * If that reservation lookup fails, stock sync now retries the affected page instead
   of writing quantities as if nothing were reserved.
 * Debug logging during stock sync now only logs products that actually changed,
   instead of every product in the catalog.
 * Repeated failures reaching Oblio (e.g. during an outage) no longer rewrite the
   stored connection-health status on every single attempt.
 * Fixed a refund created while its invoice was still queued permanently skipping
   its automatic storno; it now keeps retrying for as long as batch invoicing or
   a deep queue could realistically take, instead of giving up after a few minutes.
 * Automatic invoice, proforma and storno issuance now log an error if the background
   job genuinely couldn’t be scheduled, without misreporting the normal case of 
   a duplicate trigger finding a job already queued.
 * Fixed an unrelated stock-sync error (e.g. a misbehaving filter) being able to
   silently stop a sync partway through instead of retrying that page.
 * Fixed a very deep queue backlog being able to invalidate a job’s dedup marker
   while it was still legitimately waiting its turn.
 * The “unlock sync” button/action now only acts on a stock sync that’s actually
   stuck (no progress in several minutes, and long enough to rule out a normal slow
   page), instead of being able to cancel a normal, still-running sync.
 * Fixed “unlock sync” not actually cancelling the still-queued background steps
   of the sync it was unlocking.
 * Fixed an invoice or storno that failed only because Oblio was temporarily unreachable
   being abandoned for good after a few minutes; it’s now automatically retried 
   by the periodic reconciliation check, the same way a still-missing invoice already
   was. A genuine validation error (e.g. bad data) is still left alone rather than
   retried.
 * Added automatic retrying of a storno that never got issued (e.g. after a long
   Oblio outage), and its failure reason now also appears on the order screen, next
   to the invoice/proforma ones.
 * Fixed the stock sync progress indicator being able to report “done” for a sync
   that actually crashed partway through, and fixed the “sync appears stuck” unlock
   option being able to disappear again once a crashed sync’s lock fully timed out.
 * Fixed the invoice email’s issue/due date sometimes showing the order’s creation
   date instead of the invoice’s actual issue date.
 * Fixed the “documents issued today” count on the status page always showing zero.
 * Fixed uninstalling or network-deactivating on a multisite network only cleaning
   up the site the action was performed from, leaving scheduled jobs and options
   behind on every other site.
 * The company tax ID (CIF) and trade registry number are now also picked up from
   a couple of popular third-party Romanian checkout plugins that store them under
   their own custom fields, in addition to the existing automatic detection.

#### 1.3.0

 * Fixed a set of rare concurrency issues that could surface under overlapping triggers—
   a manual action clicked while an automatic one was already running, two refunds
   on the same order close together, or a cancelled stock sync overlapping a new
   one. Document issuance, deletion, and refunds for a given order are now fully
   serialized, and an interrupted process can no longer leave another one’s lock
   or in-progress state stuck or corrupted.
 * Oblio responses that come back unreadable or missing required fields (e.g. a 
   200 OK with no invoice link) are now retried automatically instead of either 
   being silently accepted as a real invoice or permanently marked as failed.
 * Reconciliation (the periodic scan that catches missed invoices) no longer gets
   stuck rechecking the same batch of already-failed orders forever if that batch
   fills the scan window.
 * Deleting a document imported from the old plugin now actually clears it; previously
   some leftover data could make the plugin think it still existed.
 * The series/warehouse list (used by several settings) no longer blocks the settings
   page while waiting on Oblio when its weekly cache has expired, and a temporarily-
   unreachable Oblio account is no longer retried on every single page load.
 * Stores sharing one Oblio account across multiple installs (e.g. staging and production)
   no longer risk colliding on the same invoice/refund identifier.
 * Uninstalling now also clears the plugin’s currently-active scheduled jobs, a 
   gap left over from an earlier internal rename that meant only the old (unused)
   job group was being cleaned up.
 * Fixed the stored plugin version not advancing on upgrade (cosmetic only; affected
   the admin’s version display, not functionality).
 * Added capability checks to bulk order actions and variation saving, for restricted/
   custom shop-manager roles.
 * Added an “Instant” option (Documents tab) for invoice generation: issues the 
   invoice synchronously the moment the order enters its trigger status, instead
   of a few seconds later via the queue — useful when the invoice must exist immediately.
   Falls back to the normal queue automatically if the synchronous attempt fails,
   so nothing is ever lost.
 * Added a small status indicator to the WordPress admin toolbar: a colored dot 
   linking to the FGSync Status screen, reflecting queue backlog and whether the
   last attempt to reach Oblio succeeded. On by default; can be turned off from 
   the Status screen.
 * WooCommerce Product Bundles: skipping the bundle’s own line (the default) now
   fails with a clear, specific error if a particular bundle turns out to price 
   itself on the main line rather than on its components, instead of silently under-
   invoicing it or blocking with a confusing “order value 0.00” error.
 * Expanded the FAQ with entries on the failed-invoice badge, why an older invoice
   can’t be deleted, Product Bundles invoicing, the OSS EUR setting, and stock reservation.
 * The admin toolbar status dot now reads a small, separately-cached queue summary
   instead of re-running the full Status-page report on every single page load.
 * The connection-health indicator no longer rewrites its stored state on every 
   successful request to Oblio – only when recovering from a failure or after a 
   few minutes, so busy stores no longer write to the database on nearly every page
   load.
 * The background refresh of the series/warehouse list (used by several settings)
   now always runs as a single proper background job, instead of occasionally running
   twice in the same request.
 * The “Vezi factura” email button now falls back to the normal queue if it can’t
   issue the invoice inline (e.g. Oblio briefly unreachable), instead of only retrying
   the next time an email happens to go out for that order.
 * “Sincronizează acum” (manual stock sync) now runs on the same background queue
   as the scheduled sync, with the browser just watching its progress, instead of
   driving the work itself over a long series of requests. Removed the “products
   per segment” setting, which only applied to the old approach.

#### 1.2.0

 * Renamed several remaining internal identifiers that still used a bare `oblio`
   prefix to the plugin’s own prefix, for consistency. Two of these are visible 
   in URLs and need attention on upgrade: the admin page moved from `?page=oblio`
   to `?page=fgsync-oblio` (rebookmark it), and the My Account invoices endpoint
   changed from `/oblio-facturi/` to `/oblio-fgwoo-facturi/` (update any bookmarked
   customer link).
 * Fixed a race condition that could issue two invoices for the same order (e.g.
   a manual “Issue invoice” click overlapping with an already-queued automatic issue)
   by serializing document issuance per order with a short-lived lock.
 * The orders list now flags a failed invoice with a red “!” badge (hover for the
   reason) instead of plain text, and the order screen’s Oblio box shows the last
   failure reason under the issue button so you can see why a document isn’t out
   without checking the log.
 * The order screen’s Oblio box no longer offers “Issue proforma” once the invoice
   is already issued, and no longer shows the “can’t delete, not last in series”
   note on every older document — deleting stays available only where it’s actually
   allowed.
 * A couple of status colors (error/success) now match WooCommerce’s own admin color
   scheme where it’s loaded, falling back to the plugin’s own colors elsewhere.
 * Fixed the orders list “Emitere eșuată” filter showing orders that had already
   been invoiced (and even stornoed) since — it now only lists orders that failed
   and still have no invoice.
 * Added an optional setting (Avansat tab) to issue documents in EUR whenever the
   billing address is outside Romania, for stores using the EU One Stop Shop (OSS)
   VAT scheme. Off by default; stores that don’t need OSS are unaffected.
 * Added an optional setting (Avansat tab) for how WooCommerce Product Bundles are
   invoiced. By default, the bundle’s own order line is skipped and only its individual
   components — which have real stock records in Oblio — are billed and deducted
   from stock; can be switched to invoice the bundle line itself instead.
 * Fixed the plugin’s internal version constant, stuck at 1.0.2 since the 1.1.0 
   rename; only affected browser cache-busting on the admin CSS/JS, not functionality.

#### 1.1.0

 * Rebrand: renamed the plugin to “FGSync for Oblio” (slug/text domain `fgsync-oblio`,
   was `oblio-fgwoo`), an independent open-source integration. Oblio no longer appears
   as author, contributor, or support provider; author is now Eduard Doloc. Plugin
   URI and Author URI now point to neutral, developer-controlled pages instead of
   oblio.eu.
 * Added an explicit in-plugin and readme disclosure that this is an independent
   integration, not developed, endorsed, maintained, or supported by Oblio.eu.
 * Removed the bundled Oblio logo image; the admin menu and settings header now 
   use a generic icon.
 * Internal-only changes (PHP namespace, compile-time constants, script/style handles):
   renamed to the new brand. All persisted data — settings, order/product meta, 
   scheduled jobs, rate-limit state — keeps its existing `oblio_fgwoo_...` storage
   keys unchanged, so upgrading in place does not reset your configuration or lose
   data.
 * Because the plugin slug and main file changed, this version is registered with
   WordPress as a different plugin from the old `oblio-fgwoo` builds used during
   the beta. Sites running a pre-1.1.0 beta build must deactivate/remove the old
   plugin folder and install this one; see the “Upgrading from a pre-1.1.0 beta”
   note below. Settings and order data are preserved because they are stored under
   the unchanged `oblio_fgwoo_` option/meta prefix; only the plugin’s own active-
   plugin registration, and any queued/in-flight Action Scheduler jobs that were
   already running under the old install at the moment of swap, are affected.
 * Minor: moved a handful of directly-printed inline `style=""` attributes into 
   the stylesheet.

#### 1.0.1

 * Removed redundant order notes for document issue/failure events (the same information
   is already in the Oblio log).
 * Added logging for previously-silent actions: manual document actions, bulk actions,
   settings save, connection test, nomenclature refresh, and customer document emails.
 * Translated all log messages to English.

#### 1.0.0

 * First stable release. Complete rewrite: WP HTTP API client, Action Scheduler 
   queues, document engine (invoice, proforma, delivery note, credit note), multi-
   warehouse stock sync, status panel, import from the old plugin, HPOS and classic
   compatibility.

## Meta

 *  Version **1.4.1**
 *  Last updated **6 saet ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.5 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 8.1 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/fgsync-oblio/)
 * Tags
 * [invoice](https://kmr.wordpress.org/plugins/tags/invoice/)[invoicing](https://kmr.wordpress.org/plugins/tags/invoicing/)
   [romania](https://kmr.wordpress.org/plugins/tags/romania/)[woocommerce](https://kmr.wordpress.org/plugins/tags/woocommerce/)
 *  [Advanced View](https://kmr.wordpress.org/plugins/fgsync-oblio/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/fgsync-oblio/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/fgsync-oblio/reviews/)

## Contributors

 *   [ Eduard Doloc ](https://profiles.wordpress.org/rwky/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/fgsync-oblio/)