Welcome to SemiAuto Invoicing
SemiAuto Invoicing turns every WooCommerce order into the documents your business needs: thermal receipts for the counter, A4 invoices and credit notes for your customers, and packing slips for your warehouse. The Premium edition adds e-invoices — invoices a computer can read — for 9 official formats used in Europe, the UAE, Australia, New Zealand, Japan, Singapore and Malaysia.
You don’t need to be technical. Everything is set up from one place in WordPress, and every document is built from the order data you already have in WooCommerce. SemiAuto never changes your order amounts — WooCommerce stays the single source of truth.
Before You Install
Your site needs WordPress 6.0 or newer, WooCommerce 10.0.0 or newer and PHP 8.0 or newer (your web host can tell you your PHP version). Install the free edition from Plugins > Add New by searching for “SemiAuto Invoicing”, or upload the plugin zip and click Activate. Premium is installed the same way with the zip you receive after purchase.
Set Up Your Store in 4 Steps
Most stores are ready in a few minutes. You copy your shop details from WooCommerce with one click, add your logo, and choose which emails carry which document.
Step 1: Open the Settings
In your WordPress dashboard, go to WooCommerce > Settings and click the SemiAuto Invoicing tab. You start on the General sub-tab.
Step 2: Copy Your Shop Details
Next to the Business Name field, click “Sync from WooCommerce”. Your store address, city, postcode and country are copied from your WooCommerce settings. Check them, add your tax number if you have one, and click Save.
Step 3: Add Your Logo
Under Logo, pick an image from your Media Library. Use a PNG, WebP or JPEG at least 600px wide — a PNG with a transparent background prints best. SVG files are not accepted, to keep your PDFs print-safe and your server secure.
Step 4: Choose Your Emails
Open the Thermal Receipt, A4 Documents and Packaging Slip sub-tabs and use Attach to Emails to pick which WooCommerce emails carry each document (for example, the A4 invoice on “Completed order”). Use the live preview to see how your documents look before you save.
Your Document Types
Each order can produce several documents. They are all made from the same WooCommerce order, so they always show the same items, prices and taxes. Making one document never changes another.
Thermal Receipts
Small receipts for receipt printers at a counter, café or pickup point. Choose the paper width that matches your printer: 44mm, 57mm, 58mm, 76mm or 80mm. Premium adds kitchen copies and cashier names from your staff roster.
A4 Invoices & Credit Notes
Classic page-size invoices for your customers, with your logo, the billing address, every item, the tax summary and your bank details. Refunds get a credit note. With Premium, an invoice can also carry its e-invoice inside the PDF (a “hybrid” PDF/A-3 for Factur-X / ZUGFeRD).
Packing Slips
Warehouse sheets without prices: products, SKUs, variations, quantities and the shipping address, so your team can pick and pack the right items. Premium adds QR and barcodes.
Document Control (Premium)
Once an invoice is issued it is locked — it is never edited, only followed by a new document. The Document Control panel on the order screen shows every document of the order in one tree: the invoice, credit notes, corrected invoices, debit notes for extra charges, and advance, final and summary invoices. Customers see the same list in My Account, and your accountant can download a CSV of all issued documents from Billing Documents.
Printing Thermal Receipts
Thermal receipts are made for the narrow paper rolls used in shops and restaurants. Set them up once in WooCommerce > Settings > SemiAuto Invoicing > Thermal Receipt.
Pick the Right Paper Width
Look at your printer or its paper roll — the width is printed on the box (most common: 58mm and 80mm). Select the same width in the settings, then check the live preview. If text looks cut off on paper, your printer is probably set to a different width than the one you chose.
How Receipts Reach Your Printer
For security, SemiAuto does not talk to printers directly. It creates a ready-to-print PDF. Print it from the order screen, or let it print automatically: attach the receipt to an email that goes to your printer’s email-to-print address (Epson Connect, HP ePrint, Brother), or use a print service such as PrintNode that prints incoming PDFs.
E-Invoicing (9 Supported Formats)
An e-invoice is an invoice written as structured data (an XML file) instead of a picture of a page, so your customer’s accounting software can read it without anyone typing. Many governments and large companies now require them. SemiAuto Premium creates e-invoices in 9 official formats and checks each one against the format’s official rules before it is issued.
| Format | Where It Is Used | Peppol ID Scheme | What You Should Know |
|---|---|---|---|
| Peppol BIS Billing 3.0 | Europe, incl. Norway (EHF) | By country | The common European format, on the latest 3.0.21 rules. The buyer’s Peppol ID scheme depends on their country (for example 0208 Belgium, 0106 Netherlands, 0192 Norway). |
| PINT EU | EU Member States | By country | The newer Peppol international format for Europe, including national rules for Norway, Denmark, Italy, Sweden, Iceland, the Netherlands, Germany and Greece. |
| XRechnung 3.0.2 | Germany | 0204 | Required for German public-sector buyers. The buyer gives you a Leitweg-ID (their routing code) at checkout, and SemiAuto checks its format before the invoice is made. |
| Factur-X / ZUGFeRD | France & Germany | 0009 | A normal-looking PDF with the e-invoice hidden inside (PDF/A-3). Supports French Chorus Pro: the buyer’s SIRET, service code and engagement number are checked at checkout. |
| PINT AE | United Arab Emirates | 0235 | For sellers registered with the UAE Federal Tax Authority. Uses the 15-digit TRN and records the buyer’s registration type (Trade License, Emirates ID, Passport). |
| PINT A-NZ | Australia & New Zealand | 0151 / 0088 | Uses the Australian ABN (0151) or the New Zealand NZBN (0088), and shows GST in the tax currency. |
| PINT JP | Japan | 0188 | For Japan’s Qualified Invoice System. Uses the registration number (T + 13 digits) and marks reduced-rate (8%) items. |
| PINT SG | Singapore (InvoiceNow) | 0195 | Uses the Singapore UEN. Map each WooCommerce tax class to a Singapore GST category under Tax Mapping. |
| PINT MY | Malaysia (MyInvois) | 0230 | Uses the buyer’s TIN and registration number (BRN, NRIC or passport). Map each tax class to a Malaysian category under Tax Mapping. |
Which Format Does an Order Get?
SemiAuto decides for you, based on where your business is registered. Sales inside your own country, and sales between EU / EEA countries, use the buyer’s format. A German public buyer with a Leitweg-ID always gets XRechnung. Every other sale is issued in your own format as an export. If you are also registered for tax in the UAE, Australia, New Zealand, Japan, Singapore or Malaysia, add it under Foreign tax registrations in the XML (Peppol) tab and that country’s format is used instead. The routing preview on the same tab shows the result before you sell.
When an E-Invoice Is Refused
If something required is missing — for example the buyer’s tax number — SemiAuto does not send an invalid file. It shows a notice that names the missing item and where to add it (settings, the order box or checkout). All open notices are listed under Status & Diagnostics. Fix the data, then click Regenerate on the order.
Sending E-Invoices Over Peppol
Peppol is a secure network that delivers e-invoices straight into your customer’s accounting system — like email, but for invoices. To join it you need an account with a Peppol Access Point (a delivery service). SemiAuto Premium connects your store to two of them: StoreCove and A-Cube.
Connect Your Gateway
Open WooCommerce > Settings > SemiAuto Invoicing > Peppol Gateways, tick your gateway under Active Peppol Gateways and paste the API key from your StoreCove or A-Cube account. If you use both, choose a Primary Peppol Gateway and, if you like, switch on Fall Back to the Other Gateway. Each document is sent through one gateway only, and a credit note always follows the gateway of its invoice. You pay your gateway provider directly; SemiAuto adds no fees.
Track Every Delivery
The Receipt & Invoice Documents box below the order items shows each document’s status: Delivered (it arrived), Pending (still on its way) or Action required (it was rejected or could not be routed — the reason is shown). Statuses update automatically.
Buttons on the Order Screen
Verify Peppol ID checks that the buyer can receive e-invoices. Generate XML / Regenerate builds the e-invoice, Download XML saves it, and Transmit to StoreCove or Transmit to A-Cube sends it. Download Sending Evidence gives you proof of delivery.
National Networks (StoreCove)
Besides Peppol, StoreCove can deliver over national systems you switch on under Delivery Networks: Italy SDI, Spain FACe and FACeB2B, Poland KSeF, India IRP, and e-mail delivery for business buyers who have no Peppol ID.
Edited an E-Invoice by Hand?
If you change an XML or JSON file yourself, automatic sending stops for that order so your edit is never overwritten (setting: Require Manual Approval for Custom Edits, on by default). Send it with the Transmit button, or click Regenerate to start fresh.
Selling in Other Currencies
If a customer pays in a different currency than the one your tax office uses, some countries require the tax to be shown in your local currency too. SemiAuto Premium handles this for you — but it never guesses an exchange rate.
Where the Rate Comes From
The rate is taken, in this order, from the order itself, your multi-currency plugin (such as WOOCS), WooCommerce, or the built-in exchange-rate service (rates are refreshed every 12 hours; Norwegian krone rates can come from Norges Bank). The rate is saved on the order with its source and date. If no rate can be found, you are told — a rate of 1.0 is never assumed.
Two Currencies on One Invoice
Where the format requires it, the invoice shows the tax in your tax office’s currency (for example AED in the UAE, MYR in Malaysia, JPY in Japan). You can also add a second currency to every invoice total in the XML (Peppol) tab, and export invoices show the buyer’s local currency as the second currency.
Sending Documents by Email
SemiAuto attaches your documents to the emails WooCommerce already sends. You decide which email carries which document — nothing is attached until you choose, except the thermal receipt on the “New order” email to you.
Where to Choose Each Attachment
| Document | Setting (SemiAuto Invoicing tab) | Out of the Box |
|---|---|---|
| Thermal Receipt | Thermal Receipt > Attach to Emails | “New order” email |
| A4 Invoice | A4 Documents > Attach to Emails | You choose (e.g. “Completed order”) |
| Credit Note (Premium) | A4 Documents > Credit Note Attach to Emails | You choose (e.g. “Refunded order”) |
| Packing Slip | Packaging Slip > Attach to Emails | You choose |
| E-Invoice XML (Premium) | XML (Peppol) > Attach to Emails | You choose |
No Duplicate Files
With a hybrid PDF (Factur-X / ZUGFeRD), the e-invoice is already inside the A4 invoice. So when that invoice is attached to an email, the separate XML file is left out of the same email.
Refunds Become Credit Notes
When you refund an order in WooCommerce, a credit note is created for that refund. It refers back to the original invoice, so your customer and your accountant can see exactly what was corrected.
Details Picked Up Automatically
You don’t have to type the same information twice. SemiAuto reads tax numbers, bank details and product data from WooCommerce and from popular plugins you may already use.
Customer VAT Numbers
If a customer entered a VAT or tax number at checkout — through SemiAuto’s own checkout fields or plugins such as EU VAT, Germanized, YITH or German Market — it appears on the invoice automatically.
Your Bank Details
Fill in your account under WooCommerce > Settings > Payments > Direct bank transfer. The bank name, IBAN and BIC are then printed on your invoices and written into your e-invoices — no extra setup.
Product Details
The GTIN from WooCommerce’s own GTIN field is used (and checked) automatically. Premium adds optional product fields when an e-invoice needs them: Commodity Code (HS / HSN Code), Country of Origin, Price Base Quantity (for items priced per 100 or 1000) and Place of Supply of the Service.
Point-of-Sale Payments
If you sell in person with Chwazi POS, Oliver POS, FooSales or YITH POS, the payment method your cashier chose (cash, card, and so on) is shown clearly on the receipt.
Selling to Governments in Germany & France
Public offices in Germany and France only accept e-invoices, and they need a few extra codes from the buyer. SemiAuto Premium asks for these codes at checkout and checks them, so the invoice is accepted the first time.
Germany: XRechnung
A German public buyer gives you a Leitweg-ID — their invoice address code, for example 04011000-12345-67. The buyer enters it at checkout and SemiAuto checks that it is in the right format. Every such order gets an XRechnung automatically. On the order screen, the View Official KoSIT XRechnung Preview button shows the invoice the way the German office will see it.
France: Chorus Pro & Factur-X
French public buyers use the Chorus Pro portal. At checkout the buyer gives their 14-digit SIRET, and where required a service code and an engagement number (their purchase commitment). SemiAuto checks them and creates a Factur-X invoice: a normal PDF with the e-invoice inside.
Where Your Files Live & How They Stay Safe
Every PDF and XML is created on your own server — no outside service builds your documents. The files are stored in a protected folder, and only the right people can download them.
Protected Storage
Files are saved in wp-content/uploads/semiauto-invoicing/. SemiAuto adds protection files for Apache, LiteSpeed and IIS servers so nobody can open the folder in a browser, gives every file a name that cannot be guessed, and only lets the customer who placed the order (or a shop manager) download it. If the protection cannot be confirmed, documents are not served at all.
Using Nginx? Nginx ignores those protection files. Ask your host to add this rule: location ^~ /wp-content/uploads/semiauto-invoicing/ { deny all; return 403; } — customer downloads keep working.
Works with Fast Order Storage (HPOS)
SemiAuto is declared and tested compatible with WooCommerce High-Performance Order Storage (HPOS), the faster way WooCommerce stores orders. You don’t need to change anything.
Privacy & Multisite
SemiAuto works with the WordPress personal-data export and erase tools; invoices you must keep by law are kept. It can also be activated on WordPress Multisite networks.
For Developers: Hooks & Filters
Not a developer? You can skip this part. If you or your developer want to connect SemiAuto to other plugins, these hooks let you add data without editing the plugin. Put the code in a small custom plugin or your child theme’s functions.php.
Supply a Delivery Date
Some e-invoices need the delivery date. If your delivery plugin stores it somewhere SemiAuto doesn’t know, pass it in with ogpsr_delivery_date (date as Y-m-d).
React When a Document Is Issued or Sent
ogpsr_document_issued runs when a Premium document is issued; ogpsr_document_transmitted runs after an e-invoice is sent through a gateway.
Other Useful Hooks
ogpsr_universal_document_context ($doc, $order) — change the data used to build any PDF. ogpsr_xml_line_period ([‘start’, ‘end’], $item, $order) — billing period of an order line. ogpsr_document_storage_root ($dir) — store documents in another folder. ogpsr_privacy_retain_financial_records ($retain, $order) — keep or erase invoices on a data-erasure request. ogpsr_gateway_http_timeout ($seconds, default 30) — gateway request timeout. ogpsr_fs_loaded — runs once licensing has loaded.
Questions & Quick Fixes
Short answers to the questions store owners ask most — from logos and email attachments to e-invoices that need attention.
How do I make my receipt logo look sharp?
Upload a high-contrast PNG at least 600px wide (a transparent background prints best) under General > Logo. WebP and JPEG also work. SVG files are not accepted, to keep your documents print-safe and your server secure.
Why is my invoice not attached to customer emails?
Nothing is attached until you choose it. Go to WooCommerce > Settings > SemiAuto Invoicing > A4 Documents, select the emails under Attach to Emails (for example “Completed order”) and click Save. Receipts and packing slips have the same setting on their own tabs.
Why is the XML file not attached separately?
With a hybrid PDF (Factur-X / ZUGFeRD) the e-invoice is already inside the A4 invoice. When that invoice is attached to an email, SemiAuto leaves the separate XML out of the same email so your customer doesn’t get the same invoice twice.
How do I fix a mistake on an invoice I already issued?
Issued invoices are locked so your records stay trustworthy. Open the order and use Document Control (Premium): it issues a corrected invoice where the e-invoice format allows it, or a credit note plus a new invoice. For a price reduction, make a WooCommerce refund without restocking — a credit note is created for it.
Why was my e-invoice refused?
SemiAuto refuses to create an e-invoice that would break the official rules — for example when the buyer’s tax number is missing. The notice tells you what is missing and where to add it (settings, the order box or checkout). Open Status & Diagnostics to see all notices, fix the data and click Regenerate on the order.
Why did automatic sending stop on one order?
Someone edited that order’s XML or JSON file by hand. To protect the edit, automatic sending pauses (setting Require Manual Approval for Custom Edits). Click Transmit to StoreCove or Transmit to A-Cube to send it, or Regenerate to start again from the order.
My e-invoice was not delivered. What should I check?
Open the order and look at the status in the Receipt & Invoice Documents box below the order items. Click Verify Peppol ID to check the buyer can receive e-invoices, and make sure the buyer’s Peppol ID (with the right scheme, e.g. 0208, 0195, 0235) and your own tax number are filled in.
Where do the exchange rates on my invoices come from?
From the order itself, your multi-currency plugin, WooCommerce, or the built-in exchange-rate service (refreshed every 12 hours). The rate is saved on the order with its source and date. If no rate is found, SemiAuto tells you instead of guessing.
How do I show my bank details (IBAN / BIC) on invoices?
Add your account under WooCommerce > Settings > Payments > Direct bank transfer. SemiAuto prints the bank name, IBAN and BIC on your invoices and adds them to your e-invoices automatically.
Which e-invoice formats are supported?
Nine: Peppol BIS Billing 3.0 (including Norwegian EHF), PINT EU, XRechnung 3.0.2 (Germany), Factur-X / ZUGFeRD (France and Germany, incl. Chorus Pro), PINT AE (UAE), PINT A-NZ (Australia and New Zealand), PINT JP (Japan), PINT SG (Singapore) and PINT MY (Malaysia). They are part of SemiAuto Premium.
I changed an order. How do I update its documents?
Open the order and click Regenerate next to the document in the Receipt & Invoice Documents box. Documents that are not issued yet are rebuilt from the current order. An issued invoice is not rewritten — use Document Control to correct it.
Does SemiAuto work on WordPress Multisite?
Yes, SemiAuto can be activated on WordPress Multisite networks. Your license covers the number of sites in your plan.