On this page
  1. No document was generated
  2. Status stays scheduled or queued
  3. Message Queue mode
  4. Scheduled mode
  5. Status is error
  6. Factur-X is selected but rejected
  7. XML exists but hybrid PDF does not
  8. Files are missing
  9. Filename is not what the pattern suggests
  10. Amount verification cannot find the file
  11. XRechnung is rejected by a portal
  12. PEPPOL provider rejects the document
  13. Email has no attachment
  14. Customer cannot download a document
  15. Useful support bundle
  16. Related

Common Issues

Start with the document's store view, numeric entity ID, selected format, mode and exact status. Most problems fall into one of four places: source data, generation, storage or downstream delivery.

No document was generated

  1. Open the invoice or credit memo and read its E-Invoice Information section.
  2. Confirm Enable E-Invoicing in the document's store view.
  3. For credit memos, also confirm Enable Credit Memo E-Invoicing.
  4. Check that the generation mode is not disabled and that the Generation Trigger matches the event you used (invoice creation vs. invoice payment; Manual Only suppresses automatic processing entirely).
  5. Try one manual generation action.

If manual generation works, the formatter and source data are probably usable; continue with queue/cron diagnostics. If it fails, work from the stored error instead of changing several settings at once.

Status stays scheduled or queued

Message Queue mode

Confirm the correct consumer is supervised and running:

php bin/magento queue:consumers:list
php bin/magento queue:consumers:start mageb2b.einvoice.generate
php bin/magento queue:consumers:start mageb2b.einvoice.generate.creditmemo

The first consumer handles invoices; the second handles credit memos. Also inspect your configured queue backend for backlog or failed messages.

Scheduled mode

Confirm Magento cron is running and inspect cron_schedule for the single worker:

Job Schedule
einvoice_process_scheduled minute 00 every hour

The worker processes due scheduled rows per store up to each flow's Scheduled Batch Size (default 100) and reclaims queued/processing rows older than the flow's Recovery Timeout (Minutes) (default 30). A scheduled row that never advances usually means cron is not running, the store is disabled, or the batch is consumed by earlier rows.

Running this once can help diagnose scheduling:

php bin/magento cron:run --group=default

It does not replace the production system cron.

Status is error

Open the document and copy the exact error message. Then check:

  • store-view seller/company data;
  • billing address, company and VAT ID on the order;
  • selected format, profile or XRechnung version;
  • payment terms and payment means code;
  • storage path and write access;
  • Magento's normal PDF generation for hybrid formats.

Correct the cause before retrying — error rows are not retried automatically; use the detail-page Generate E-Invoice action (it applies force for error) or REST with force: true. No retry can repair missing or wrong business data.

Factur-X is selected but rejected

Confirm that Enable E-Invoicing is enabled and that Default B2B Format is Factur-X in the invoice's store view. The formatter reads that setting. Do not create a hidden database setting as a workaround.

XML exists but hybrid PDF does not

ZUGFeRD and Factur-X depend on Magento's PDF renderer before the XML is embedded.

  1. Generate the normal Magento invoice or credit-memo PDF.
  2. Confirm horstoeko/zugferd is installed.
  3. Review logs for Hybrid PDF preparation failed or an embed error.
  4. Check the stored PDF path and actual file.
  5. Verify memory, disk space and media-directory access.

XRechnung, EN 16931 and PEPPOL BIS are XML-only; the absence of an e-invoice PDF is expected.

Files are missing

Check Storage Strategy first.

  • Permanent writes XML and, for hybrid formats, PDF below the configured path under Magento's private var/ directory (default var/einvoice/).
  • On demand intentionally leaves no permanent files and regenerates when an action asks for the document.

Do not apply blanket chmod -R or chown -R commands copied from a guide. Compare the var/ storage directory with the ownership and deployment permissions used by the rest of your Magento installation.

Filename is not what the pattern suggests

The file managers replace entity/increment ID, {order_increment_id}, format, type, date and datetime tokens — see the full list in the Configuration Guide. An unrecognized token is not expanded; the filename sanitizer then turns its braces and other unsafe characters into dashes, so a name like invoice-000042-ordernumber-zugferd.xml points at a misspelled variable. A stored file whose name still shows an -order_increment_id- fragment was generated before the module learned that variable — regenerate the document to produce the corrected name.

Amount verification cannot find the file

einvoice:verify-amounts --invoice-id / --creditmemo-id load the persisted private XML artifact of that entity directly. To check a file on disk instead, pass its path with --file:

php bin/magento einvoice:verify-amounts --file=var/einvoice/<actual-file>.xml

The command cross-checks the XML's monetary values against Magento's totals (option --tolerance, default 0.01 in the invoice currency). The reader is not a PEPPOL UBL validator.

XRechnung is rejected by a portal

The internal validator intentionally does not require a Leitweg-ID for its B2B use case. A public-sector receiver can require that value and additional national rules.

Confirm the selected XRechnung version, seller contact, buyer/routing reference and the portal's current rule set. The extension generates XML but does not perform portal submission.

PEPPOL provider rejects the document

Check the complete exchange contract:

  • seller endpoint ID and scheme;
  • buyer endpoint and scheme;
  • actual participant registration;
  • BuyerReference rather than its invoice-number fallback;
  • CustomizationID and ProfileID;
  • provider business-rule or Schematron report.

Magento's generated status means the UBL file was created. It is not a network delivery status.

Email has no attachment

Confirm that attachments are enabled for the correct flow and store view. Then check the strategy:

  • automatic: PDF for hybrid, XML for XML-only;
  • PDF only: nothing for an XML-only format;
  • both: only content that actually exists is attached.

With queued or scheduled generation, the transactional email may be sent before the document exists. Align email timing with generation or use an integration that sends after success.

Customer cannot download a document

The storefront links require a logged-in customer who owns the invoice or credit memo and a generated document. Check the five Customer Account Downloads switches first — invoice XML, invoice PDF, invoice XML ZIP, credit-memo XML and credit-memo PDF can be enabled separately and are all off by default. PDF downloads exist only for hybrid formats; XRechnung, EN 16931 and PEPPOL BIS produce XML only.

Useful support bundle

Provide:

  • installed package and Magento compatibility details;
  • store view and selected format/profile;
  • numeric invoice or credit-memo entity ID;
  • mode, trigger and current status;
  • exact sanitized error;
  • relevant system.log/exception.log lines;
  • validator output without customer or bank data.