Skip to main content
Product details are displayed in English. Translations coming soon.
Norway SAF-T Financial for ERPNext — A build-to-order ERPNext app that produces validated Norwegian SAF-T Financial XML direc — 1/1مثالی پیش منظر

A build-to-order ERPNext app that produces validated Norwegian SAF-T Financial XML directly from your ERPNext

general ledger, tax masters and party records.

ECOSIRE scopes, builds, installs and supports it on your Frappe bench — it is not a marketplace download.

Norway SAF-T Financial for ERPNext کیا ہے؟

A build-to-order ERPNext app that produces validated Norwegian SAF-T Financial XML directly from your ERPNext general ledger, tax masters and party records. ECOSIRE scopes, builds, installs and supports it on your Frappe bench — it is not a marketplace download. Built to order by ECOSIRE for ERPNext v15, v16 — indicative price from $999.00 USD; request a quote for a scoped proposal.

اہم خصوصیات

Dedicated Frappe app and module installed on your bench with app-scoped DocTypes, fixtures and role profiles — no core patches, so `bench update` stays clean
`SAF-T Export` DocType: choose company, fiscal period and date range, submit, and receive a validated XML file attached to the record
SAF-T Financial XML serialisation covering Header, MasterFiles (GeneralLedgerAccounts, Customers, Suppliers, TaxTable, AnalysisTypeTable) and GeneralLedgerEntries
Persistent account mapping DocType linking every ERPNext `Account` to its Norwegian standard account, with a validate hook that blocks unmapped or ambiguous accounts at submission
MVA tax-code mapping from your `Sales Taxes and Charges Template`, `Purchase Taxes and Charges Template` and `Item Tax Template` rows to standard tax codes, including reverse-charge and zero-rated cases
XSD validation against the official SAF-T Financial schema before an export can be marked ready, with a line-level error report naming the offending `GL Entry` and voucher rather than a byte offset
Batched background generation via `frappe.enqueue` with progress written to the document, so multi-year ledgers never block a web worker or hit a request timeout
Human-readable print format rendered from the same posting as the XML — one source of truth for the file the authority receives and the file your controller reviews
Rejection and correction workflow: record the authority's rejection reason on the export, raise a linked correction export against the amended ledger, retain both versions
Accounting Dimension support mapped into the `Analysis` structure so cost centre, project or a custom dimension travels into the file instead of being dropped
Whitelisted methods over the Frappe REST API to trigger generation, poll status and fetch the resulting file from a portal, RPA bot or external scheduled task
`hooks.py` doc events on `Account`, `Customer`, `Supplier` and tax templates that flag new records as unmapped at creation, so gaps surface long before export day
Optional scheduler event that pre-validates the open period nightly and notifies the finance owner when a mapping gap or unbalanced voucher would break the next export
Immutable archive: every generated file, validation result, submitter and timestamp retained on the export document alongside the standard Frappe version and comment trail
Role profiles separating mapping configuration, export generation and submission confirmation, with per-DocType and per-company permissions
Multi-company aware and built and tested for Frappe/ERPNext v15 and v16 against your own chart of accounts

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

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

  1. 1

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

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

  2. 2

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

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

  3. 3

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

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

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

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

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

When Skatteetaten asks for a SAF-T Financial file, the clock starts. Norwegian bookkeeping rules require accounting data in the standard SAF-T Financial XML structure — a header identifying the reporting entity, a master-files block covering general ledger accounts, customers, suppliers, tax codes and analysis dimensions, and a GeneralLedgerEntries block carrying every journal line for the requested period. ERPNext already holds all of that data, but it holds it as GL Entry, Account, Customer, Supplier, Sales Taxes and Charges Template and Accounting Dimension records — not as the Norwegian standard account grouping and MVA tax-code structure the schema expects. Finance teams end up exporting to spreadsheets, hand-mapping the chart of accounts, hand-building XML, and discovering the mismatch only when the file is rejected.

ERPNext core stops well short of this. It has no SAF-T schema awareness, nowhere to persist a mapping from your Account tree to the Norwegian standard accounts, no MVA tax-code mapping table, no XML serialiser, no XSD validator, and no record of what was sent and when. Accounting Dimensions can carry the analysis data, but nothing translates them into the Analysis structure of the file. Every request becomes a manual project, and any correction after a rejection means starting again from a spreadsheet nobody trusts.

ECOSIRE builds this as a proper Frappe app installed on your bench — its own module, its own DocTypes, its own permissions, no patched core files. A Norway SAF-T Settings single DocType holds the reporting entity, the target file version and the sender registration details. Mapping DocTypes hold the account-to-standard-account and tax-template-to-MVA-code relationships, with a validate hook that refuses submission on an incomplete mapping so gaps surface before an export rather than after. A SAF-T Export DocType is the working record: choose company and date range, submit, and a background job enqueued via frappe.enqueue streams GL Entry rows in batches, assembles the master-files and general-ledger-entries blocks, and writes the XML as a File attached to the export. The same posting is rendered twice — machine XML for Skatteetaten and a human-readable print format on the same document — so your controller reviews exactly what the authority receives. Every generated file is validated against the official XSD before the export can be marked ready, with a line-level error report naming the offending voucher instead of an XML byte offset. Whitelisted methods expose generation and status over the Frappe REST API, hooks.py doc events on Account, Customer, Supplier and the tax templates flag newly created records as unmapped at creation time, and an optional scheduler event pre-validates the open period nightly so the file is already known-good when the request arrives.

Rejection handling is a first-class workflow. A rejected submission is recorded against the export with the authority's reason, and a correction export can be raised that references the original, re-runs against the amended ledger, and preserves both versions. Nothing is overwritten: every generated file, its validation result, its submitter and its timestamp stay attached to an immutable record with the standard Frappe document trail, and role profiles separate who may configure mappings, who may generate, and who may confirm a submission.

This is build-to-order. There is no instant download — ECOSIRE builds the app for your ERPNext instance, against your chart of accounts, your MVA setup and your Frappe/ERPNext version (v15 or v16), on your own bench or a Frappe Cloud private bench. Delivery starts with a scoping call, moves to a fixed written scope, then build, UAT on a staging copy of your own data, and go-live with a documented rollback plan and a post-go-live support window. Typical delivery is one working week from confirmed scope. You receive the full source and the git repository, so the app is yours to keep, audit and extend.

What you get

  • Installable source code for the Frappe app, built and tested against your exact Frappe/ERPNext version (v15 or v16)
  • Installation and configuration on your bench or Frappe Cloud private bench, including app install, migrate, fixtures and role-profile setup
  • Initial account and MVA tax-code mapping loaded from your live chart of accounts and reviewed with your finance owner
  • Technical documentation: DocType reference, hooks and scheduler events, whitelisted REST endpoints, and the mapping data model
  • User guide plus a live training session for the finance team covering generation, validation errors, rejection handling and correction exports
  • UAT on a staging copy of your production data, with a written test script and a documented rollback plan before go-live
  • Post-go-live support window for defects and questions against the delivered scope
  • Full git repository handover — the source is yours to keep, audit and extend

Who this is for

Financial Controller / Regnskapssjef

Owns the response to a Skatteetaten request and signs off on what leaves the building. Needs the XML plus a readable rendering of the same posting so the numbers can be reviewed before submission, and a clear record of what was sent, by whom and when.

Group Finance Manager for a Norwegian entity

Runs ERPNext across several companies where one entity carries Norwegian obligations. Needs SAF-T generation scoped per company without restructuring the group chart of accounts or disturbing reporting for the other entities.

ERP / Frappe Systems Administrator

Maintains the bench and lives with whatever gets installed. Needs a properly packaged app with its own DocTypes and hooks rather than core patches or ad-hoc server scripts, so `bench update` and version upgrades stay predictable — plus the git repository to review the code.

External Accountant or Audit Advisor

Advises on Norwegian bookkeeping compliance and is often the one reading the rejection notice. Needs the mapping between the client's chart of accounts and the standard accounts to be visible, editable and versioned rather than buried in a spreadsheet.

How Norway SAF-T Financial for ERPNext Compares

CriterionECOSIRECustom BuildCompetitorERPNext نیٹو
SAF-T Financial XML outputPurpose-built serialiser covering Header, MasterFiles and GeneralLedgerEntries, generated from your live ledgerAchievable, but you write and test the serialiser against the schema yourselfOften generic or built for another country's SAF-T variant; Norwegian coverage frequently partialNone — ERPNext core has no SAF-T concept
Chart of accounts mappingPersistent mapping DocType with submit-time validation that blocks unmapped accountsWhatever your developer builds; usually a spreadsheet import with no ongoing validationFixed mapping assumptions that rarely fit a group chart of accountsAccounts exist, but nothing maps them to standard accounts
MVA / tax code handlingMapped from your actual sales, purchase and item tax templates, including reverse charge and zero-ratedBuilt once against today's templates, then drifts as tax setup changesGeneric tax table, rarely aware of ERPNext template structureTax templates exist; no standard tax-code translation
Validation before submissionXSD validation with line-level errors naming the offending GL Entry and voucherDepends on scope; often validated only after a rejection arrivesSchema check at best, with errors reported as XML offsetsNo validation of any kind
Rejection and correctionModelled workflow — reason recorded, linked correction export, both versions retainedUsually re-run the script and overwrite; history left to conventionRegenerate only; correction lineage typically not modelledNot applicable
Large-period performanceBatched background job via `frappe.enqueue` with progress on the documentFrequently synchronous first, then reworked after the first timeoutVaries; synchronous generation is commonNot applicable
Archiving and audit trailImmutable export records with file, validation result, submitter and timestamp, plus Frappe version historyFiles land wherever the script writes themFile attachment with limited submission historyStandard document history only; no export concept
Ownership and upgrade pathFull source and git repo handed over; app-scoped with no core patches; built for v15/v16You own it, and you own every upgrade and bug with itVendor-controlled; fixes and upgrades follow their roadmapUpgrades with ERPNext, but the capability is simply absent

Frequently Asked Questions about Norway SAF-T Financial

How long does delivery take, and can I download this today?

No — this is build-to-order, not a marketplace download. ECOSIRE builds it for your ERPNext instance against your chart of accounts, your MVA setup and your Frappe version. Typical delivery is one working week from confirmed scope: a short scoping call, then a fixed written scope, then build, UAT on staging, and go-live with a rollback plan.

What happens after go-live — how are support and updates handled?

Delivery includes a post-go-live support window for defects and questions against the delivered scope. You also receive the full source and git repository, so your own team or any Frappe developer can maintain it. Beyond the included window we offer ongoing support and version-upgrade work — for example carrying the app from v15 to v16, or adapting to a schema revision — as a separately quoted engagement, never billed by surprise.

Does this work with my existing chart of accounts, or must I restructure it?

It works with your existing accounts and never touches your `Account` tree. A persistent mapping DocType links each of your accounts to the Norwegian standard account, so operational reporting stays exactly as it is while the export speaks the standard's language. The initial mapping is loaded from your live chart during delivery and reviewed with your finance owner.

What happens if Skatteetaten rejects the file?

Rejection is a modelled workflow, not a restart. You record the authority's reason on the export document, then raise a linked correction export that re-runs against the amended ledger. Both the original and the correction are retained with their files, validation results, submitters and timestamps — nothing is overwritten, so the trail shows exactly what was sent and what replaced it.

Which Frappe and ERPNext versions are supported, and does it work on Frappe Cloud?

We build and test for Frappe/ERPNext v15 and v16. It installs as a normal Frappe app on a self-hosted bench, and on Frappe Cloud it requires a private bench, since custom apps cannot be installed on a shared bench. Tell us your version and hosting on the scoping call and we build against that target.

Will generating a multi-year export slow the system down or time out?

No. Generation runs as a background job via `frappe.enqueue` and streams `GL Entry` rows in batches instead of loading a whole period into memory, with progress shown on the export document. Users keep working while the file builds, and long date ranges do not tie up a web worker.

Can we trigger exports from outside ERPNext?

Yes. Whitelisted methods exposed over the Frappe REST API let a portal, RPA bot or external scheduled task trigger generation, poll status and fetch the resulting file. Access is governed by the same Frappe permissions and role profiles as the UI — API access does not bypass who may generate or confirm a submission.

آرڈر پر تیار
Offline-First POS for ERPNext
قیمت کا تخمینہ طلب کریں

Norway SAF-T Financial

A build-to-order ERPNext app that produces validated Norwegian SAF-T Financial XML directly from your ERPNext general ledger, tax masters and party records. ECOSIRE scopes, builds, installs and supports it on your Frappe bench — it is not a marketplace download.

  • Dedicated Frappe app and module installed on your bench with app-scoped DocTypes, fixtures and role profiles — no core patches, so `bench update` stays clean
  • `SAF-T Export` DocType: choose company, fiscal period and date range, submit, and receive a validated XML file attached to the record
  • SAF-T Financial XML serialisation covering Header, MasterFiles (GeneralLedgerAccounts, Customers, Suppliers, TaxTable, AnalysisTypeTable) and GeneralLedgerEntries
  • Persistent account mapping DocType linking every ERPNext `Account` to its Norwegian standard account, with a validate hook that blocks unmapped or ambiguous accounts at submission

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

ہمیں Norway SAF-T Financial کے لیے اپنی ضروریات بتائیں اور ہم آپ کو قیمتیں، لائسنس کے اختیارات اور ایک مخصوص تجویز بھیجیں گے — عام طور پر ایک کاروباری دن میں۔

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