Skip to main content
Product details are displayed in English. Translations coming soon.
Denmark OIOUBL / Nemhandel — A build-to-order Frappe app that turns ERPNext Sales Invoices into validated OIOUBL documents an — 1/1مثالی پیش منظر

A build-to-order Frappe app that turns ERPNext Sales Invoices into validated OIOUBL documents and exchanges them

over Nemhandel/Peppol without leaving the ERP.

ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site.

Denmark OIOUBL / Nemhandel کیا ہے؟

A build-to-order Frappe app that turns ERPNext Sales Invoices into validated OIOUBL documents and exchanges them over Nemhandel/Peppol without leaving the ERP. ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

اہم خصوصیات

Frappe app with its own module, DocTypes and fixtures — installed via `bench get-app` / `bench install-app`, never as ad-hoc site customisations
`Danish E-Invoicing Settings` single DocType for sender endpoint (CVR/GLN), access-point credentials, environment switching and per-company defaults
OIOUBL 2.1 and Peppol BIS Billing 3.0 document builders driven by the same Sales Invoice posting, so both profiles stay in sync
XSD schema plus Schematron business-rule validation before any transmission attempt, with the failing rule and field surfaced on the document
`hooks.py` doc events on Sales Invoice `on_submit` / `on_cancel` that enqueue generation and delivery as background jobs — no blocked UI on submit
Tax mapping layer from ERPNext Item Tax Templates and Tax Categories to Danish VAT categories, rates and exemption reason codes
Master-data mapping for UOM to UN/ECE Rec 20 codes, Payment Terms to UBL payment means, and Company/Customer addresses to UBL party blocks
Custom fields shipped as fixtures on Customer and Sales Invoice for EndpointID scheme, GLN/EAN, buyer reference and contract/order reference required by Danish public buyers
`E-Invoice Transmission` DocType as the audit spine — transmitted XML stored as a private File, plus message id, status history and transition timestamps
Scheduler event that polls the access point for delivery receipts and message-level responses, writing status back to the invoice timeline
Rejection handling with a correction workflow that links the corrective Credit Note to the original transmission via UBL `BillingReference`
Whitelisted API methods for re-validate, retry and download-XML, callable from the Frappe REST API or a client script button
Role profile and permission separation so transmission and retry rights are distinct from ordinary invoice entry and approval
Optional inbound lane: ingest received OIOUBL/Peppol documents from the access point and stage them as draft Purchase Invoices for review
Compliant archiving of the exact transmitted payload and its responses, retrievable per invoice for audit without leaving ERPNext

آرڈر پر تیار، مکمل طور پر آپ کے لیے

خود سیٹ اپ کی ضرورت نہیں — ایک کام کرنے والی ایپ جو ECOSIRE بناتا، انسٹال اور سپورٹ کرتا ہے۔

  1. 1

    آپ آرڈر دیتے ہیں

    ایک بار کی تعمیر کی قیمت سے آغاز کریں۔ آغاز پر ہم آپ کے ساتھ مل کر دائرہ کار طے کرتے ہیں۔

  2. 2

    ہم بناتے اور انسٹال کرتے ہیں

    ECOSIRE اسے آپ کے ERPNext پر بناتا، ترتیب دیتا اور انسٹال کرتا ہے۔

  3. 3

    لائیو + معاونت

    آپ تقریباً ایک کاروباری ہفتے میں لائیو ہو جاتے ہیں، گو لائیو کے بعد دو ہفتوں کی معاونت کے ساتھ۔ ہمارے فراہم کردہ کوڈ کی خرابیاں مفت درست کی جاتی ہیں۔

تکنیکی تفصیلات

ERPNext ہم آہنگی
—
لائسنس
لائسنس کی تصدیق درکار ہے
Python کی ضرورت
Python 3.10+
ڈیٹابیس
MariaDB 10.6+

اس مصنوع کے بارے میں

Danish public-sector buyers will not accept a PDF. If you invoice a municipality, a region, or a state institution in Denmark, the document has to arrive as a structurally valid OIOUBL XML delivered through Nemhandel — and increasingly through Peppol BIS, which Danish practice now runs alongside OIOUBL. ERPNext gives you a clean Sales Invoice, a tax template, a customer master and a print format, but nothing that produces a schema-valid OIOUBL-2.1 invoice, resolves the receiver's endpoint, transmits it, or tells you what happened after it left. Most finance teams close the gap with a portal: someone re-keys the invoice into a web form, downloads a receipt, and files it in a shared drive. That works until volume rises, until a credit note has to reference the original invoice, or until an auditor asks you to prove which exact XML was sent for a given posting.

We build a proper Frappe app — its own repo, its own module, installed with bench get-app and bench install-app — that closes the loop inside ERPNext. A Danish E-Invoicing Settings single DocType holds the sender endpoint (CVR/GLN scheme identifiers), access-point credentials, environment (test/production) and per-company defaults. A child mapping DocType translates ERPNext master data into UBL semantics: Item Tax Templates to Danish VAT categories and rates, UOM to UN/ECE Rec 20 codes, Payment Terms to UBL payment means, and Company Address into the AccountingSupplierParty block. Fields we add live on Customer and Sales Invoice as custom fields shipped in fixtures — EAN/GLN, EndpointID scheme, buyer reference (Rekvirent/contract reference), and the order reference a public buyer requires — so nothing is stored in a stray text field the next upgrade will lose.

Generation and delivery are driven by hooks.py doc events. on_submit on Sales Invoice enqueues a background job that renders the UBL from a Jinja/lxml builder, validates it against the OIOUBL/Peppol BIS schema plus the Schematron business rules, and refuses to transmit on a hard failure — the invoice stays submitted in ERPNext while the delivery record shows exactly which rule broke and on which field. Transmission goes through your chosen Nemhandel access point over its REST/AS4 interface; a dedicated E-Invoice Transmission DocType is the audit spine, storing the generated XML as a private File, the message identifier, timestamps, and every status transition. A scheduler event polls for message-level responses and delivery states, so a rejection lands as a comment and a notification on the invoice rather than in someone's inbox. Rejections open a correction workflow: the app links the corrective Credit Note or re-issued invoice back to the original transmission, carries the correct BillingReference, and keeps both documents in the archive chain. The same posting produces both machine and human output — the validated XML and a matching print format — so what the customer reads and what the system sent can never drift. Whitelisted methods expose retry, re-validate and download-XML to the Frappe REST API and to client-script buttons, and role profiles keep transmission and retry rights separate from ordinary invoice entry.

Delivery is build-to-order, not a marketplace download. After a scoping call we confirm your Frappe/ERPNext version (v15 or v16), your access-point provider, whether you also need inbound Purchase Invoice ingestion, and your VAT and archiving requirements. We then build the app against your version, install it on a staging bench, run UAT with your own invoices and your provider's test endpoint, and only then deploy to production with a rollback plan. Typical delivery is one working week from confirmed scope. You receive the full source in a git repository you own, so nothing about your compliance path is locked to us.

What you get

  • Installable Frappe app source code built and tested against your exact Frappe/ERPNext version (v15 or v16)
  • Installation and configuration on your bench, including access-point credentials, settings and fixture deployment
  • Technical documentation: DocType reference, hook and scheduler map, mapping tables, API methods and configuration guide
  • End-user guide plus a live training session for your finance team covering issue, reject and correct flows
  • UAT on a staging bench against your provider's test endpoint, with a documented rollback plan before production cutover
  • Post-go-live support window for defect fixes and configuration adjustments after deployment
  • Handover of the private git repository, with commit history and branch/tag conventions, so you own the code
  • Configuration handbook for onboarding additional companies or Danish entities on the same site

Who this is for

Finance Manager at a Danish supplier to the public sector

Invoices municipalities, regions or state institutions and must deliver OIOUBL over Nemhandel to get paid at all. Wants issuing to be a normal ERPNext submit, with rejections visible on the invoice instead of arriving as an email from a portal.

Group Controller in a multi-entity company with a Danish subsidiary

Runs one ERPNext site across several countries and needs the Danish entity compliant without forking the chart of accounts or the invoicing process. Needs per-company settings, clean VAT mapping and an audit trail their statutory auditor accepts.

ERP / IT Manager responsible for the Frappe bench

Owns upgrades and does not want compliance logic living in server scripts and custom fields that a `bench migrate` can silently break. Wants a versioned app in a git repo, documented hooks, and a rollback plan for every deployment.

Accounts Receivable lead handling daily invoice volume

Sends and chases invoices every day and needs to know which documents were delivered, which were rejected and why, and how to issue a linked correction without re-keying anything into a supplier portal.

How Denmark OIOUBL / Nemhandel Compares

CriterionECOSIRECustom BuildCompetitorERPNext نیٹو
OIOUBL / Peppol document generationSchema- and Schematron-validated UBL built from the Sales Invoice posting, both profiles from one mapping layerHand-rolled XML templates that pass today and break on the next OIOUBL releaseGeneric Peppol export, often without Danish OIOUBL specifics or buyer-reference handlingPDF print formats only — no UBL output of any kind
Delivery over NemhandelConnector to your chosen access point, queued via background jobs with full status pollingUsually a manual upload to the provider portal, or a script nobody owns after the developer leavesOften bound to one specific access-point vendor you must switch toNot available — delivery happens outside ERPNext entirely
Tax and master-data mappingConfigurable mapping from Item Tax Templates, Tax Categories and UOM to UBL codes, per companyHard-coded rates and codes in script logic; every new tax case is a code changeFixed assumptions that rarely match a real Danish chart of accountsTax templates exist but carry no UBL category or exemption-reason semantics
Rejection and correction handlingResponses written to the invoice timeline, with a correction workflow linking credit notes via UBL BillingReferenceRejections arrive by email and are reconciled by handStatus field updated, correction linkage usually left to the userNo concept of e-invoice delivery status at all
Audit trail and archivingExact transmitted XML and every response stored per invoice as a retrievable transmission recordXML often kept only in logs or a shared drive, hard to tie back to a postingVaries; frequently stores only the last payloadStandard document versioning only — no payload archive
Upgrade resilienceVersioned Frappe app with fixtures and documented hooks, built for your v15 or v16 siteServer scripts and custom fields that a `bench migrate` can silently breakDepends on the maintainer keeping pace with your ERPNext versionUpgrades cleanly, but there is nothing compliance-related to upgrade
Fit to your processScoped to your entities, buyers, VAT cases and access point before a line is writtenFully bespoke, but you carry the specification and the compliance researchYou adapt your process to the app's assumptionsGeneric invoicing with no Danish-specific process support
Ownership and supportPrivate git repo handed over, documentation, training and a post-go-live support windowYou own it, and you also own every future fix and regulatory changeSubscription with support quality tied to the vendor's roadmapCommunity ERPNext support only for the core, nothing for OIOUBL

Frequently Asked Questions about Denmark OIOUBL / Nemhandel

How long does delivery take, and what exactly do I get?

This is a build-to-order app, not an instant download. Typical delivery is one working week from confirmed scope. We start with a short scoping call, confirm your Frappe/ERPNext version, access-point provider and whether inbound documents are in scope, then build against your version, run UAT on staging with your own invoices, and deploy to production with a rollback plan. You receive installable source code, documentation, training and a git repository you own.

Do I still need a Nemhandel access point?

Yes. Nemhandel and Peppol delivery is performed by a registered access point, and the app integrates with the one you choose or already use. We implement the connector against your provider's REST or AS4 interface, store the credentials in the settings DocType, and handle the configuration of your endpoint identifiers as part of the work. We do not resell the access-point subscription.

Which Frappe and ERPNext versions are supported?

We build for Frappe/ERPNext v15 or v16 — you tell us which one your site runs, and the app is developed and tested against exactly that version rather than a lowest-common-denominator build. If you are mid-upgrade, we scope the target version so the app lands on the site you will actually be running.

What happens when a document is rejected?

Validation failures are caught before transmission: the app runs schema and Schematron checks and shows the failing rule and field on the document, so nothing invalid leaves your site. If the receiver or access point rejects a delivered message, the scheduler picks up the message-level response, writes the status and reason onto the invoice timeline and notifies the responsible role. The correction workflow then links your corrective Credit Note or re-issued invoice to the original transmission with the right UBL reference.

How are support and updates handled after go-live?

Every build includes a post-go-live support window for defect fixes and configuration adjustments. Beyond that, ongoing support and changes driven by new OIOUBL/Peppol releases or Danish regulatory updates are handled under a separate maintenance agreement. Because you own the git repository, you are never blocked from having someone else maintain the code.

Can it also receive supplier invoices, not just send?

Yes, as an in-scope option. The inbound lane polls your access point for received OIOUBL or Peppol documents, parses them, and stages draft Purchase Invoices with supplier, item and tax matching against your ERPNext master data for human review. Tell us at scoping and it is included in the build; it is not enabled silently.

Will this survive a bench migrate or an ERPNext upgrade?

It is a proper app with versioned DocTypes, fixtures and hooks — not a pile of custom fields and server scripts. Custom fields ship as fixtures so they are reproducible, and the app is pinned to a branch for your version. Upgrades across major ERPNext versions are a scoped piece of work, and the documentation includes the exact hook and scheduler surface a reviewer needs to check.

آرڈر پر تیار
Customer Loyalty & Points Program
قیمت کا تخمینہ طلب کریں

Denmark OIOUBL / Nemhandel

A build-to-order Frappe app that turns ERPNext Sales Invoices into validated OIOUBL documents and exchanges them over Nemhandel/Peppol without leaving the ERP. ECOSIRE builds, installs and supports it for your Frappe/ERPNext v15 or v16 site.

  • Frappe app with its own module, DocTypes and fixtures — installed via `bench get-app` / `bench install-app`, never as ad-hoc site customisations
  • `Danish E-Invoicing Settings` single DocType for sender endpoint (CVR/GLN), access-point credentials, environment switching and per-company defaults
  • OIOUBL 2.1 and Peppol BIS Billing 3.0 document builders driven by the same Sales Invoice posting, so both profiles stay in sync
  • XSD schema plus Schematron business-rule validation before any transmission attempt, with the failing rule and field surfaced on the document

قیمت کا تخمینہ طلب کریں

ہمیں Denmark OIOUBL / Nemhandel کے لیے اپنی ضروریات بتائیں اور ہم آپ کو قیمتیں، لائسنس کے اختیارات اور ایک مخصوص تجویز بھیجیں گے — عام طور پر ایک کاروباری دن میں۔

ابھی کوئی ادائیگی نہیں۔ یہ ہماری ٹیم کو قیمت کی درخواست بھیجتا ہے — ہم قیمت اور اگلے اقدامات کے ساتھ ای میل کے ذریعے رابطہ کریں گے۔