invoice library

Rechnungen (§ 11 UStG, keine Belege) und Kunden über die Rechnungs-API — Zwilling von @kreiseck/kasseneck-api/rechnung im JS-Paket.

Der Schlüssel ist der api_key des Kontos, ohne Kassen-Token. Live braucht das Konto die Freigabe durch Kasseneck; vor dem ersten Ausstellen InvoiceApi.getInvoiceSetupStatus aufrufen.

Classes

Brand
Eine Marke des Kontos (Logo, Farbe, Absender); id geht als brandId in issueInvoice.
CancelResult
CreditNoteItemInput
Eine Gutschriftsposition: wie InvoiceItemInput, dazu die Rückgabe-Wahl.
CreditNoteRequest
CreditNoteResult
CreditNoteSummary
Customer
CustomerInput
CustomerPage
EInvoiceStatus
Wie weit eine Rechnung als E-Rechnung (EN 16931) taugt.
Invoice
Eine Rechnung oder Gutschrift. Die Felder unter „Detail" liefert nur getInvoice; in Listen und Ausstell-Antworten sind sie null.
InvoiceApi
InvoiceDetailPayment
Eine gebuchte Zahlung in der Detailsicht (getInvoice). Das Datum heißt hier date, in recordInvoicePayment paidAt. Altbestand kann ohne Kennung, Datum und Zahlart sein; der Betrag ist immer da.
InvoiceItem
Eine gespeicherte Position: wie gesendet, fehlende Angaben mit ihrem Standardwert.
InvoiceItemInput
InvoiceNotice
Ein Hinweis an einer erfolgreichen Antwort — kein Fehler, nur etwas, das der Aufrufer wissen sollte. Die Codes stehen in invoiceNoticeCodes.
InvoicePage
InvoicePayment
Eine gebuchte Zahlung, wie die API sie zurückgibt.
InvoicePreview
Was issueInvoice mit dieser Anfrage ausstellen würde — ohne Nummer, ohne Dokument, ohne Zahlung (previewInvoice).
InvoiceRecipient
Der Empfänger, wie er auf der Rechnung steht (beim Ausstellen eingefroren, nicht der heutige Kundenstamm).
InvoiceSetupGap
InvoiceSetupStatus
InvoiceTotals
Summen einer Rechnung in Cent, immer positiv — auch bei einer Gutschrift (docType: 'credit_note'); das Vorzeichen steht im Belegtyp, nicht im Betrag. Gerechnet wird je Satz wie in computeInvoiceTotals.
InvoiceTransport
InvoiceVatIdProof
UID-Nachweis an einer Rechnung: gueltige Pruefung der Kunden-UID, hoechstens 30 Tage vor dem Festschreiben.
InvoiceVatIdRisk
Ausgestellt ohne Ergebnis der UID-Pruefung; das Risiko traegt der Aussteller.
InvoiceXml
Die E-Rechnung aus getInvoiceXml, wie der Server sie sendet.
IssueInvoiceItemInput
Eine Position beim Ausstellen (issueInvoice): wie InvoiceItemInput, dazu optional die Reservierung aus der Lager-API, die diese Position einloest.
IssueInvoiceRequest
IssueResult
PaymentInput
Eine Zahlung, wie das Fremdsystem sie meldet.
PreviewResult
Ergebnis von previewInvoice.
RecordPaymentRequest
Eine Zahlung nachtragen. Der Schlüssel ist Pflicht: ohne ihn bucht eine Wiederholung nach einem Zeitlimit ein zweites Mal.
RecordPaymentResult
Ergebnis von recordInvoicePayment.
TotalsItem
Was für die Summe einer Rechnung zählt (computeInvoiceTotals) – InvoiceItemInput erfüllt es unverändert.
VatRateTotal
Summen eines USt-Satzes.

Enums

ErrorOutcome
Ausgang eines gescheiterten Aufrufs. rejected: nichts geschehen. unknown: der Vorgang kann ausgefuehrt sein (ein Beleg signiert, ein Storno gebucht, Ware gebucht, eine Rechnung ausgestellt); nie blind wiederholen. Belege, Stornos und Zahlungen nachlesen; ein Aufruf mit idempotencyKey nur mit demselben Schluessel erneut senden (wirkt genau einmal, ein neuer buchte doppelt); ohne Schluessel erst nachlesen.
ReturnDisposition
Rueckgabe-Wahl als Typ; der Name ist der Wert am Draht (ReturnDisposition.defective.name = 'defective').

Constants

clientErrorCodes → const Set<String>
Codes, die das Paket selbst vergibt, nicht der Server: route_missing (HTML statt Backend, der Aufruf kam nie an) und response_unreadable (ein signierender Aufruf meldete Erfolg, die Antwort ist aber unlesbar). dialect_mismatch vergibt das Paket ebenfalls, der Code gehoert aber zum Rand des Servers.
creditNoteReasons → const List<String>
Gründe einer Gutschrift; der Server druckt den deutschen Text.
customerTypes → const List<String>
docTypes → const List<String>
Rechnung oder Gutschrift (bis 9.x RE/GU).
einvoiceFormats → const List<String>
einvoiceMissingCodes → const List<String>
Was einer Rechnung zur vollständigen E-Rechnung fehlt (einvoice.missing, auch in details.missing von invoice_requirements_missing).
invoiceCalls → const List<String>
Die Aufrufe der Rechnungs-API, in der Reihenfolge des Vertrags.
invoiceErrorCodes → const List<String>
Stabile Fehlercodes — am Code entscheiden, nie am Text.
invoiceLanguages → const List<String>
Sprachen einer Rechnung. Eine Rechnung hat eine Nummer und eine Sprache, beim Ausstellen eingefroren; Behörden bekommen immer de.
invoiceListStatus → const List<String>
invoiceNoticeCodes → const List<String>
Hinweise an einer erfolgreichen Antwort — keine Fehler.
invoicePaymentMethods → const List<String>
Wie eine Rechnung bezahlt wurde. cash wird gebucht, die Antwort trägt dann zusätzlich den Hinweis cash_receipt_required: eine Barzahlung ist ein Barumsatz und braucht einen Beleg (§ 132a BAO).
invoiceRequestErrorCodes → const List<String>
Fehlercodes, die nicht die Rechnung, sondern die Anfrage betreffen: Anmeldung, Freischaltung, Rand (dialect_mismatch, internal_translation_error, response_translation_failed) und eine fehlende Route. Sie gehören nicht zu invoiceErrorCodes, darum liefert invoiceErrorCode für sie null.
invoiceSetupRequirements → const List<String>
Was vor dem Ausstellen erfüllt sein muss — in dieser Reihenfolge meldet getInvoiceSetupStatus die Lücken.
invoiceUnits → const List<String>
Einheiten einer Position. Der Aufdruck folgt der Sprache der Rechnung (Stk / pcs), in der E-Rechnung steht der Code aus UN/ECE Rec 20/21.
itemKinds → const List<String>
Ware oder Leistung — ohne das lässt sich ig. Lieferung nicht von Reverse Charge trennen. Ohne Angabe gilt goods.
kInvoiceBaseUrl → const String
Standardadresse der Rechnungs-API (die oeffentliche Basis).
kPosBaseUrl → const String
Basis des Kassenwegs (Kanal app). Die Web-Kasse ruft denselben Weg im gleichen Ursprung als /api/v3.
kPublicBaseUrl → const String
Basis der oeffentlichen API.
priceModes → const List<String>
returnDispositions → const List<String>
Die Werte der Rueckgabe-Wahl, englisch wie am Draht, in der Reihenfolge des Vertrags.
reverseChargeReasons → const List<String>
Gründe für den Übergang der Steuerschuld im Inland (§ 19 UStG samt Verordnungen). Ohne Grund gibt es kein domesticReverseCharge.
taxSchemes → const List<String>
Der Steuerfall einer Rechnung. Er wird vom Server abgeleitet (Kundenland, Kundenart, UID, Ware oder Leistung); eine mitgeschickte Angabe muss dazu passen, sonst tax_scheme_mismatch. Neue Fälle stehen hinten.
vatRates → const List<int>
writeOffReasonCodes → const List<String>
Warum eine Rechnung abgeschrieben wurde (writeOffReasonCode).
zeroRatedTaxSchemes → const List<String>
Steuerfälle, in denen die Rechnung keine Steuer ausweist: jede Position zählt zu 0 %, gleich welcher vatRate an ihr steht (computeInvoiceTotals). oss gehört nicht dazu — dort wird Steuer ausgewiesen, nur nicht österreichische.

Functions

computeInvoiceTotals(Iterable<TotalsItem> items, String priceMode, [String taxScheme = 'normal']) → InvoiceTotals
Netto, USt und Brutto einer Rechnung in Cent, je Satz absteigend — dieselbe Form wie invoice.totals in den Antworten.
invoiceErrorCode(Object? error) → String?
Der Fehlercode eines geworfenen Fehlers — null, wenn es keiner der Rechnungs-API ist.
invoiceFieldErrors(Object? error) → List<({String field, String message})>
Die Feldfehler einer validation-Antwort; leer, wenn es keine sind.
isInvoiceErrorCode(String? code) → bool
Gehört code zum Katalog der Rechnungs-API?
isOutcomeUnknown(Object? error) → bool
Ist der Ausgang dieses Fehlers unklar? Dann den Aufruf nicht blind wiederholen: Belege, Stornos und Zahlungen nachlesen; einen Aufruf mit idempotencyKey nur mit demselben Schluessel erneut senden; ohne Schluessel erst nachlesen (siehe ErrorOutcome). Gilt fuer jede Fehlerart; nur KasseneckApiError und KasseneckHttpError koennen unklar sein.
isReturnDisposition(Object? value) → bool
Ist value eine Rueckgabe-Wahl aus returnDispositions? Der innere deutsche Wert (lager, defekt, entsorgt) ist keine.

Exceptions / Errors

KasseneckApiError
Fachlicher Fehler des Backends (PIN falsch, Kasse belegt, Geraet gesperrt …).
KasseneckHttpError
Die Antwort war keine brauchbare Huelle {status, data} oder der HTTP-Weg scheiterte. Traegt bewusst nichts aus dem Rumpf: dort koennten Werte stehen, die wir gerade nicht ins Protokoll lassen wollen.
KasseneckValidationError
Der Aufrufer hat etwas nicht mitgegeben, oder die Antwort trug nicht, was der Aufruf zusagt. Die Meldung nennt immer nur das Feld, nie seinen Wert — sonst stuende ein Geraetegeheimnis im Protokoll.