Chart of Accounts

Map Omnium events to general-ledger account numbers — account categories, discriminators, currency and tax-group keys, country presets, and the rules Omnium uses to resolve which account a ledger line books to.

The Chart of Accounts (COA) is the tenant's mapping from Omnium accounting events to general-ledger account numbers. Every ledger line carries an account category; the chart turns that category — together with a VAT rate, tax group, or payment method — into the concrete account number your accounting system expects.

The chart is edited under Configuration → Settings → Advanced → Accounting settings, in the Chart of accounts card. A store can also carry its own entries that replace individual tenant entries for that store only — see Store Accounts.

Run the Validation tab after editing the chart — see Configuration. A line whose account cannot be resolved is in most cases still written to the posting, but with an empty account number — see How an account is resolved.

Chart entry fields

Each entry maps one slice of activity to one account number.

FieldRequiredDescription
Account number✓The GL account number this entry books to.
Name✓Human-readable account name. Copied onto each ledger line as the account name. Not used for matching.
DescriptionOptional free-text note.
Category✓The account category this entry serves (Sales, OutputVat, PaymentMethod, …).
DiscriminatorSub-key within the category — see The discriminator. Leave blank for a category-wide catch-all.
VAT codeVAT code stamped onto lines booked to this account. On OutputVat lines, the line's tax group external code is used instead when the line has one.
VAT rateCopied as entered onto ledger lines that carry no VAT rate of their own, such as payment and gift-card lines. Not used for matching. Ledger-line VAT rates are percentages (25), so enter the rate in the same form if you want them to agree.
Currency codeRestrict the entry to a single ISO currency (e.g. NOK). Leave blank to match any currency.
Tax group codeBind the entry to a specific tax group. When set, it takes precedence over discriminator (rate) matching.
ActiveInactive entries are skipped during resolution. Defaults to on.

The Accounts view shows account number, name, category, discriminator, VAT rate, VAT code, and active. Currency code, Tax group code, and Description are set in the JSON view; the country presets fill in the tax group code for you.

The discriminator

The discriminator is what distinguishes two entries that share the same category:

  • For Sales, OutputVat, Shipping, and RentalSales, the discriminator is the VAT rate as a fraction, with a dot as decimal separator and without trailing zeros — 0.25 for 25 %, 0.15 for 15 %, 0.1 for 10 %, 0.11 for 11.11 %, 0 for 0 %. This is how a 25 % sale and a 15 % sale book to different revenue and VAT accounts.
  • For PaymentMethod and RefundPaymentMethod, the discriminator is the payment method name — the name configured on the payment method for web orders (for example klarna_kco), or the payment method recorded by the register for POS. Matching is case-sensitive.
  • For GiftCardLiability, the discriminator is GiftCard.
  • For DepositLiability, use Deposit, or leave it blank.

Discriminators are compared as exact text, so 25, 0,25, and 0.10 never match a rate. An entry with no discriminator acts as the catch-all for its category.

Categories and when they are used

CategoryBooked whenDiscriminator
SalesGoods are sold or returnedVAT rate, or blank with a tax group code
RentalSalesRental revenue is booked. Without a RentalSales entry, rental revenue books to Sales.VAT rate, or blank
OutputVatVAT is collected or reversedVAT rate, or blank with a tax group code
ShippingShipping is charged or refundedVAT rate
PaymentMethodA payment is receivedPayment method name
RefundPaymentMethodMoney is paid back. There is no fallback to the PaymentMethod entry.Payment method name
GiftCardLiabilityGift cards are sold in the In-Store app (from the Z-report), or used or refunded as payment. A payment method named GiftCard books here instead of to PaymentMethod.GiftCard
DepositLiabilityRental deposits are taken or refundedDeposit, or blank
ReceivableA web-fulfillment posting is auto-balanced because sales exceed paymentsBlank
OverShortA till discrepancy or any other auto-balancing line is bookedBlank
InternalTransferIn / InternalTransferOutThe cost of goods is moved between stores of the same store group on a cross-store returnBlank
RoundingRounding differences in the Export bookkeeping file under Reports → Payments and in Payment Ledger custom reports. Not used by postings.Blank
PaymentProviderFee, Discount, CashFloat, CashInTransit, Tip, OtherNot booked today. Discounts are already netted into the sales amounts.—

How an account is resolved

When Omnium needs an account for a line, it filters the chart to active entries of the matching category, then picks the first entry that matches in this order:

  1. Tax-group match — an entry whose tax group code matches the line's tax group, preferring one that also matches the posting currency. This wins over rate-based matching. Only applies when the line has a tax group.
  2. Exact discriminator + currency — entry matching both the discriminator and the posting currency.
  3. Discriminator only — entry matching the discriminator with no currency restriction.
  4. Category catch-all — the first entry for that category with no discriminator and no currency.

Within each step, the entry higher in the list wins. Receivable and OverShort are looked up separately: the first active entry of that category with no discriminator and either no currency or the posting currency.

If none of these match, the line is still written to the posting, with an empty account number and no warning. The exceptions:

  • Auto-balancing — when a posting needs a Receivable or OverShort account and none exists, the posting is not created.
  • Cost transfers — when an InternalTransferIn or InternalTransferOut account is missing, the transfer lines are left out and the posting gets a warning.
  • Deposits — a DepositLiability line without an account adds a warning to the posting.

The country presets bind Sales and OutputVat entries to a tax group code and leave the discriminator blank, so those entries also act as catch-alls in step 4. POS postings match Sales and OutputVat by VAT rate only — a Z-report carries no tax group — so with an unmodified preset every POS sale books to the first Sales entry and all POS VAT to the first OutputVat entry, whatever the rate. If you sell at more than one VAT rate in the In-Store app, add a Sales and an OutputVat entry per rate with the rate as discriminator (0.25, 0.15, …). Web orders keep resolving through the tax-group entries.

The Over/short account number set in posting settings overrides any OverShort entry in the chart.

Building the chart

The Chart of accounts card offers these actions:

ActionWhat it does
Add accountAdds an empty entry.
Insert accounts from → Insert Norwegian / Swedish / Danish account chartAppends the country preset. Entries whose category, discriminator, currency, and tax group already exist are skipped, and a summary shows how many were added and skipped.
Insert accounts from → Generate accounts from payment methodsAdds a PaymentMethod and a RefundPaymentMethod entry for each configured payment method that does not have one, with the payment method name as discriminator and an empty account number for you to fill in.
Delete iconRemoves the entry.

The presets follow common national charts (NS 4102, BAS, Standardkontoplan). Verify every account number against your own accounting system before going live.

Norwegian preset

Account numberNameCategoryTax group code
3000Salg, høy satsSalesHIGH
3030Salg, lav sats (12%)SalesMID
3050Salg, næringsmidler (15%)SalesFOOD
3100Salg, fritatt for mvaSalesZERO
3200Salg, eksportSalesEXPORT
2700Utgående mva, høy satsOutputVatHIGH
2710Utgående mva, lav satsOutputVatMID
2720Utgående mva, næringsmidlerOutputVatFOOD
3700RabatterDiscount
3220FraktShipping
7090ØreavrundingRounding
1500KundefordringerReceivable
1900KontantkasseCashFloat
1909Kontanter i transittCashInTransit
1580KassedifferanseOverShort
2470Forskudd fra kunder (gavekort)GiftCardLiability

The Swedish (BAS) and Danish presets follow the same structure with their national account numbers and tax-group codes (HIGH, MID, LOW, ZERO, EXPORT for Sweden; HIGH, ZERO, EU_B2B, EXPORT for Denmark).

The presets' GiftCardLiability entries carry no discriminator, so they act as the catch-all for gift cards. The account presets pair with the matching tax-group presets; insert the tax groups first.

Editing the chart as JSON

The JSON view shows the whole chart as a JSON array, one object per entry with accountNumber, name, description, category, discriminator, vatCode, vatRate, currencyCode, isActive, taxGroupCode, and properties. Use it to set the currency or tax group of an entry, to copy a chart between tenants (Copy to clipboard), or to paste a chart prepared elsewhere.

  • Compare shows the differences between the text and the current chart.
  • Apply accounts replaces the chart with the text. Nothing is applied if the text is not valid JSON or an entry has a missing or unknown category; unknown fields are ignored with a warning. Save the card afterwards.
  • Reset discards your text edits.

The text may be a bare array or an object with a chartOfAccounts array.

[
  {
    "accountNumber": "3050",
    "name": "Salg, næringsmidler (15%)",
    "category": "Sales",
    "discriminator": "",
    "taxGroupCode": "FOOD",
    "isActive": true
  },
  {
    "accountNumber": "3051",
    "name": "Salg, næringsmidler (15%) POS",
    "category": "Sales",
    "discriminator": "0.15",
    "isActive": true
  },
  {
    "accountNumber": "1920",
    "name": "Klarna (payment)",
    "category": "PaymentMethod",
    "discriminator": "klarna_kco",
    "isActive": true
  }
]

Worked example

A tenant selling at 25 % and 15 % VAT, taking card and cash, and shipping to customers might configure:

Account numberCategoryDiscriminatorCurrencyPurpose
3000Sales0.25Revenue, standard rate
3001Sales0.15Revenue, food rate
2700OutputVat0.25Output VAT, standard rate
2701OutputVat0.15Output VAT, food rate
1910PaymentMethodCashCash tender
1920PaymentMethodCardCard tender
3100ShippingShipping charged to customer
1500ReceivableWeb sales awaiting settlement
1909OverShortTill discrepancies (suspense)

A 25 % sale paid by card then books revenue to 3000, output VAT to 2700, and the tender to 1920.

On this page