Freelance Full-Stack Developer – PEPPOL BIS 3.0 Invoice Generator with Embedded PDF (CSV → PEPPOL XML) **UPDATED** Project Overview We need a secure, lightweight web portal that allows authorized users to upload a CSV file containing invoice data, automatically generates a valid PEPPOL BIS Billing 3.0 (UBL 2.1) XML invoice, embeds a visual PDF version inside the XML (PDF/A embedded as per PEPPOL requirements), and forwarded via Rest-API to site. The portal will be IP-restricted (whitelisted IPs only) – no public access or user accounts required at this stage. Core Functionalities Required 1. IP-based access control (single page app locked to one or several predefined static IP addresses) - is hosted local on a VM this would no be required 2. Simple, clean upload form (manual selection) for CSV files 3. CSV parsing and mapping to PEPPOL BIS Billing 3.0 (UBL 2.1) structure, using some static data for cross-refencing 4. Generation of 100% PEPPOL-valid XML including: - Invoice number, issue date, due date - Seller & buyer details (some fields fixed/hard-coded, others from CSV) - VAT numbers, company registration numbers, - Itemized lines with description, quantity, unit price, VAT rate/category, line total as per CSV - Tax totals, invoice total, payable amount - Payment means (fixed IBAN ) - Proper use of cac:AdditionalDocumentReference for embedding the visual PDF (with DocumentDescription “Visual representation”) 5. Automatic generation of a PDF/A invoice (matching the XML data) using a professional template 6. Embedding of the PDF/A as base64 inside the UBL XML (using the official PEPPOL mechanism) 7. Validation of the generated XML against the official PEPPOL BIS 3.0 Schematron and EN 16931 rules (using tools such as the official PEPPOL validator API or open-source libraries) 8. Send button for the final .xml file (ready to be sent via REST-API -- PEPPOL Access Point) Technical Requirements - XML generation: Use a mature UBL/PEPPOL library if available in your stack (e.g., phpexcel-ubl, ubl21-python, EConnect PEPPOL library, or generate via XSLT/templates) - PDF generation: wkhtmltopdf, WeasyPrint, Puppeteer, mPDF, or TCPDF with PDF/A compliance - CSV parsing: Robust handling of different delimiters, quotes, and encodings - Security: HTTPS only, IP whitelisting (middleware), CSRF protection, file size limits, no file storage on server after processing - Validation: Integrate the official PEPPOL validation artefacts or use the free validation API provided by the PEPPOL community Nice-to-Haves (bonus if you have experience) - Previous projects delivering PEPPOL or other e-invoicing formats (Factur-X/ZUGFeRD, EN 16931, UBL, CII) - Experience registering/submitting to PEPPOL Access Points (OpenPEPPOL, Pagero, Storecove, etc.) Deliverables - Fully working web application (source code + documentation) - Sample CSV template + documentation of required columns - Brief admin guide on how to add/remove allowed IP addresses - Dockerfile or clear deployment instructions (can be hosted on basic VPS or cloud VM) Full Time scale and Costings