{"id":338900,"date":"2026-07-12T10:17:48","date_gmt":"2026-07-12T10:17:48","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/comptabilite-et-export-fec-for-woocommerce\/"},"modified":"2026-09-07T07:35:18","modified_gmt":"2026-09-07T07:35:18","slug":"compta-fec-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/ky.wordpress.org\/plugins\/compta-fec-for-woocommerce\/","author":23531072,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.6.0","stable_tag":"0.6.0","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"Comptabilit\u00e9 et Export FEC for WooCommerce","header_author":"Studio Ferreiro","header_description":"Transforme vos commandes WooCommerce en \u00e9critures comptables \u00e9quilibr\u00e9es, exportables en CSV et au format FEC.","assets_banners_color":"232a37","last_updated":"2026-09-07 07:35:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":5,"author_block_rating":0,"active_installs":0,"downloads":493,"num_ratings":1,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.1":{"tag":"0.1.1","author":"studioferreiro","date":"2026-07-12 10:49:43","revision":3604679},"0.2.0":{"tag":"0.2.0","author":"studioferreiro","date":"2026-07-14 15:05:25","revision":3607687},"0.2.1":{"tag":"0.2.1","author":"studioferreiro","date":"2026-07-24 14:45:00","revision":3621443},"0.3.0":{"tag":"0.3.0","author":"studioferreiro","date":"2026-08-03 09:18:06","revision":3632603},"0.4.0":{"tag":"0.4.0","author":"studioferreiro","date":"2026-08-03 18:19:40","revision":3633319},"0.5.0":{"tag":"0.5.0","author":"studioferreiro","date":"2026-08-08 15:08:25","revision":3638779},"0.6.0":{"tag":"0.6.0","author":"studioferreiro","date":"2026-09-07 07:35:18","revision":3684379}},"upgrade_notice":{"0.6.0":"<p>A credit note is now posted to the same accounts as the invoice it cancels, instead of resolving the account again at refund time. Fully refunded orders whose accounts do not return to zero are now detected and listed. On a French store, phrases that were shown in English are back in French.<\/p>","0.1.0":"<p>First public release.<\/p>"},"ratings":{"1":0,"2":0,"3":0,"4":0,"5":1},"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3634344,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3634344,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3634344,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3634344,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.1","0.2.0","0.2.1","0.3.0","0.4.0","0.5.0","0.6.0"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3634344,"resolution":"1","location":"assets","locale":"","width":1500,"height":1549},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3634344,"resolution":"2","location":"assets","locale":"","width":1500,"height":145},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3634344,"resolution":"3","location":"assets","locale":"","width":1500,"height":390},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3634344,"resolution":"4","location":"assets","locale":"","width":1407,"height":539},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3634344,"resolution":"5","location":"assets","locale":"","width":1348,"height":513}},"screenshots":{"1":"The accounting journal: every order produces a balanced entry, and the journal footer checks that debits equal credits.","2":"The summary: revenue excluding tax, VAT collected, shipping charged and total collected, per account.","3":"History replay: pick an anchor date and replay the orders placed before installation.","4":"The CSV export, opened in a spreadsheet: one row per movement, ready for your accountant.","5":"The FEC export: the 18 mandatory columns of the Fichier des \u00c9critures Comptables."}},"plugin_section":[],"plugin_tags":[274303,274305,274304,45957,161949],"plugin_category":[],"plugin_contributors":[271193],"plugin_business_model":[],"class_list":["post-338900","plugin","type-plugin","status-publish","hentry","plugin_tags-comptabilite","plugin_tags-ecritures-comptables","plugin_tags-expert-comptable","plugin_tags-fec","plugin_tags-tva","plugin_contributors-studioferreiro","plugin_committers-studioferreiro"],"banners":{"banner":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/banner-772x250.png?rev=3634344","banner_2x":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/banner-1544x500.png?rev=3634344","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/icon-128x128.png?rev=3634344","icon_2x":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/icon-256x256.png?rev=3634344","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/screenshot-1.png?rev=3634344","caption":"The accounting journal: every order produces a balanced entry, and the journal footer checks that debits equal credits."},{"src":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/screenshot-2.png?rev=3634344","caption":"The summary: revenue excluding tax, VAT collected, shipping charged and total collected, per account."},{"src":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/screenshot-3.png?rev=3634344","caption":"History replay: pick an anchor date and replay the orders placed before installation."},{"src":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/screenshot-4.png?rev=3634344","caption":"The CSV export, opened in a spreadsheet: one row per movement, ready for your accountant."},{"src":"https:\/\/ps.w.org\/compta-fec-for-woocommerce\/assets\/screenshot-5.png?rev=3634344","caption":"The FEC export: the 18 mandatory columns of the Fichier des \u00c9critures Comptables."}],"raw_content":"<!--section=description-->\n<p><strong>This plugin implements French accounting law: the Plan comptable g\u00e9n\u00e9ral and\nthe FEC file (Fichier des \u00c9critures Comptables). It is of no use to a store\noutside France.<\/strong><\/p>\n\n<p>Watch the plugin in action (about a minute, in French):<\/p>\n\n<p>https:\/\/youtu.be\/ijeINVpA4p4<\/p>\n\n<p>Is your accountant asking for a file? Your WooCommerce store knows how to sell,\nbut it does not keep an accounting journal. This plugin fills that gap.<\/p>\n\n<p>Every time an order is paid, it automatically writes a balanced accounting entry\nthat follows the French chart of accounts (Plan comptable g\u00e9n\u00e9ral): revenue, VAT\ncollected per rate, shipping charged to the customer, and the payment received.\nYou read the journal from your dashboard, and export it whenever you are asked\nto.<\/p>\n\n<p>This plugin targets French e-commerce: it produces entries for the French chart\nof accounts and an FEC file (Fichier des \u00c9critures Comptables), the ledger export\nthat French tax authorities may request during an audit.<\/p>\n\n<h4>What the plugin does<\/h4>\n\n<ul>\n<li><strong>Automatic entries.<\/strong> A paid order creates an entry. A refund is <strong>reversed<\/strong>\n(contra entry), never deleted: the audit trail stays intact.<\/li>\n<li><strong>Multi-rate VAT.<\/strong> A single order may carry 20%, 10% and 5.5% items. Each rate\ngets its own VAT line. Shipping is posted separately, with its own VAT.<\/li>\n<li><strong>History replay.<\/strong> Installing today but selling for two years? Pick an anchor\ndate and replay your past orders. The operation is idempotent: running it again\nnever creates duplicates.<\/li>\n<li><strong>Readable journal.<\/strong> One screen, one list, a permanent balance check\n(sum of debits = sum of credits) and a summary of balances per account.<\/li>\n<li><strong>CSV export<\/strong> for your spreadsheet or your accountant, and <strong>FEC export<\/strong>\n(18 mandatory columns) for the tax authorities.<\/li>\n<li><strong>HPOS compatible<\/strong> (High-Performance Order Storage), as well as legacy storage.<\/li>\n<\/ul>\n\n<h4>Accounts used<\/h4>\n\n<p>These are the default numbers. There is no settings screen: a developer can\noverride each of them with a filter, for instance <code>comptafec_account_ventes<\/code> to post\nrevenue to <code>706<\/code> instead of <code>707<\/code>.<\/p>\n\n<ul>\n<li><code>411<\/code> Clients \u2014 customer receivable, the pivot of the sale<\/li>\n<li><code>707<\/code> Ventes de marchandises \u2014 revenue, excluding tax<\/li>\n<li><code>44571<\/code> TVA collect\u00e9e \u2014 VAT collected, one line per rate<\/li>\n<li><code>7085<\/code> Ports et frais accessoires factur\u00e9s \u2014 shipping charged<\/li>\n<li><code>5115<\/code> Cartes bancaires \u00e0 l'encaissement \u2014 card payments in transit<\/li>\n<li><code>471<\/code> Compte d'attente \u2014 amounts that could not be assigned to a sales account; your accountant reclassifies them<\/li>\n<li><code>4718<\/code> Ventes \u00e0 ranger \u2014 sales an add-on declined to assign, when several accounts share one VAT rate<\/li>\n<\/ul>\n\n<h4>What the plugin does not do (and why)<\/h4>\n\n<p>We would rather say it before you install.<\/p>\n\n<p>Payments are posted to account <strong>5115<\/strong> (\"card payments in transit\"), not\ndirectly to the bank account (<code>512<\/code>). This is not a shortcut: when a customer\npays by card, the money first sits with the payment provider, which deducts its\nfee and settles the remainder later, often bundling several orders together. The\namount actually credited to your bank account is therefore only known afterwards.<\/p>\n\n<p>The trade-off is deliberate: <strong>your revenue and your VAT are correct<\/strong>, but\naccount <code>5115<\/code> stays open until the provider's payout has been reconciled against\nyour bank statement. That reconciliation, and the recording of provider fees, are\noutside the scope of this free version.<\/p>\n\n<p>The plugin also assumes a store selling in <strong>euros<\/strong>, under <strong>French VAT<\/strong>, to\nconsumers.<\/p>\n\n<h4>Your data<\/h4>\n\n<p>No data leaves your server. The plugin calls no external service. The accounting\nexport aggregates sales on the collective account <code>411 Clients<\/code>: <strong>it contains no\ncustomer name, address or email address<\/strong>.<\/p>\n\n<h4>Pro version<\/h4>\n\n<p>The free plugin is complete on its own: nothing here is time-limited or locked.\nA separate paid add-on, <strong>Comptabilit\u00e9 et Export FEC Pro<\/strong>, is available for\nstores whose chartered accountant needs a ready-to-import file. It adds six\naccounting-firm export formats (ISACOMPTA, Sage, EBP, Pennylane and more)\nand per-account monthly subtotals on screen. Details\nand pricing: https:\/\/www.ferreiro-studio.fr\/compta-fec\/tarifs\/<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate <strong>WooCommerce<\/strong> first.<\/li>\n<li>Upload the plugin to <code>\/wp-content\/plugins\/<\/code>, or install it from\nPlugins \u2192 Add New.<\/li>\n<li>Activate the plugin. The journal tables are created automatically.<\/li>\n<li>Go to <strong>WooCommerce \u2192 Accounting<\/strong> (<strong>Comptabilit\u00e9<\/strong> on a French site).<\/li>\n<li>Your next paid orders will generate their entries immediately. For your past\norders, pick an anchor date and click <strong>Replay history<\/strong>\n(<strong>Rejouer l'historique<\/strong> on a French site).<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"is%20the%20fec%20file%20compliant%3F\"><h3>Is the FEC file compliant?<\/h3><\/dt>\n<dd><p>The file follows the mandatory 18-column structure defined by French tax law\n(article A. 47 A-1 of the Livre des proc\u00e9dures fiscales): dates as YYYYMMDD,\ndecimal comma, balanced entries. Compliance of a FEC file also depends on the\nconsistency of your bookkeeping as a whole: have it reviewed by your chartered\naccountant before any audit.<\/p><\/dd>\n<dt id=\"what%20happens%20when%20i%20refund%20an%20order%3F\"><h3>What happens when I refund an order?<\/h3><\/dt>\n<dd><p>The plugin records a reversing entry (contra entry), prorated for a partial\nrefund. The original entry is neither modified nor deleted: that is the rule in\naccounting, and it is what makes the journal trustworthy.<\/p><\/dd>\n<dt id=\"can%20i%20safely%20run%20the%20history%20replay%20again%3F\"><h3>Can I safely run the history replay again?<\/h3><\/dt>\n<dd><p>Yes. Every entry is tied to its source order; an order already recorded is\nskipped. A second replay therefore reports zero entries created.<\/p><\/dd>\n<dt id=\"why%20does%20my%205115%20account%20never%20clear%3F\"><h3>Why does my 5115 account never clear?<\/h3><\/dt>\n<dd><p>That is the expected behaviour of the free version. Account <code>5115<\/code> receives the\nmoney collected by your payment provider. It is only cleared when that provider's\ntransfer reaches your bank account \u2014 a reconciliation step that is not included\nhere. See \"What the plugin does not do\".<\/p><\/dd>\n<dt id=\"i%20open%20the%20fec%20file%20in%20excel%20and%20the%20accents%20are%20broken.%20is%20it%20a%20bug%3F\"><h3>I open the FEC file in Excel and the accents are broken. Is it a bug?<\/h3><\/dt>\n<dd><p>No, the file is correct. The FEC is encoded in plain UTF-8, without a byte order\nmark, because it is meant for tax authorities and accounting software, some of\nwhich reject that mark. Excel guesses the encoding and gets it wrong.<\/p>\n\n<p>To read it comfortably: in Excel, use <strong>Data \u2192 From Text<\/strong>, then choose the\n<strong>UTF-8<\/strong> encoding and the <strong>tab<\/strong> separator. The file you hand to your accountant\nneeds no change. The CSV export, designed for spreadsheets, opens directly.<\/p><\/dd>\n<dt id=\"can%20my%20theme%20or%20my%20other%20plugins%20distort%20the%20entries%3F\"><h3>Can my theme or my other plugins distort the entries?<\/h3><\/dt>\n<dd><p>The plugin reads orders through the official WooCommerce API, relying on the\ntotals computed by WooCommerce itself. If your order totals are right, your\nentries are right.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20handle%20several%20currencies%2C%20intra-eu%20vat%20or%20b2b%3F\"><h3>Does the plugin handle several currencies, intra-EU VAT or B2B?<\/h3><\/dt>\n<dd><p>Not in this version. The store is assumed to sell in euros, under French VAT, to\nconsumers.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.6.0<\/h4>\n\n<ul>\n<li>Fixed: on a French store, part of the plugin was shown in English. Since WordPress 6.7, a plugin's translation files are no longer loaded the way this plugin loaded them, and only one catalogue was ever read \u2014 so any phrase added after the last translation round fell back to English, mixed in with the French ones in the same notice. Both catalogues are now loaded explicitly, the official language pack first and the one shipped with the plugin underneath. The phrases you already saw in French are unchanged, to the character.<\/li>\n<li>Fixed: the plugin's database tables could never change again once installed. Creating them was tied to activating the plugin, and updating a plugin does not re-run activation. On any site installed before this release, a new column or index would simply never arrive, and entries written against the outdated table would fail without a word. The plugin now checks the tables it actually finds in the database and brings them into line, whatever brought it there \u2014 an update from the plugin screen, an automatic update, WP-CLI, or a database restore.<\/li>\n<li>Fixed: a lost unique index could duplicate your entire journal. The whole \"Replay history\" feature relies on one unique index to avoid duplicates. If that index disappeared after the fact \u2014 a database restore, a repair tool, a host intervention \u2014 every replay silently duplicated the entire journal, and nothing on screen said so. History replays and exports now verify the real tables before doing anything.<\/li>\n<li>Fixed: an entry could be reported as saved when its lines had not been written. The plugin now reads back what actually reached the database \u2014 how many lines, and for what amounts \u2014 before returning success. A document that did not go through is refused, cleaned up, and listed in the alerts, so a replay can write it properly.<\/li>\n<li>New: fully refunded orders whose accounts do not return to zero are now detected and listed. Every document could be faithful on its own and the resulting balances still be wrong: on one real order, the sales account was left holding 0.01 \u20ac and the VAT account minus 0.01 \u20ac after a full refund, and no check saw it, because each entry balanced. Your turnover for the month and the VAT you report were both off, silently. The plugin now checks what the documents of an order add up to, not only each document on its own.<\/li>\n<li>A credit note is now posted to the same accounts as the invoice it cancels. Until now the account was resolved again at refund time, from the product's category as it stands today. If the product had been filed elsewhere in the meantime, the refund landed on a different account: two entries, both balanced, both faithful \u2014 and a balance that never cleared. The refund amounts, quantities and VAT still come from WooCommerce, exactly as reported; only the account now comes from the original entry.<\/li>\n<li>When a refund cannot be matched to the original entry, it is reported rather than guessed. If several accounts share one VAT rate the amount goes to the unassigned sales account (4718 by default); if there is no original entry at all it falls back to the ordinary sales account, as before, and the alert says so. Either way the plugin still never invents a sales account of its own.<\/li>\n<li>Alerts no longer hide one another. When several things were waiting at once \u2014 an unbalanced suspense account, refunds to look at, a pending update \u2014 the notice showed only one of them, and the others appeared once you had dealt with the first. Every pending state is now listed, on every admin screen, with the button that resolves it. And a success message now speaks only of what was actually verified: \"tables are up to date\" no longer implies that everything else is done.<\/li>\n<li>When the tables cannot be brought up to date \u2014 a hosting account without the ALTER privilege, for instance \u2014 the plugin says so in the admin, names the table and what is missing, and offers a Retry button. It no longer claims success it has not verified.<\/li>\n<li>One honest limit is worth knowing: on ordinary page loads the table check runs at most once every 15 minutes, so that browsing your shop costs nothing. History replays and exports check every single time, without exception \u2014 those are the moments where not knowing would cost you.<\/li>\n<li>No change to the exported files for documents that were already written correctly: on a store running the plugin on its own, their CSV and FEC output is byte-for-byte identical to that of 0.5.0. The only entries that change are the ones an earlier version had left incomplete \u2014 a header with no lines \u2014 which a replay now writes properly. The CSV and FEC layouts themselves are untouched.<\/li>\n<li><p>For add-on developers: a new <code>comptafec_ligne_vente<\/code> filter lets an add-on decide the sales account of an order line. The decision is validated on the way in and rejected as a whole if it is malformed, never repaired field by field. Lines now carry the role they play rather than being recognised by their account number, so changing an account number no longer changes the meaning of entries already written. A seventh account role, <code>ventes_non_rangees<\/code> (4718 by default), holds sales an add-on declined to assign; the suspense account (471) keeps its own role.<\/p><\/li>\n<li><p>Fixed: on a narrow screen the whole admin page scrolled sideways. The journal table is wider than a phone screen, and it dragged the entire document along with it. Wide content now scrolls inside its own area, and the page itself stays put.<\/p><\/li>\n<li>Fixed: the plugin's stylesheet painted tables belonging to other extensions shown on the same screen. They stayed legible by luck, not by design: an add-on using light text on its table headers would have become unreadable. The stylesheet now paints only the plugin's own markup. Add-on developers should note that CSS class names starting with <code>comptafec-<\/code> are reserved for the plugin: using one means inheriting its appearance, which can change between versions.<\/li>\n<li>The highlighted figure in the summary was set apart by colour alone, below the 3:1 contrast ratio expected of a non-text indicator. It now carries a band as well as a colour, so the distinction no longer depends on telling two shades apart.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Fixed a defect that could make your books wrong while making them look right. When an order carried a line the plugin did not read \u2014 a fee, or a cart-level discount added by another extension \u2014 the amount silently vanished from the entry, VAT included. The entry still balanced, because the customer account was computed from the lines that were present, so nothing looked wrong. Every document is now reconciled against the WooCommerce order total, to the cent.<\/li>\n<li>Fixed: a refund entered as a plain amount, with no line item attached, produced no accounting entry at all. The refunded amount stayed in your turnover.<\/li>\n<li>VAT is now reconciled separately from the net amounts, and always booked at the amount WooCommerce reports. A gap in the assignment of turnover can no longer turn into a gap in your VAT return.<\/li>\n<li>When an amount cannot be assigned to a sales account, it is booked to a suspense account (471 by default) instead of being dropped or guessed. The screen shows the balance, lists the documents concerned, and keeps saying so until the balance is cleared. Your accountant posts the reclassification entry: the plugin never invents a sales account.<\/li>\n<li>A document is now refused only when the WooCommerce total itself is unusable \u2014 missing, negative, or zero with lines present. That case is reported, never silently skipped.<\/li>\n<li>Exported files change with this version. Documents that were missing now appear, and suspense account lines may appear where amounts could not be assigned. The CSV and FEC layouts are untouched: what changes is that their content is now complete.<\/li>\n<li>For add-on developers: the suspense account number can be changed with the <code>comptafec_account_attente<\/code> filter, like the five existing account roles.<\/li>\n<\/ul>\n\n<h4>0.4.1<\/h4>\n\n<ul>\n<li>Removed a claim the plugin does not keep: the Pro teaser announced reorderable CSV columns. The Pro version does not offer that. The wording now lists only what it actually does \u2014 the accounting-firm export formats and the per-account, per-period subtotals.<\/li>\n<li>The admin screen has been rebuilt on the plugin's 2026 visual identity. Appearance is now carried entirely by a stylesheet instead of inline styles, which makes it consistent with the rest of the plugin and easier to maintain.<\/li>\n<li>No change to the exported files. The CSV and FEC output of 0.4.1 is byte-for-byte identical to that of 0.4.0.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Fixed: on a site running with WP_DEBUG display enabled, the plugin loaded its translations too early. Since WordPress 6.7 this prints a notice before the HTTP headers, which breaks cookies and can make it impossible to log into the admin. Translations are now loaded on <code>init<\/code>.<\/li>\n<li>The plugin is now translatable. Source strings are in English, as the WordPress.org translation platform requires, and a complete French translation ships with the plugin: a French store sees exactly the same screen as before.<\/li>\n<li>The journal now shows readable labels in the Type and Source columns, instead of the raw values stored in the database.<\/li>\n<li>Fixed: the replay summary no longer writes \"0 \u00e9critures cr\u00e9\u00e9es\" \u2014 singular and plural now agree.<\/li>\n<li>Accounting labels are unchanged, by design: the 18 FEC columns, the chart of accounts labels and the CSV headers stay in French whatever the site language. They are set by French law or by what your accounting software expects at import, not by the interface. The exported files are byte-for-byte identical to those produced by 0.3.0.<\/li>\n<li>For add-on developers: <code>comptafec_register_exports<\/code> now fires on <code>init<\/code> (priority 5) instead of <code>plugins_loaded<\/code>. No add-on is affected: registering the callback when the add-on's main file loads still works, and hooking on <code>init<\/code> with a priority below 5 now works too, which it did not before.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>Fixed: an export that could not run (unknown format, insufficient rights) was counted as a successful export. Success is now recorded only once the file has actually been produced.<\/li>\n<li>New extension hook <code>comptafec_export_sent<\/code>, fired when an export has really been generated.<\/li>\n<li>A one-time notice may now ask for a review on WordPress.org, only after at least three successful exports and seven days of use. It offers \"Leave a review\", \"Later\" (30 days) and \"No thanks\", plus a link to the plugin support forum shown at the same level. Nothing is offered in exchange for a review, no question decides where you are sent, and dismissing it is remembered for good.<\/li>\n<\/ul>\n\n<h4>0.2.1<\/h4>\n\n<ul>\n<li>The admin screen now follows the plugin's own visual identity.<\/li>\n<li>Mentions the paid add-on in three places, all inside the plugin's own screens: a link on the Plugins list, a teaser on the settings screen and a notice after an export. The notice can be dismissed for good, and every mention disappears once the add-on is active.<\/li>\n<li>No feature is locked, removed or degraded. No external request is made.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Export screen now driven by a registry: any add-on can declare its own format.<\/li>\n<li>Export can be limited to a range of months.<\/li>\n<li>Public extension API for add-ons (see API-PUBLIQUE.md): <code>comptafec_register_exports<\/code>, <code>comptafec_entries<\/code>, <code>comptafec_export_rows<\/code>, <code>comptafec_summary_tiles<\/code>, admin hooks.<\/li>\n<li>No feature of the free plugin is locked or removed.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Internal prefix renamed for consistency. No change in behaviour.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>First release.<\/li>\n<li>Automatic entries on paid orders and refunds (contra entries).<\/li>\n<li>Multi-rate VAT per order line, shipping posted separately.<\/li>\n<li>Idempotent history replay from an anchor date.<\/li>\n<li>Journal, balance check and account summary in the admin.<\/li>\n<li>CSV and FEC exports.<\/li>\n<li>HPOS compatibility declared.<\/li>\n<\/ul>","raw_excerpt":"French accounting and FEC export for WooCommerce: balanced entries, VAT per rate, ready for your accountant.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/338900","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=338900"}],"author":[{"embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/studioferreiro"}],"wp:attachment":[{"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=338900"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=338900"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=338900"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=338900"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=338900"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/ky.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=338900"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}