Norway

This section describes the Norway reports appendix.

Reference Materials

The following link contains relevant material helpful in understanding the NSAFT report, field mappings (such as mandatory and optional fields), and VAT codes:

https://www.skatteetaten.no/bedrift-og-organisasjon/starte-og-drive/rutiner-regnskap-og-kassasystem/saf-t-regnskap/dokumentasjon/

Note: SKAT updates documents periodically, and you must download the most recent versions.

The export is based on the XML Schema. To know more, visit the following link:

www.github.com/skatteetaten/saf-t

This version of the SAF-T data export is limited to the general ledger level, including customer and supplier transactions. Necessary master data is also included.

Norway - SAFT Tags and Mappings

Tags Dialogs Field/Value Technical Details
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AuditFile xmlns="urn:StandardAuditFile-Taxation-Financial:NO">
<Header>
<AuditFileVersion> Hardcoded 3.0
<AuditFileCountry> Company Information Country Derived country ISO Code : System Setup » Regional Settings » Countries
<AuditFileDateCreated> Current System Date
<SoftwareCompanyName> Hardcoded Deltek, Inc.
<SoftwareID> Hardcoded Deltek Maconomy
<SoftwareVersion> Internal Value Application Version and Application Patch Level Help » About Deltek Maconomy » Installation Details: Application Version and Application Patch Level
<Company>
<RegistrationNumber> Company Information Company Reg. No.
<Name> Name
<Address>
<StreetName> Address 1
<Number> Address 2
<AdditionalAddressDetail> Address 3
<City> City
<PostalCode> Postal Code
<Country> Country Derived country ISO Code : System Setup » Regional Settings » Countries
</Address>
<Contact>
<ContactPerson>
<FirstName> Hardcoded NotUsed
<LastName> Company Information Employee Name 1 up to Employee Name 5
</ContactPerson> Company Information
<Telephone> Phone
<Fax> Fax
<Email> Text 1 Derived from Extra field - Text 1 of company header
</Contact>
<TaxRegistration>
<TaxRegistrationNumber> Company Information Company Information Vat No.
<TaxAuthority> Hardcoded Skatteetaten
<TaxVerificationDate> Company Information Date 1 Generic field used temporarily
</TaxRegistration>
<BankAccount>
<IBANNumber> Company Information Giro Condition: If Giro is available, display <IBANNumber> If Giro is not available, display <BankAccountNumber>
<BankAccountNumber> Bank
<CurrencyCode> Base Currency
</BankAccount>
</Company>
<DefaultCurrencyCode> Company Information Base Currency
<SelectionCriteria>
<CompanyEntity> Norway Statutory Reports Company No.
<SelectionStartDate> Year-Period From Set to first day of the period selected when Show fiscal year-period in selection criteria is not selected
<SelectionEndDate> Year-Period To Set to last day of the period selected when Show fiscal year-period in selection criteria is not selected
<PeriodStart> Year-Period From Set to first day of the fiscal period selected when Show fiscal year-period in selection criteria is selected
<PeriodStartYear> Year-Period From Set to first year of the fiscal period selected when Show fiscal year-period in selection criteria is selected
<PeriodEnd> Year-Period To Set to last day of the fiscal period selected when Show fiscal year-period in selection criteria is selected
<PeriodEndYear> Year-Period To Set to last year of the fiscal period selected when Show fiscal year-period in selection criteria is selected
</SelectionCriteria>
<HeaderComment> Norway Statutory Reports Header Comment
<TaxAccountingBasis> A
<TaxEntity> Text 9 Derived from Extra field - Text 9 of company header
<UserID> Employees Name 1 Derived from the current logged in user
</Header>
<MasterFiles>
<GeneralLedgerAccounts> Setup Required: Reporting Structure Option List = Finance Selected Value = NSAFT
Note: Must include accounts to be mapped under the reporting structure.
<Account>
<AccountID> Account Information Card or Local Account Information Card Account Number
<AccountDescription> Account Name
<GroupingCategory> Reporting Structures Grouping level 1
<GroupingCode> Grouping level 2
<AccountType> Hardcoded GL
<AccountCreationDate> Account Information Card or Local Account Information Card Created Date
<OpeningDebitBalance> OR <OpeningCreditBalance> Account Ledger or Local Account Ledger Opening (Currency) Condition: If Balance is greater than 0, display as <OpeningDebitBalance> If Balance is less than 0, display as <OpeningCreditBalance>
<ClosingDebitBalance> OR <ClosingCreditBalance> Closing (Currency) Condition: If Balance is greater than 0, display as <ClosingDebitBalance> If Balance is less than 0, display as <ClosingCreditBalance>
</Account>
</GeneralLedgerAccounts>
<Customers>
<Customer>
<RegistrationNumber> Company Specific Customer Information Card Comp. Reg. No.
<Name> Name
<Address>
<StreetName> Address 1
<Number> Address 2
<AdditionalAddressDetail> Address 3
<City> City
<PostalCode> Postal Code
<Country> Country Derived country ISO Code : System Setup » Regional Settings » Countries
</Address>
<Contact>
<ContactPerson>
<FirstName> Hardcoded NotUsed
<LastName> Company Specific Customer Information Card Contact Person
</ContactPerson>
<Telephone> Company Specific Customer Information Card Phone
<Fax> Fax
<Email> Personal E-mail
</Contact>
<TaxRegistration>
<TaxRegistrationNumber> Company Specific Customer Information Card Tax No.
<TaxAuthority> Hardcoded Skatteetaten
</TaxRegistration>
<BankAccount>
<IBANNumber> Company Specific Customer Information Card Giro Condition: If Giro is available, display <IBANNumber> If Giro is not available, display <BankAccountNumber>
<BankAccountNumber> Bank Acct. No.
<BIC> SWIFT
<CurrencyCode> Base Currency
<GeneralLedgerAccountID> Control Account Control Account number derived from: Popup Fields » A/R Control Accounts » Control Account
</BankAccount>
<CustomerID> Customer number in Maconomy
<BalanceAccount>
<AccountID> Control Account No. or Control Local Account No. of the company customer
<OpeningDebitBalance> OR <OpeningCreditBalance> Periodic Customer Statement Balance, Base (Opening) Condition: If Balance is greater than 0, display as <OpeningDebitBalance> If Balance is less than 0, display as <OpeningCreditBalance>
<ClosingDebitBalance> OR <ClosingCreditBalance> Balance, Base (Closing) Condition: If Balance is greater than 0, display as <ClosingDebitBalance> If Balance is less than 0, display as <ClosingCreditBalance>
</BalanceAccount>
<PartyInfo>
<PaymentTerms>
<Days> Company Specific Payment Information Payment Terms Days derived from: Popup Fields » Payment Terms » (No. of Months x 30) + No. of Days
<CashDiscountDays> Cash Discount Code Days derived from: Popup Fields » Cash Discount Code » No. of Days
<CashDiscountRate> Cash Discount Code Rate derived from: Popup Fields » Cash Discount Code » Discount %
</PaymentTerms>
<CurrencyCode> Company Specific Customer Information Card Base Currency
</PartyInfo>
</Customer>
</Customers>
<Suppliers>
<Supplier>
<RegistrationNumber> Company Specific Vendor Information Card Comp. Reg. No.
<Name> Name
<Address>
<StreetName> Address 1
<Number> Address 2
<AdditionalAddressDetail> Address 3
<City> City
<PostalCode> Postal Code
<Country> Country Derived country ISO Code : System Setup » Regional Settings » Countries
<AddressType>
</Address>
<Contact>
<ContactPerson>
<FirstName> Hardcoded NotUsed
<LastName> Company Specific Vendor Information Card Contact Person
</ContactPerson>
<Telephone> Company Specific Vendor Information Card Phone
<Fax> Company Specific Vendor Information Card Fax
<Email> Company Specific Vendor Information Card Personal E-mail
</Contact>
<TaxRegistration>
<TaxRegistrationNumber> Company Specific Vendor Information Card Tax No.
<TaxAuthority> Hardcoded Skatteetaten
</TaxRegistration>
<BankAccount>
<IBANNumber> Company Specific Vendor Information Card Giro Condition: If Giro is available, display <IBANNumber> If Giro is not available, display <BankAccountNumber>
<BankAccountNumber> Bank Acct. No.
<BIC> SWIFT
<CurrencyCode> Base Currency
<GeneralLedgerAccountID> Control Account Control Account number derived from: Popup Fields » A/P Control Accounts » Control Account
</BankAccount>
<SupplierID> Vendor number in Maconomy
<BalanceAccount>
<AccountID> Control Account No. or Control Local Account No. of the company vendor
<OpeningDebitBalance> OR <OpeningCreditBalance> Periodic Vendor Statement Balance, Base (Opening) Condition: If Balance is greater than 0, display as <OpeningDebitBalance> If Balance is less than 0, display as <OpeningCreditBalance>
<ClosingDebitBalance> OR <ClosingCreditBalance> Balance, Base (Closing) Condition: If Balance is greater than 0, display as <ClosingDebitBalance> If Balance is less than 0, display as <ClosingCreditBalance>
</BalanceAccount>
<PartyInfo>
<PaymentTerms>
<Days> Company Specific Payment Control Payment Terms Days derived from: Popup Fields » Payment Terms » (No. of Months x 30) + No. of Days
<CashDiscountDays> Cash Discount Code Days derived from: Popup Fields » Cash Discount Code » No. of Days
<CashDiscountRate> Cash Discount Code Rate derived from: Popup Fields » Cash Discount Code » Discount %
</PaymentTerms>
<CurrencyCode> Company Specific Vendor Information Card Base Currency
</PartyInfo>
</Supplier>
</Suppliers>
<TaxTable>
<TaxTableEntry>
<TaxType> Hardcoded MVA
<Description> Hardcoded Merverdiavgift
<TaxCodeDetails>
<StandardTaxCode> Option Lists Remarks 1 Setup Required: Option List with Option List No. = NSAFT
<TaxCode> Tax Tables and G/L Tax Tables Tax Tables and G/L Tax Tables Tax Tables and G/L Tax Tables Tax Code NSAFT has the capability to override the tax code using the Remarks 2 field from the same option list for mapping standard tax code. This feature overrides <TaxCode> under <TaxTable> and <TaxInformation> . If the tax code is not included in the option list nor mapped with a Remarks 2 field, it shows the original tax code from the Tax Code dialog box in Maconomy.
Note: Tax Code is limited to 35 characters.
<EffectiveDate> Period From
<ExpirationDate> Period To
<Description> Tax Codes and G/L Tax Codes Tax Type, Taxable
<TaxPercentage> Tax Rate
<Country> Country ISO Code
<StandardTaxCode> Option Lists Remarks 1 Setup Required: Option List with Option List No. = NSAFT
<BaseRate> Percentage of tax allowed to be deducted
</TaxCodeDetails>
</TaxTableEntry>
</TaxTable>
<AnalysisTypeTable>
<AnalysisTypeTableEntry>
<AnalysisType> Code for the selected dimension
<AnalysisTypeDescription> Name of the dimension code
<AnalysisID> Name of the value for the dimension
<AnalysisIDDescription> Description of the value
</AnalysisTypeTableEntry>
</AnalysisTypeTable>
</MasterFiles>
<GeneralLedgerEntries>
<NumberOfEntries> Total count of <Transaction> elements
<TotalDebit> Sum of all <DebitAmount> in the exported file
<TotalCredit> Sum of all <CreditAmount> in the exported file
<Journal>
<JournalID> Show Journals Journal No.
<Description> Show Journals Journal Type
<Type> Values 'A', 'AP', 'AR', or 'GL" based on the Journal Type Reference Journal Type list mapping
<Transaction>
<TransactionID> Show G/L Entries Trans. No.
<Period> Fiscal Period Shows the first fiscal period of all entries in a transaction. For example, if a <Transaction> contains lines from the first fiscal period to the third fiscal period, <Period> only shows the value 1 (as in the first fiscal period).
Note: This refers to fiscal period and not a calendar month.
<PeriodYear> Fiscal Year Same rules as <Period> but shows the first fiscal year of the entries in a transaction, in YYYY format.
<TransactionDate> Entry Date Same rules as <Period> but shows the first entry date of the entries in a transaction. XML Gregorian Calendar format.
<SourceID> Show Journals Created By
<VoucherType> Option Lists Remarks 1 Setup Required: Option List with Option List No. = NSAFT-Vouchers
<VoucherDescription> Option Lists Remarks 2
<TransactionType> Show G/L Entries Aut. Entry Condition: If Aut. Entry is Yes, <TransactionType> is set to Automated If Aut. Entry is No, <TransactionType> is set to Normal Maps to Maconomy Transaction Type . This has a maximum limit of 18 characters; characters exceeding this limit are truncated.
<Description> Show G/L Entries Transaction Type
<SystemEntryDate> Show Journals Created On
<GLPostingDate> Show G/L Entries Date Posted
<Line>
<RecordID> Auto-generated number Sequence number is generated per <Line> per <Transaction> Maps to Combined Sequence No. to maintain uniqueness for entries spanning more than a single fiscal year. Has a maximum limit of 18 characters; values exceeding this limit are truncated.
<AccountID> Show G/L Entries Account No.
<Analysis>
<AnalysisType> Code for the selected dimension
<AnalysisID> Name of the value for the dimension
</Analysis>
<ValueDate> Shows the first entry date of the entries in a transaction. XML Gregorian Calendar format
<SourceDocumentID> Show G/L Entries Journal No.
<CustomerID> Show Customer Reconciliation Customer No. Condition: If the <Line> is an A/R sub ledger entry, show <CustomerID> If the <Line> is an A/P sub ledger entry, show <SupplierID>
<SupplierID> Show Vendor Reconciliation Vendor No.
<Description> Show G/L Entries Entry Description
<DebitAmount> OR <CreditAmount> Condition: If <Amount> is greater than 0, display as <DebitAmount> If <Amount> is less than 0, display as <CreditAmount>
<Amount> Show G/L Entries Debit, Base - Credit, Base Displayed in absolute value
<CurrencyCode> Show G/L Entries Original Currency
<CurrencyAmount> Show G/L Entries Original Amount
<ExchangeRate> <Amount> divided by <CurrencyAmount>
</DebitAmount> OR </CreditAmount>
<TaxInformation>
<TaxType> Hardcoded MVA
<TaxCode> Show Tax Settlement Entries Tax Code NSAFT has the capability to override the tax code using the Remarks 2 field from the same option list for mapping standard tax code. This feature overrides <TaxCode> under <TaxTable> and <TaxInformation> . If the tax code is not included in the option list nor mapped with a Remarks 2 field, it shows the original tax code from the Tax Code dialog box in Maconomy.
Note: Tax Code is limited to 35 characters.
<TaxPercentage> Show Tax Settlement Entries Tax Rate
<Country> Derived country ISO Code : System Setup » Regional Settings » Countries
<TaxBase> Show G/L Entries Debit, Base - Credit, Base
<TaxAmount>
<Amount> Show G/L Entries Debit Tax - Credit Tax
Note: Currently, the NSAFT report displays the incorrect tax amount for intercompany entries when the base currency and the header currency are the same. The issue is caused by using the base currency of the entry instead of converting it to currency of the reporting company.
<CurrencyCode> Show Tax Settlement Entries Original Currency
<CurrencyAmount> Show Tax Settlement Entries Calculated from Debit, Currency - Credit, Currency and Ratio
<ExchangeRate> <Amount> divided by <CurrencyAmount >
</TaxAmount>
</TaxInformation>
<ReferenceNumber> Show G/L Entries OR Show Vendor Invoice Journals Transaction No. OR Vendor Invoice No. Condition: If Journal Type is Invoice, <ReferenceNumber> shows the Transaction No. If Journal Type is Vendor Invoice, <ReferenceNumber> shows the Vendor Invoice No.
</Line>
</Transaction>
</Journal>
</GeneralLedgerEntries>
</AuditFile>
Note: For IBAN and Bank Account Numbers, the following conditions apply:
  • <IBANNumber> displays if it has a value, regardless if there is bank account.
  • <Bank Account No.> displays if IBANNumber is blank and Bank Account has a value.
  • If both tags are blank, <IBANNumber>NA</IBANNumber> displays.

Journal Type Mapping

Maconomy Journal Types NSAFT Type
Asset A
Asset Acquisition A
Asset Depreciation A
Asset Internal Sale A
Asset Relocation A
Asset Sale A
Asset Transfer A
Bank Reconciliation A
Commission A
Expense Sheet A
Fixed Price Inclusion A
Follow-up Selection A
Invoice Reallocation A
Item A
Job A
Job Accrual A
Job Invoice Allocation A
Job Item A
Job Pre-Invoice Reconciliation A
Job Reallocation A
Job Revenue Recognition A
Job Transfer A
Mileage Sheet A
Royalty A
Time Sheet A
Intercompany Settlement Vendor Invoice AP
Payment AP
Vendor AP
Vendor Invoice AP
Automatic Customer Payment AR
Collection AR
Customer Payment AR
Customer Reconciliation AR
Debtor Provisions AR
Interest Charge Notice AR
Invoice AR
Reminder AR
G/L Reallocation GL
General GL
Gross Pay GL
Intercompany Grouping GL
Intercompany Interest Note GL
Tax Settlement GL
Unrealized Exchange Rate Variance GL

Norway VAT Return Tags and Mappings

Tags Description
<mvaMeldingDto>
<innsending>
<regnskapssystemsreferanse> The taxpayer's unique reference for the submission.

Purpose : To ensure the taxpayer and the tax office refer to the same message.

<regnskapssystem> Name and possible version of accounting system.
<systemversjon> Purpose : To follow up systematic errors with the system supplier instead of following up with each individual taxpayer.
</systemnavn>
</innsending>
<skattegrunnlagOgBeregnetSkatt>
<skattleggingsperiode> The taxation period for which the VAT return applies. Period is stated in accordance with the code list for the Skattleggingsperiode . SkattleggingsperiodeUke follows the calendar's week numbering, for example, week 1 in 2022 runs from 3 to 9 January.

For SkattleggingsperiodeHalvmåndelig, the first half runs from the 1st to the 15th of the month, and the second half runs from the 16th to the last of the month.

Purpose : To ensure consistency between bookkeeping and VAT return period.

<periode> The taxation period for which the VAT return applies.
<skattleggingsperiodeToMaaneder> Period is stated in accordance with the code list for the Skattleggingsperiode . SkattleggingsperiodeUke follows the calendar's week numbering, for example, week 1 in 2022 runs from 3 to 9 January.

For SkattleggingsperiodeHalvmåndelig , the first half runs from the 1st to the 15th of the month, and the second half runs from the 16th to the last of the month.

Purpose : To ensure consistency between bookkeeping and VAT return period.

<aar> The taxation year for which the VAT return applies.

Purpose : To ensure consistency between bookkeeping and VAT return period.

</skattleggingsperiode>
<fastsattMerverdiavgift> Sum to pay or to be refunded.

Purpose : To ensure the correct amount is being paid.

<mvaSpesifikasjonslinje>
<mvaKode> Classification of incoming and outgoing VAT in accordance with the Norway - SAF-T standard.

Purpose : Dissemination of which VAT assessments have been carried out

<mvaKodeRegnskapsystem> Internal VAT code in the accounting system.

There may be several internal VAT codes for a VAT code and possibly a specification. In that case, there will be several lines in the VAT message per VATCode and specification; one per combination of VAT code, specification and VAT CodeAccounting system.

Purpose : Two considerations, as follows: For Users, it is recognizable in relation to what they see in the accounting system. The system suppliers do not have to change VAT codes in the systems

<grunnlag> The amount of which VAT is calculated. The field must not be filled in for input VAT.

Purpose : Basis for control from the Tax Administration.

<sats> The VAT rate used in calculating outgoing VAT. The field must not be filled in for incoming VAT.

Purpose : To ensure that only valid rates are used for invoicing.

<merverdiavgift> Fixed VAT.

Purpose : To show calculated VAT per line.

</mvaSpesifikasjonslinje>
</skattegrunnlagOgBeregnetSkatt>
<betalingsinformasjon>
<kundeIdentifikasjonsnummer> The recipient's identification of a payment.

Purpose : To pay bank accounts that require KID.

<skattepliktig>
<organisasjonsnummer> Unique identifier for the taxable organization.

Purpose : To apply the rights and obligations of the taxpayer.

<meldingskategori> The subtype of the VAT return.

Purpose : To ensure the user can fulfill their VAT reporting obligations.

<merknad>
<beskrivelse> Additional information about the content of the VAT return.

Purpose : To ensure the taxpayer can explain their application of law when necessary

</mvaMeldingDto>

Troubleshooting

Enable Logging for NSAFT Report

To enable logging, add the following entries to logback.xml of the coupling service configuration:

<logger name="com.deltek.maconomy.bpm.norway.nsaft" additivity="false">
    <level value="DEBUG" />
    <appender-ref ref="FILE"/>
  </logger>

  <logger name="com.deltek.maconomy.bpm.util" additivity="false">
	<level value ="DEBUG"/>
	<appender-ref ref="FILE"/>
  </logger>

Background Task Timeout

Reports with large volumes of records take longer to process and the background task may timeout. To prevent timeout errors, you must change the character stream size to 2000 or higher (on the BO server console), and set the background task duration to more than 24 hours (on Maconomy).

Set Character Stream Size

To prevent timeouts while running the report, you must change the character stream size on the Business Objects (BO) Central Management Console (CMC) prior to running the report.

To change the character stream size:

  1. On the BO CMC, log in as an Administrator.
  2. Click Servers and select Server List.
  3. From the list of server names, click WebIntelligenceProcessingServer.
  4. Select Properties then edit the Maximum Character Stream Size (MB) field value, from 15 to at least 2000 or your preferred value up to 4095.
    Note: The recommended value when running the report is 2000.
  5. Click Save then close the dialog box.
  6. Right-click WebIntelligenceProcessingServer then select Restart Server.

Set Background Task Maximum Duration

Note: This section applies to the Workspace Client.

If the default maximum duration time (1440 minutes) is not enough to generate the report, you can change the maximum duration for the background task.

To change the maximum duration:

  1. Generate a report to start a background task.

    Click OK in the prompt.

  2. Go to Setup » Background Tasks » Status and locate your task. It should be at the top of the list.
    1. Select the task and click the Abort action button.
    2. Click OK in the prompt.
    3. Right-click the task (the status displays as Failed) and click Copy as Template.

      A new task should display at the top of the list (the status displays as Pending.)

  3. Go to the Editing tab then locate and double-click the pending task.
    Note: You may need to filter the list and show Inactive Pending Tasks.
    1. Edit the Max. Duration field to a higher value, such as 2880 for 48 hours.
    2. Click the Save » Activate action.
    3. Click OK in the prompt.
  4. Go to the Status tab and click the Refresh action button.

    The task should run and generate a report.

    Note: If the background task still fails, you need to adjust the maximum duration time to accommodate the amount of records.