# DATEV OPOS-Liste (Offene-Posten-Liste) — research notes Reference material behind `app/pages/accounting/opos/index.vue` + `server/api/accounting/opos/index.get.ts` (researched 2026-09-03 from the DATEV Wissensplattform, DATEV's sample printout, the DATEV-Format specs and community/third-party sources). Not consumed by the build. Primary DATEV docs (https://wissensplattform.apps.datev.de/help/document/): 9211669 (Spalten OPOS-Liste), 9211665 (Spalten OPOS-Konto), 9211668 (Eigenschaften), 9211667 (OPOS-Liste ausgeben), 1070428 (Fälligkeiten & Zahlungsbedingungen), 9211385 (Belegfeld 2), 9218698 / 9211635 (Fälligkeitsliste), 9211639 (Forderungsaltersreport), 9211797 (OPOS-Stammdaten), 9211666 (Buchungen ausziffern), 9218720 (Mahnstammdaten), 9247781 (Vorschlagsliste Zahlungen), 1002099 (Schnellinfo Offene Posten). Sample printout: https://www.snk-berater.de/wp-content/uploads/2016/03/Muster_OPOS.pdf ## 1. Concept - OPOS = sub-ledger of **Personenkonten**: Debitoren (10000–69999) and Kreditoren (70000–99999), SKR03 and SKR04 alike. Every posting on a Personenkonto without a matching counter-posting is an *offener Posten*. - OPs originate from Rechnung (Debitor-Soll / Kreditor-Haben), Gutschrift (Debitor-Haben / Kreditor-Soll), Zahlung / Teilzahlung, Skonto (field on the payment), Mahnzins/-gebühr (Sachverhalt 31/40), Generalumkehr, Anzahlungen. - **Matching key = Rechnungsnummer (Belegfeld 1).** Equal amounts alone never clear an item. - Clearing kinds shown in column *Ausgl.*: **A** automatisch (same Rechnungs-Nr., balance 0), **M** manuell (Buchungen ausziffern, Strg+Shift+A → OP-Nummer), **N** Konten-Nullsaldo. - Remainder handling: *Restbetrag ausbuchen* window when marked items ≠ 0,00 (Skonto / Kleindifferenz / leave open). **Kleindifferenz** (Kz **K**) = tolerance as amount or % set in the OPOS-Stammdaten (community default 3 %, Skonto plausibility 2 %); flagged items are ignored by Mahnwesen and Zahlungsverkehr. **Postensperre** (Kz **9** / Belegfeld 2 = 9, field 15, *Sperre bis*) excludes items from dunning and payment proposals; **Zinssperre** suppresses Mahnzinsen. - **Fälligkeit hierarchy** (lowest → highest priority): Mandant Zahlungsbedingungen → Debitor/Kreditor master data (Zahlungsbedingung 10–999 or Fälligkeit in Tagen + Skonto %) → per invoice via Belegfeld 2 (`TTMMJJ` explicit net due date; 1–4 digit key = Zahlungsbedingung 10–97 + Mandantenbank 1–99; `9` = block) or field 117 *Fälligkeit* (TTMMJJJJ) / OPOS-Informationen (Strg+O). Gutschriften have no Fälligkeit unless "Fälligkeit bei Gutschriften ermitteln" is on. If OPOS is activated retroactively, old OPs get Belegdatum as Fälligkeit. - Zahlungsbedingung object (Formatkategorie 46): Nummer, Bezeichnung, Fälligkeitstyp (1 Tage / 2 Datum), Skonto 1 % / Tage, Skonto 2 % / Tage, Fällig Tage (+ up to 3 date periods for type 2). ## 2. How the list looks ### Columns of the OPOS-Liste / OPOS-Konto (doc 9211669 / 9211665; `*` hidden by default, `**` only with "Skontofälligkeiten anzeigen") BL (Beleglink) · Konto / Beschriftung · OP-Nummer`*` · **Rechnungs-Nr.** (Belegfeld 1) · **Datum** (Belegdatum) · **Fälligkeit** · aktuelle Skontofälligkeit`**` · Skontofrist 1/2`**` · möglicher Skonto`**` · Zahlbetrag`**` · Re-Saldo / Skonto S/H`**` · **Betrag Soll** · **Betrag Haben** · **Saldo S/H** · Skontofälligkeit 1/2, Skonto 1/2 %, Skontobetrag 1/2`**` · Gegenkonto · WKZ / Eingabebetrag / S/H / Kurs`*` · R (Raffung) · **Ausgl.** (A/M/N) · **fällig** (days until due, **negative = overdue**) · Belegfeld 2 · **Kz** (K Kleindifferenz, 9 Sperre, 1/2/3 Mahnstufe, L*/U*/S* handed to Zahlungsverkehr) · Sperre bis`*` · Buchungstext · Auftrags-Nr.`*` · KOST1/KOST2 · USt% · Stapel-Nr. · BSNr. · ZI · GP-Bank / SEPA-Mandat · Mdt-Bank / Zahlungskondition · Sachverhalt / Zinssperre · (Mahnstufe, Mahndatum, Sperre, ZV-Kennz., KD, Leistungsdatum …) ### Classic printout "OPOS-Liste Posten" (DATEV Musterauswertung) - Header left: Berater/Mandant/WJ, Mandant name, `Kontenumfang: offene`, `Postenumfang: offene und ausgeglichene`, `Sortierung: Konto`, `Höchstes Buchungsdatum: 31.03.2009`; right: title + Blatt. - Column row: `Konto | Name 1 / Name 2 | Rechnungs-Nr. | Datum | Fälligkeit | Belegnummer | Gegenkonto | Kz | Betrag Soll | Betrag Haben | Saldo (S/H) | R | fäl. | Buchungstext`. - Grouped per Konto with a **"Gesamt"** subtotal (Σ Soll, Σ Haben, Saldo S/H), then "1**** Gruppe gesamt" per account group and **"Debitoren gesamt"** / "Kreditoren gesamt". - Footer: `Die Auswertung entspricht dem derzeitigen Stand der Buchführung.` · `Währung: Euro`. ### Screen (DATEV Arbeitsplatz "Schnellinfo Offene Posten" / OPOS-Konto) Toolbar: `Auswahl: Offene / Ausgeglichene / Alle Posten` · Stichtag. Grid: `BL | Rechnungs-Nr. | Datum | Fälligkeit | Gegenkonto | Betrag Soll | Betrag Haben | Saldo | R | fällig | Belegfeld 2 | Kz`. Footer bar: `Summe offene Posten: 518,84 S / 0,00 H · Saldo: 518,84 S · Kreditlimit · JVZ · EB-Wert · Alle Werte in EUR`. Status bar shows *Anzahl OP*. No colour coding — overdue is the negative *fällig*. ### Eigenschaften / options (doc 9211668) Verdichtung gerafft/ungerafft · Detaillierung **Posten / Konten (= OP-Saldenliste) / Kontengruppen** · Zeitraum: aktueller Stand oder **Stichtag** (Monat / Belegdatum) · Posten einer Rechnungs-Nr. zusammenhalten · Stornierte Buchungen ausblenden · Skontofälligkeiten anzeigen · Sortierung (Konto default, Rechnungs-Nr., Datum, Fälligkeit, Betrag) · Kontenumfang Debitoren/Kreditoren, alle Konten / Konten mit offenen Posten, von–bis · Postenumfang offene / ausgeglichene / alle · Druckumfang (Posten und Saldensatz / nur Saldensatz) · filters on every column · drill-down OPOS-Konto (F9 Buchung bearbeiten, Strg+O OPOS-Informationen, Strg+Shift+A ausziffern) · Excel / Word / RTF / PDF export. ## 3. Aging / Fälligkeit reports | Report | Grain | |---|---| | OPOS-Liste | item level, signed *fällig* days, grouped per Konto with subtotals, Stichtag | | OPOS-Konto | one account: items + Salden footer, working screen for ausziffern | | OP-Saldenliste | OPOS-Liste with Detaillierung *Konten*: one line per account | | Fälligkeitsliste | liquidity time series by Nettofälligkeit, Debitoren vs. Kreditoren side by side, Staffelung täglich/wöchentlich/monatlich/jährlich, kumuliert, Differenz | | Forderungsaltersreport | the real aging report (Debitoren only): up to 6 terms "seit/in N Tagen", preset **30/60/90 days** both directions, Stichtag, per-account totals | | Debitorenanalyse | payment behaviour of paid invoices (last 12 months) | | Kontoauszug (Mahnwesen) | customer statement of (mahnfällige) items | | Vorschlagsliste Zahlungen | payment proposal from due Kreditor items (Betrag · Skonto · Zahlbetrag · Kontosaldo · Fälligkeit …) | Recommended buckets: nicht fällig · 1–30 · 31–60 · 61–90 · > 90 Tage überfällig (optionally the forward side in 1–30 / 31–60 / 61–90 / später and "ohne Fälligkeit"), always against a Stichtag. ## 4. Export & interface formats ### DATEV-Format Buchungsstapel (EXTF, version 700, Formatkategorie 21) — OPOS-relevant fields 1 Umsatz · 2 S/H · 7 Konto · 8 Gegenkonto · 9 BU-Schlüssel · 10 Belegdatum TTMM · **11 Belegfeld 1** (Rechnungs-Nr., OP key, 36 chars) · **12 Belegfeld 2** (12 chars: TTMMJJ due date / Zahlungsbedingung key / 9) · **13 Skonto** (payments only) · 14 Buchungstext (60) · **15 Postensperre** 0/1 · 16 Diverse Adressnummer · 17 Geschäftspartnerbank · **18 Sachverhalt** (31 Mahnzins, 40 Mahngebühr) · **19 Zinssperre** · 20 Beleglink (210) · 37/38 KOST1/KOST2 · 95 Auftragsnummer · 96 Buchungstyp (Anzahlungen AA/AG/AV/SR/SU/SG/SO) · 105 SEPA-Mandatsreferenz · **106 Skontosperre** · 111 Postensperre bis · **114 Festschreibung** · 115 Leistungsdatum · **117 Fälligkeit** TTMMJJJJ · **118 Generalumkehr** · 125 Abw. Skontokonto. Header (31 fields): EXTF · 700 · Formatkategorie · Formatname · Formatversion · Erzeugt am · … · Beraternummer · Mandantennummer · WJ-Beginn · Sachkontenlänge · Datum von/bis · Bezeichnung · Buchungstyp · Rechnungslegungszweck · Festschreibung · WKZ · … · Sachkontenrahmen. ### DATEV-Format Debitoren/Kreditoren (Formatkategorie 16) — OPOS master fields 108 Kreditlimit · 109 Zahlungsbedingung · 110 Fälligkeit in Tagen · 111 Skonto % · 112–120 Kreditoren Ziel 1–5 / Skonto 1–5 · 121 Mahnung key (0–9) · 122 Kontoauszug · 127/128 Mahnlimit Betrag / % · 129–132 Zinsberechnung / Mahnzinssatz 1–3 · 233 Mahnsperre bis · 235 Zahlungssperre bis · 237–239 Mahngebühr 1–3 · 251–253 Mahnfrist 1–3 · 254 Letzte Frist. ### OPOS export (Bestand | Exportieren | ASCII-Daten | Offene Posten → OPOS.TXT), semicolon separated `Kontonummer; Rechnungsnummer; Rechnungsdatum; Faelligkeit; Gegenkonto; BetragSoll; BetragHaben; Saldo; SHSaldo; WKZ Eingabebetrag; Eingabebetrag; SHEingabebetrag; Kurs; Raffung; Faellig; Belegnummer; KZ; Buchungstext; UstSatz; Vorlauf; BSNummer; AusgleichsKZ` (AusgleichsKZ A/M/K/N/O). Automation via `KRExport.exe` (Task Scheduler) or the ISWL OPOS-Export. The page's "DATEV-CSV" button writes exactly this field order (extra columns appended after the DATEV set). Re-import into another Mandant is done as a Buchungsstapel of open invoice lines against the Vortragskonten 9060/9080 ff. ### APIs DATEVconnect (local Desktop REST API, "Accounting → open items", fields like `is_cleared`, `payment_indicator`, no webhooks) is the only documented way to read open items programmatically; the cloud Datenservices (`accounting:dataexchange`, `accounting:extf-files`, `accounting:documents`) have no dedicated open-items endpoint. DUO exposes the list only as a printer-icon xls export. ## 5. Terminology (German → English) Offene Posten / OP = open items · Debitor / Kreditor = customer (A/R) / vendor (A/P) · Personenkonto = sub-ledger account · Konto / Beschriftung = account no. / name · Rechnungs-Nr. / Belegfeld 1 = invoice no. (OP key) · Belegfeld 2 = due date / payment-term key / reference · Fälligkeit = due date · Skontofälligkeit / möglicher Skonto / Zahlbetrag = discount due date / available discount / amount payable · Betrag Soll / Haben = debit / credit amount · Saldo S/H = balance with D/C indicator · Re-Saldo = invoice-level remaining balance · Restbetrag = remainder · Teilzahlung = partial payment · Ausgleich / ausziffern = clearing / matching · Kleindifferenz = minor difference · Raffung = compression per invoice · fällig (Tage) = days until due, negative = overdue · Mahnstufe / Mahnfrist = dunning level / period · Postensperre / Zahlsperre / Mahnsperre = item / payment / dunning block · Zahlungsbedingung = payment term · Zahlungsvorschlag = payment proposal · Stichtag = as-of date · Höchstes Buchungsdatum = latest posting date · Postenumfang / Kontenumfang = item / account scope · Verdichtung (Posten, Konten, Kontengruppen) = aggregation level · Fälligkeitsliste = due-date schedule · Forderungsaltersreport = receivables aging report · Saldenliste = balance list · JVZ / EB-Wert = YTD turnover / opening balance. ## 6. How the ERP page maps to this - Konto = `c_bpartner.Value` (search key) + Name; one row per invoice/credit memo ("gerafft"), optionally unallocated payments as Haben-Posten. - Betrag Soll / Haben derived from the document amount and the allocated amount; Saldo = Soll − Haben (= iDempiere `invoiceOpen`, or `invoiceOpenToDate` for the Stichtag); S/H from the sign. - fällig = −(days overdue) with `paymentTermDueDate`; Kz = Mahnstufe from `c_dunningrunline`, K when a partially paid item is within 1 % / 1,00 € of zero. - Verdichtung Posten / Saldenliste / Einzelposten; Kontenumfang Debitoren / Kreditoren / beide; OP-Stichtag; Fälligkeitsstruktur 30/60/90; footer Anzahl OP · Summe OP S/H · Saldo · Höchstes Buchungsdatum · Stichtag; print-out in the DATEV "OPOS-Liste Posten" layout; Excel + DATEV-CSV. - Not modelled (no data in iDempiere): Ausgl. A/M/N for cleared items, Gegenkonto, Postensperre, Belegfeld 2, KOST1/2, Kontengruppen.