action.skip

Data Transfer to Accounting Systems

← Bookkeeping Overview

Irrespective of the bookkeeping data generation features you apply, your organization usually delivers the relevant invoicing data to an (external) accounting system like DATEV, SAP or Microsoft Dynamics. Invoicing data refers to the actual business transactions that state the realized revenues or charged taxes and their corresponding booking accounts, as represented in booking details or, on a basic level, in invoices. Accounting systems expect specifically formatted CSV files in order to import this data. To support this, JustOn Billing & Invoice Management provides a flexible CSV export mechanism, which allows you to configure and execute invoice exports or booking details exports according to your needs.

Info

If your target accounting system is DATEV, you may consider using DATEV Unternehmen online. JustOn supports the automatic transfer of invoicing data to this platform.

In addition, your business may require to export master data to your accounting system. Master data refers to account-related data like customer name, address, tax ID, debtor/creditor number, etc. Accounting systems usually handle master data separately and can therefore not import it together with invoicing data. For transferring master data, you use JustOn's export mechanism to produce specifically configured CSV files from invoices.

accounting_data_transfer
Delivering master data and bookkeeping data to accounting systems

Invoice CSV Export

Your organization's business may require to export invoices or booking details that are to be imported by external accounting systems like DATEV, SAP or Microsoft Dynamics. Usually, these accounting systems expect specifically formatted CSV files in order to import this data, including invoice line items and tax information. To this end, JustOn Billing & Invoice Management provides a flexible CSV export mechanism. It allows you to configure and execute invoice or booking details exports according to your needs.

Info

Be aware that the invoice export is not related to invoice PDF files. To output produced PDF files, use the redistribution function.

You can use JustOn's invoice CSV export to export master data to your accounting system. Master data refers to account-related data like customer name, address, tax ID, debtor/creditor number, etc. Accounting systems usually handle master data separately and can therefore not import it together with invoicing data. For transferring master data, you produce specifically configured CSV files from invoices.

Payment Balance Generation

When exporting invoices, you can select the option Create Payments. Doing so triggers JustOn to create payment balances and to set the originating invoices to Paid or Settled, depending on the invoice class (Invoice or Credit).

Invoice Export History

In addition to the actual export file (CSV or SEPA XML, according to the applied export setting), the export operation produces an Invoice Export History record for each exported invoice. The history holds the following information:

  • Export time
  • Effective payment due date (for installment invoices)
  • File name and link to the exported file
  • Flag stating whether a payment balance has been created
  • Flag that controls whether to prevent repeated exports
  • Flag stating whether an invoice has been exported more than once (forced export)

    The Times Exported field on the invoice shows the export count.

Configuring Invoice CSV Export
Exporting Invoices

Booking Detail CSV Export

Your organization's business may require to export invoices or booking details that are to be imported by external accounting systems like DATEV, SAP or Microsoft Dynamics. Usually, these accounting systems expect specifically formatted CSV files in order to import this data, including invoice line items and tax information. To this end, JustOn Billing & Invoice Management provides a flexible CSV export mechanism. It allows you to configure and execute invoice or booking details exports according to your needs.

Be aware of the following specifics:

  • You export booking details on a booking period base. You select the booking period whose booking details you want to export and trigger the export.
  • You can control whether to allow multiple exports. Specifically marking exported booking details excludes them from subsequent export operations.

Configuring Booking Detail CSV Export
Exporting Booking Details

DATEV Support

Your organization's business may require to deliver bookkeeping data to DATEV. Technically, there are two ways to do so:

Info

Be aware, however, that the way you use may depend on the type of data you transfer to DATEV.

Invoicing data: Invoicing data refers to actual business transactions that state, in particular, realized revenues or charged taxes and their corresponding booking accounts. If your data involves invoicing data only, you can use both the automatic transfer as well as the export.

Master data: You must use an accordingly configured CSV export if you move master data for accounts like, for example, debtor numbers. This especially applies to new customers that are not yet available in DATEV as "allocation targets".

Data Transfer to DATEV

To seamlessly transfer invoice-based bookkeeping data to DATEV, JustOn integrates with JustOn Connector for DATEV. This is an add-on to JustOn that generates DATEV-specific ledger records from booking details (as created from invoices and invoice line items), and transfers them to DATEV Unternehmen online. For details, see JustOn Connector for DATEV DE. Once there, these accounting documents and accounting document items can be used by any DATEV application that accesses the DATEV Cloud.

DATEV.png
Directly transferring bookkeeping data to DATEV

The following table shows which data is supported by the DATEV interface Rechnungsdatenservice 1.0 and by the integration with JustOn Billing & Invoice Management – which produces sales invoices relevant for the accounts receivable ledger.

Type of Data DATEV Interface Integration
Accounts receivable
Sales invoices
Accounts payable
Purchase invoices
Cash ledger
cash book
Attachments
Document images
Master data
Payment data

In broad strokes, the bookkeeping data transfer work as follows:

JustOn transfers all booking details of a specific booking period that are not yet exported to JustOn Connector for DATEV. For each related invoice, an accounting document record of the type Accounts Receivable Ledger is created. Each booking detail is exported to an accounting document item (1:1 relationship). The two objects are linked with each other. Invoice PDF and e-invoice XML attachments (maximum size per file: 3.76 MB) are copied and attached to the accounting document.

Be aware that attached files larger than 3,76 MB each prevent exporting all booking details of the given invoice.

On successful transfer, the Locked checkbox of the accounting document is selected, and the booking detail is marked as exported. In case of errors, neither an accounting document nor an accounting detail is created for the affected booking details. An error message is written to the booking detail.

Info

Be aware that the automatic data transfer to DATEV involves invoicing data only, since the corresponding DATEV interface supports invoice (and cashbook) data only. Invoicing data refers to actual business transactions that state, particularly, realized revenues or charged taxes and their corresponding G/L accounts, and that is represented on booking details created from invoice line items.

To transfer bookkeeping data as generated from payment balances, unbilled revenue bookkeeping data or master data for accounts like, for example, debtor numbers, you must use accordingly configured CSV file exports for booking details or invoices, respectively.

Once the data transfer to DATEV is set up, actually transferring the data from JustOn to DATEV Unternehmen online involves the following repetitive tasks:

  1. Transferring Bookkeeping Data to DATEV

    Be aware that generating the DATEV-specific data records may take time – for 1000 booking details, allow about one hour.

  2. Checking Accounting Documents

  3. Creating and Executing Data Transfer

    Be aware that uploading the accounting documents to DATEV may take time. Depending on the amount of data you transfer, the access token may expire. In this case, restart the data transfer.

DATEV_transfer
Transferring bookkeeping data to DATEV

The bookkeeping data transfer writes the data to the following fields.

Accounting Document fields
Field Data Type Source Field Notes
InvoiceId Text BookingDetail.InvoiceNo
Document Date Date BookingDetail.BookingPeriod Shows the start date of the booking period
Customer Name Text BookingDetail.AccountName
Customer City Text BookingDetail.BillingCity
IBAN Text BookingDetail.IBAN
SwiftCode Text BookingDetail.BIC
VatId Text BookingDetail.VATId
ThirdParty Checkbox - Is selected on successful transfer
Locked Checkbox - Is selected on successful transfer
ON_Invoice Lookup (Invoice) BookingDetail.Invoice Links to the related invoice
Accounting Document Item fields
Field Data Type Source Field Notes
Amount Currency (10,2) BookingDetail.Amount
AccountNo Text BookingDetail.AccountNo
Accounting Date Date BookingDetail.BookingDate
Delivery Date Date BookingDetail.OriginalBookingDate Is ignored when empty. Can be overwritten using a custom DeliveryDate field
Tax Percent (2,2) BookingDetail.TaxRate
ON_BookingDetail Lookup (Booking Detail) - Links to the related (source) booking detail
Booking Detail fields
Field Data Type Notes
Exported Checkbox Is selected on successful transfer
Export Destination Text Is set to DATEV on successful export
ON_AccountingDetail Lookup (Accounting Document Item) Links to the related (target) accounting document item
Last Error Text Is set during the transfer
Additional fields

JustOn can copy additional fields from the booking details to the accounting documents and accounting document items. This is done for all additional fields on the booking detail if a field with the same name exists on the corresponding target.

The following table lists some examples:

Booking Detail Accounting Document Accounting Document Item Notes
BillingCountry__c BillingCountry__c
BuCode__c BuCode__c Holds booking codes to control certain DATEV features, like 40 to switch off the automatic tax calculation in automatic accounts.
ClientId__c ClientId__c Holds a client ID in the format ConsultantID-ClientID. Allows the accounting documents to be assigned to a client-specific data transfer. When a data transfer is created, a user can select the client to which they want to transfer the data if there is no predefined client ID.
CostCategoryId__c CostCategoryId__c Holds a cost center.
Usually, a Booking Detail formula field that refers to Center.
DeliveryDate__c DeliveryDate__c
Discount__c Discount__c
DueDate__c DueDate__c Holds the due date of an invoice to support "open items" management in DATEV.
Duplicate__c Duplicate__c Duplicate__c

Note

Be aware that the DATEV interface does not accept any arbitrary additional fields. For a list of possible fields see Ãœbertragene Belegdaten DE or the Accounting Document or Accounting Document Item object references.

The DATEV interface will only accept additional custom fields on the Accounting Document or the Accounting Document Item if they are defined under the document record data file format (see DATEV XML interface online > Format specification > Record data file in the DATEV Developer Portal). Any fields other than those included in the DATEV format will be ignored, even if they have been correctly created and set.

Transferring Bookkeeping Data to DATEV
Enabling Data Transfer to DATEV

CSV Export to DATEV

In order to support specific DATEV applications (like, for example, DATEV Mittelstand Faktura mit Rechnungswesen or Kanzlei-Rechnungswesen), JustOn can export invoices and booking details (as created from both invoice line items and payment balances). It writes specifically formatted CSV files, which you can then import in the corresponding applications.

DATEV_CSV.png
Exporting CSV to be imported by DATEV applications

In order to generate a CSV export that is compliant to the DATEV CSV format for the posting batch (Buchungsstapel), you must

  • Create a specific JSON export configuration for the CSV file to be produced, and, depending on your requirements, add custom fields to relevant objects and custom settings (see Defining CSV File JSON Configuration)
  • Define a dedicated custom setting Export Settings
Required custom fields

The JSON example configuration requires additional custom fields:

Source Field Description
Business Entity ClientNumber__c The client number (Mandantennummer) for this business entity.
Business Entity ConsultantNumber__c The number of this business entity's tax consultant (Beraternummer).
Booking Period FiscalYearStart__c The start of the fiscal year (Wirtschaftsjahresbeginn).
Booking Detail OffsettingAccountNo__c The offsetting account (Gegenkonto, required value).
Booking Detail TaxKey__c The tax key (Steuerschlüssel).
JSON export configuration for DATEV CSV

To produce a DATEV posting batch-compliant CSV file, you can use the following JSON export configuration.

Make sure to set the correct G/L account length (field 14 in headerRow1, 4 in this example).

{
    "rows": {
        "bookingDetailRow": [
            "ONB2__AbsoluteAmount__c",
            "ONB2__DebitCreditFlag__c",
            "",
            "",
            "",
            "",
            "AccountNo__c",
            "ONB2__BpAccountNo__c",
            "TaxKey__c",
            "BookingDate__c",
            "InvoiceNo__c",
            "",
            "",
            "BookingText__c",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            ""
        ],
        "headerRow1": [
            "EXTF",
            "700",
            "21",
            "Buchungsstapel",
            "7",
            "TimeStamp",
            "",
            "SV",
            "Admin",
            "",
            "businessentity.ConsultantNumber__c",
            "businessentity.ClientNumber__c",
            "FiscalYearStart__c",
            "4",
            "StartDate",
            "EndDate",
            "Rechnungen",
            "",
            "1",
            "0",
            "0",
            "EUR",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "",
            "JustOn"
        ],
        "headerRow2": [
            "Umsatz (ohne Soll/Haben-Kz)",
            "Soll/Haben-Kennzeichen",
            "WKZ Umsatz",
            "Kurs",
            "Basis-Umsatz",
            "WKZ Basis-Umsatz",
            "Konto",
            "Gegenkonto (ohne BU-Schlüssel)",
            "BU-Schlüssel",
            "Belegdatum",
            "Belegfeld 1",
            "Belegfeld 2",
            "Skonto",
            "Buchungstext",
            "Postensperre",
            "Diverse Adressnummer",
            "Geschäftspartnerbank",
            "Sachverhalt",
            "Zinssperre",
            "Beleglink",
            "Beleginfo - Art 1",
            "Beleginfo - Inhalt 1",
            "Beleginfo - Art 2",
            "Beleginfo - Inhalt 2",
            "Beleginfo - Art 3",
            "Beleginfo - Inhalt 3",
            "Beleginfo - Art 4",
            "Beleginfo - Inhalt 4",
            "Beleginfo - Art 5",
            "Beleginfo - Inhalt 5",
            "Beleginfo - Art 6",
            "Beleginfo - Inhalt 6",
            "Beleginfo - Art 7",
            "Beleginfo - Inhalt 7",
            "Beleginfo - Art 8",
            "Beleginfo - Inhalt 8",
            "KOST1 - Kostenstelle",
            "KOST2 - Kostenstelle",
            "Kost-Menge",
            "EU-Land u. UStID",
            "EU-Steuersatz",
            "Abw. Versteuerungsart",
            "Sachverhalt L+L",
            "Funktionsergänzung L+L",
            "BU 49 Hauptfunktionstyp",
            "BU 49 Hauptfunktionsnummer",
            "BU 49 Funktionsergänzung",
            "Zusatzinformation - Art 1",
            "Zusatzinformation- Inhalt 1",
            "Zusatzinformation - Art 2",
            "Zusatzinformation- Inhalt 2",
            "Zusatzinformation - Art 3",
            "Zusatzinformation- Inhalt 3",
            "Zusatzinformation - Art 4",
            "Zusatzinformation- Inhalt 4",
            "Zusatzinformation - Art 5",
            "Zusatzinformation- Inhalt 5",
            "Zusatzinformation - Art 6",
            "Zusatzinformation- Inhalt 6",
            "Zusatzinformation - Art 7",
            "Zusatzinformation- Inhalt 7",
            "Zusatzinformation - Art 8",
            "Zusatzinformation- Inhalt 8",
            "Zusatzinformation - Art 9",
            "Zusatzinformation- Inhalt 9",
            "Zusatzinformation - Art 10",
            "Zusatzinformation- Inhalt 10",
            "Zusatzinformation - Art 11",
            "Zusatzinformation- Inhalt 11",
            "Zusatzinformation - Art 12",
            "Zusatzinformation- Inhalt 12",
            "Zusatzinformation - Art 13",
            "Zusatzinformation- Inhalt 13",
            "Zusatzinformation - Art 14",
            "Zusatzinformation- Inhalt 14",
            "Zusatzinformation - Art 15",
            "Zusatzinformation- Inhalt 15",
            "Zusatzinformation - Art 16",
            "Zusatzinformation- Inhalt 16",
            "Zusatzinformation - Art 17",
            "Zusatzinformation- Inhalt 17",
            "Zusatzinformation - Art 18",
            "Zusatzinformation- Inhalt 18",
            "Zusatzinformation - Art 19",
            "Zusatzinformation- Inhalt 19",
            "Zusatzinformation - Art 20",
            "Zusatzinformation- Inhalt 20",
            "Stück",
            "Gewicht",
            "Zahlweise",
            "Forderungsart",
            "Veranlagungsjahr",
            "Zugeordnete Fälligkeit",
            "Skontotyp",
            "Auftragsnummer",
            "Buchungstyp",
            "Ust-Schlüssel (Anzahlungen)",
            "EU-Land (Anzahlungen)",
            "Sachverhalt L+L (Anzahlungen)",
            "EU-Steuersatz (Anzahlungen)",
            "Erlöskonto (Anzahlungen)",
            "Herkunft-Kz",
            "Leerfeld",
            "KOST-Datum",
            "Mandatsreferenz",
            "Skontosperre",
            "Gesellschaftername",
            "Beteiligtennummer",
            "Identifikationsnummer",
            "Zeichnernummer",
            "Postensperre bis",
            "Bezeichnung SoBil-Sachverhalt",
            "Kennzeichen SoBil-Buchung",
            "Festschreibung",
            "Leistungsdatum",
            "Datum Zuord.Steuerperiode"
        ]
    },
    "rowOrder": [
        "headerRow1",
        "headerRow2",
        "bookingDetailRow"
    ],
    "columns": {
        "headerRow1": {
            "index": {
                "1": {
                    "forceQuotes": true
                },
                "4": {
                    "forceQuotes": true
                },
                "8": {
                    "forceQuotes": true
                },
                "9": {
                    "forceQuotes": true
                },
                "17": {
                    "forceQuotes": true
                },
                "18": {
                    "forceQuotes": true
                },
                "22": {
                    "forceQuotes": true
                },
                "24": {
                    "forceQuotes": true
                },
                "27": {
                    "forceQuotes": true
                },
                "30": {
                    "forceQuotes": true
                },
                "31": {
                    "forceQuotes": true
                }
            }
        },
        "bookingDetailRow": {
            "index": {
                "1": {},
                "2": {
                    "forceQuotes": true
                },
                "3": {
                    "forceQuotes": true
                },
                "4": {},
                "5": {},
                "6": {
                    "forceQuotes": true
                },
                "7": {},
                "8": {},
                "9": {
                    "forceQuotes": true
                },
                "10": {
                    "options": {
                        "dateFormat": "ddMM"
                    }
                },
                "11": {
                    "forceQuotes": true
                },
                "12": {
                    "forceQuotes": true
                },
                "13": {},
                "14": {
                    "forceQuotes": true,
                    "length": 60
                },
                "15": {},
                "16": {
                    "forceQuotes": true
                },
                "17": {},
                "18": {},
                "19": {},
                "20": {
                    "forceQuotes": true
                },
                "21": {
                    "forceQuotes": true
                },
                "22": {
                    "forceQuotes": true
                },
                "23": {
                    "forceQuotes": true
                },
                "24": {
                    "forceQuotes": true
                },
                "25": {
                    "forceQuotes": true
                },
                "26": {
                    "forceQuotes": true
                },
                "27": {
                    "forceQuotes": true
                },
                "28": {
                    "forceQuotes": true
                },
                "29": {
                    "forceQuotes": true
                },
                "30": {
                    "forceQuotes": true
                },
                "31": {
                    "forceQuotes": true
                },
                "32": {
                    "forceQuotes": true
                },
                "33": {
                    "forceQuotes": true
                },
                "34": {
                    "forceQuotes": true
                },
                "35": {
                    "forceQuotes": true
                },
                "36": {
                    "forceQuotes": true
                },
                "37": {
                    "forceQuotes": true
                },
                "38": {
                    "forceQuotes": true
                },
                "39": {},
                "40": {
                    "forceQuotes": true
                },
                "41": {},
                "42": {
                    "forceQuotes": true
                },
                "43": {},
                "44": {},
                "45": {},
                "46": {},
                "47": {},
                "48": {
                    "forceQuotes": true
                },
                "49": {
                    "forceQuotes": true
                },
                "50": {
                    "forceQuotes": true
                },
                "51": {
                    "forceQuotes": true
                },
                "52": {
                    "forceQuotes": true
                },
                "53": {
                    "forceQuotes": true
                },
                "54": {
                    "forceQuotes": true
                },
                "55": {
                    "forceQuotes": true
                },
                "56": {
                    "forceQuotes": true
                },
                "57": {
                    "forceQuotes": true
                },
                "58": {
                    "forceQuotes": true
                },
                "59": {
                    "forceQuotes": true
                },
                "60": {
                    "forceQuotes": true
                },
                "61": {
                    "forceQuotes": true
                },
                "62": {
                    "forceQuotes": true
                },
                "63": {
                    "forceQuotes": true
                },
                "64": {
                    "forceQuotes": true
                },
                "65": {
                    "forceQuotes": true
                },
                "66": {
                    "forceQuotes": true
                },
                "67": {
                    "forceQuotes": true
                },
                "68": {
                    "forceQuotes": true
                },
                "69": {
                    "forceQuotes": true
                },
                "70": {
                    "forceQuotes": true
                },
                "71": {
                    "forceQuotes": true
                },
                "72": {
                    "forceQuotes": true
                },
                "73": {
                    "forceQuotes": true
                },
                "74": {
                    "forceQuotes": true
                },
                "75": {
                    "forceQuotes": true
                },
                "76": {
                    "forceQuotes": true
                },
                "77": {
                    "forceQuotes": true
                },
                "78": {
                    "forceQuotes": true
                },
                "79": {
                    "forceQuotes": true
                },
                "80": {
                    "forceQuotes": true
                },
                "81": {
                    "forceQuotes": true
                },
                "82": {
                    "forceQuotes": true
                },
                "83": {
                    "forceQuotes": true
                },
                "84": {
                    "forceQuotes": true
                },
                "85": {
                    "forceQuotes": true
                },
                "86": {
                    "forceQuotes": true
                },
                "87": {
                    "forceQuotes": true
                },
                "88": {},
                "89": {},
                "90": {},
                "91": {
                    "forceQuotes": true
                },
                "92": {},
                "93": {},
                "94": {},
                "95": {
                    "forceQuotes": true
                },
                "96": {
                    "forceQuotes": true
                },
                "97": {},
                "98": {
                    "forceQuotes": true
                },
                "99": {},
                "100": {},
                "101": {},
                "102": {
                    "forceQuotes": true
                },
                "103": {
                    "forceQuotes": true
                },
                "104": {},
                "105": {
                    "forceQuotes": true
                },
                "106": {},
                "107": {
                    "forceQuotes": true
                },
                "108": {},
                "109": {
                    "forceQuotes": true
                },
                "110": {
                    "forceQuotes": true
                },
                "111": {},
                "112": {
                    "forceQuotes": true
                },
                "113": {},
                "114": {},
                "115": {},
                "116": {}
            }
        }
    },
    "decimalPlaces": {},
    "markAsExported": false,
    "columnSeparator": ";",
    "useASCII": true,
    "filterLineBreaks": true,
    "useCRLF": true,
    "fileName": "EXTF_Buchungsstapel_[StartDate]_[EndDate].csv",
    "options": {
        "decimalSeparator": ",",
        "groupingSeparator": "",
        "dateFormat": "yyyyMMdd",
        "timeFormat": "yyyyMMddHHmmssSSS",
        "language": "de"
    }
}

Exporting Booking Details
Configuring Booking Detail CSV Export

Automatic Accounts Support

To support automatic accounts (Automatikkonten) in DATEV, you can configure JustOn to use gross values when creating bookkeeping data. To this end, you enable the global setting Enable Accounting in Gross Values as described in Enabling Gross Value Bookings.

If, in addition, you use revenue recognition rules to distribute revenues to future booking periods (deferred revenue), you must, in addition,

  • enable the global setting Accounting Gross Taxes on First Month,
  • enable the automatic tax calculation for the gross booking details – using the custom booking code field BuCode with the relevant booking details (see Additional Fields),
  • optionally, create the BuCode field as a formula that returns the required value according to your use cases, like, for example, IF(ONB2__IsGross__c, 101, null)
Example 1: Automatic accounts for both revenue and deferred revenue

This example illustrates bookings for both the revenue and the deferred revenue to DATEV automatic accounts.

Assume an invoice for electronic services or software licenses in a subscription model – so-called SaaS business models. A typical invoice could look as follows:

Title Service Period Start Service Period End Tax Subtotal (net)
Service 2022-04-01 2023-03-31 19% 1200,00
Subtotal (net) 1200,00
VAT 228,00
Grand Total 1428,00

Usage fees for electronic services in the subscription model are usually paid for a year in advance, but revenues are often booked proportionally per month in the service period. To illustrate this approach, assume the following conditions:

  • Service period: 1 year
  • Complete payment on service period start
  • Monthly revenue deferral
  • Tax due and payable with the payment on service period start
  • Bookings for revenue and deferred revenue to DATEV automatic accounts

Here are the relevant booking accounts:

No. Account Name Automatic Account Booking Detail Field
8400 Revenue 19% VAT G/L Account Number
10001 Debtor Contra Booking Account
0990 Deferred Revenue G/L Account Number

In the first month of the service period (04/2022), the entire invoice amount (1428,00) is booked from the debtor account and posted to:

  • Revenue 19% VAT → 119,00 (gross)
  • Deferred Revenue → 1309,00 (gross)
# No. Account Name
Debit
Amount No. Account Name
Credit
Amount
1 10001 Debtor 1428,00 8400 Revenue 19% VAT 119,00
0990 Deferred Revenue 1309,00

In the following months (05/2022 – 03/2023), the deferred revenue is periodically reversed and booked as revenue (net):

# No. Account Name
Debit
Amount No. Account Name
Credit
Amount
2..12 0990 Deferred Revenue 100,00 8400 Revenue 19% VAT 100,00

To make JustOn create booking details for the bookings shown in the example, it requires the following settings:

Object Field Value
Global Settings Create Bookkeeping Data true
Enable Accounting in Gross Values true
Accounting Gross Taxes on First Month true
Invoice Line Item Recognition Rule Default
or Booking Month
Booking Detail BuCode to be created as a formula field IF(ONB2__IsGross__c, null, 40)

Be aware that DATEV automatic accounts only work with bookings that originate from business within Germany (a German company with a German customer). That is, if your business operates foreign markets as well, your BuCode formula must make sure to set the required value only for German business, including a condition that evaluates, for example, the appropriate tax rule or an according business entity/billing country combination.

Now applying this configuration, JustOn generates these gross booking details for the first month of the service period (04/2022):

# Booking
Period
Amount Debit/Credit
Flag
G/L Account
Number
Business Partner
Account Number
Is Gross BuCode Type
1 04/2022 119,00 H 8400 10001 Revenue
2 1309,00 H 0990 10001 Deferred

Booking to a DATEV automatic account with an empty booking code initializes the automatic tax calculation. DATEV will calculate the tax for both the revenue and the deferred revenue. That is, it takes 19,00 off the revenue and 209,00 off the deferred revenue, gaining the complete tax amount of 228,00 in the first month.

To reallocate the deferred revenue in the following months (05/2022 – 03/2023), JustOn also generates the following net booking details:

# Booking
Period
Amount Debit/Credit
Flag
G/L Account
Number
Business Partner
Account Number
Is Gross BuCode Type
3 05/2022 100,00 H 8400 10001 40 Revenue
4 -100,00 S 0990 10001 40 Deferred
5 06/2022 100,00 H 8400 10001 40 Revenue
6 -100,00 S 0990 10001 40 Deferred
..
23 03/2023 100,00 H 8400 10001 40 Revenue
24 -100,00 S 0990 10001 40 Deferred

The booking code 40 deactivates the automatic tax calculation on DATEV automatic accounts, treating the given amounts as net values.

Example 2: Automatic account for revenue, standard account for deferred revenue

In this example, the bookings for the revenue are to be allocated to a DATEV automatic account, whereas the deferred revenue bookings are to be allocated to a "standard" account (without automatic tax calculation by default).

Assume an invoice for electronic services or software licenses in a subscription model – so-called SaaS business models. A typical invoice could look as follows:

Title Service Period Start Service Period End Tax Subtotal (net)
Service 2022-04-01 2023-03-31 19% 1200,00
Subtotal (net) 1200,00
VAT 228,00
Grand Total 1428,00

Usage fees for electronic services in the subscription model are usually paid for a year in advance, but revenues are often booked proportionally per month in the service period. To illustrate this approach, assume the following conditions:

  • Service period: 1 year
  • Complete payment on service period start
  • Monthly revenue deferral
  • Tax due and payable with the payment on service period start
  • Revenue bookings to a DATEV automatic account, bookings for deferred revenue to a standard account

Here are the relevant booking accounts:

No. Account Name Automatic Account Booking Detail Field
8400 Revenue 19% VAT G/L Account Number
10001 Debtor Contra Booking Account
0990 Deferred Revenue G/L Account Number

In the first month of the service period (04/2022), the entire invoice amount (1428,00) is booked from the debtor account and posted to:

  • Revenue 19% VAT → 119,00 (gross)
  • Deferred Revenue → 1309,00 (gross)
# No. Account Name
Debit
Amount No. Account Name
Credit
Amount
1 10001 Debtor 1428,00 8400 Revenue 19% VAT 119,00
0990 Deferred Revenue 1309,00

In the following months (05/2022 – 03/2023), the deferred revenue is periodically reversed and booked as revenue (net values):

# No. Account Name
Debit
Amount No. Account Name
Credit
Amount
2..12 0990 Deferred Revenue 100,00 8400 Revenue 19% VAT 100,00

To make JustOn create booking details for the bookings shown in the example, it requires the following settings:

Object Field Value
Global Settings Create Bookkeeping Data true
Enable Accounting in Gross Values true
Accounting Gross Taxes on First Month true
Invoice Line Item Recognition Rule Default
or Booking Month
Booking Detail BuCode formula

The BuCode formula must return one of three possible values:

  • 101 (or another code according to the applicable tax) to trigger the tax calculation for the gross deferred revenue booking in the first month
  • null for the gross revenue booking in the first month (triggers the automatic tax calculation) as well as for the net deferred revenue bookings in the following months
  • 40 for the net revenue bookings in the following months to deactivate the automatic tax calculation

Accordingly, the formula may look like

IF(
    AND(
        ISPICKVAL(ONB2__Type__c,"Deferred"),
        ONB2__IsGross__c
        ),
    101, 
    IF(
        AND(
            ISPICKVAL(ONB2__Type__c,"Revenue"),
            ONB2__IsGross__c
            ),
        null,
        40
    )
)

Be aware that DATEV automatic accounts only work with bookings that originate from business within Germany (a German company with a German customer). That is, if your business operates foreign markets as well, your BuCode formula must make sure to set the required value only for German business, including a condition that evaluates, for example, the appropriate tax rule or an according business entity/billing country combination.

For the first month of the service period (04/2022), JustOn consequently generates gross booking details for the revenue and for the deferred revenue:

# Booking
Period
Amount Debit/Credit
Flag
G/L Account
Number
Business Partner
Account Number
Is Gross BuCode Type
1 04/2022 119,00 H 8400 10001 Revenue
2 1309,00 H 0990 10001 101 Deferred

Booking to a DATEV automatic account with an empty booking code initializes the automatic tax calculation. Passing a booking code like 101 to an account that is not set as an automatic account will initialize the tax calculation according to the booking code. Consequently, DATEV will calculate the tax for both the revenue and the deferred revenue. That is, it takes 19,00 off the revenue and 209,00 off the deferred revenue, gaining the complete tax amount of 228,00 in the first month.

To reallocate the deferred revenue in the following months (05/2022 – 03/2023), JustOn also generates the following net booking details:

# Booking
Period
Amount Debit/Credit
Flag
G/L Account
Number
Business Partner
Account Number
Is Gross BuCode Type
3 05/2022 100,00 H 8400 10001 40 Revenue
4 -100,00 S 0990 10001 Deferred
5 06/2022 100,00 H 8400 10001 40 Revenue
6 -100,00 S 0990 10001 Deferred
..
23 03/2023 100,00 H 8400 10001 40 Revenue
24 -100,00 S 0990 10001 Deferred

The booking code 40 deactivates the automatic tax calculation on DATEV automatic accounts, treating the given revenue amounts as net values. Accordingly, the empty booking code for standard target accounts does not trigger any tax calculation, so the deferred revenue amounts are treated as net values as well.