Belegsignatur über asello Cloud

Bei dieser Variante werden die Rechnungsdaten zuerst an die asello Cloud übertragen. Diese erstellt und signiert den Beleg anschließend automatisch und sendet die gültigen QR-Code-Daten an die externe Software zurück. Die Belegnummer, Kassennummer und der Qr-Code müssen danach auf den Beleg gedruckt werden. 

Vorteile

  • Einfache Integration über eine Rest-Schnittstelle

  • Wartung der Kasse (Nullbelege, Export, etc.) direkt aus der asello App (Webinterface) möglich

Nachteile

  • Beleg-Druck muss selbst implementiert werden

  • Hardware (Bon-Drucker, Scanner, etc.) muss implementiert werden

  • TSE-Signatur (Deutschland): Eigene Implementierung notwendig

Ablauf


variante2.png
  1. Die externe Software sendet die Belegdaten an die asello Cloud. Dies geschieht über die asello Rest-Schnittstelle.

  2. Mittels HSM signiert asello die Rechnung, wodurch diese Ihre rechtliche Gültigkeit erhält (RKSV/Österreich)

  3. Aus den übertragenen Daten wird auf der asello Cloud automatisch ein Beleg erstellt und in der Datenbank gespeichert. Dieser Schritt kann nicht rückgängig gemacht werden. (Fiskal-Journal)

  4. Nachdem die Rechnung signiert und erstellt wurde, werden die Qr-Code-Daten generiert, welcher die rechtliche Gültigkeit des Beleges bestätigt. Dieser QR-Code und weitere Daten über den Beleg werden anschließend an die externe Software zurück übertragen.


Der QR-Code und die Beleg-Daten müssen anschließend auf den dazu gehörigen Beleg gedruckt und dem Kunden übergeben werden (Belegerteilungspflicht).

Technische Implementierung

Die Umsetzung erfolgt über einen Aufruf der asello Rest-API. Um einen Beleg erstellen zu können, müssen Daten über die Rechnung und deren Produkte mitgegeben werden. Wie ein Aufruf mit einem Produkt aussieht sehen Sie im folgenden Beispiel.

URL
https://kassa.asello.at/api/v2/receipts/create


Beispiel-Body
JavaScript
{
  "paymentType": "Cash",
  "cashRegisterId": 34950,
  "items": [
    {
      "name": "Blumentopf",
      "description": "Großer Blumentopf für den Gartenbereich",
      "netPrice": 33.61,
      "grossPrice": 39.99,
      "productId": 597349,
      "quantity": 1
    }
  ]
}

Nachdem Sie den Befehl geschickt haben, antwortet der Server mit den Rechnungsdaten.

Beispiel-Response
JavaScript
{
    "paymentType": "Cash",
    "cashRegisterId": 1,
    "cashRegisterNumber": "1",
    "qrData": "_R1-AT1_1_R20211000239_2021-10-22T14:36:51_40,33_0,00_0,00_0,00_0,00_HoKaNku8JrE=_5936548E_YShPgCQ86mc=_9dg0KqW4ZIywwQgUPD092wom6HD3kAcW/Fyo2Du4dwgALcipsZSE/17WFwzNr7WF3YytpqDgly9DPw3CGWUTLQ==",
    "signature": {
        "header": "{\"alg\":\"ES256\"}",
        "payload": "_R1-AT1_1_R20211000239_2021-10-22T14:36:51_40,33_0,00_0,00_0,00_0,00_HoKaNku8JrE=_5936548E_YShPgCQ86mc=",
        "signature": "9dg0KqW4ZIywwQgUPD092wom6HD3kAcW/Fyo2Du4dwgALcipsZSE/17WFwzNr7WF3YytpqDgly9DPw3CGWUTLQ==",
        "signatureFailed": false
    },
    "paymentItems": [
        {
            "id": 37111308,
            "type": "Cash",
            "amount": 40.33
        },
        {
            "id": 37111309,
            "type": "CashGiven",
            "amount": 40.33
        }
    ],
    "items": [
        {
            "id": 47887099,
            "name": "Blumentopf",
            "description": "Grosser Blumentopf für den Gartenbereich",
            "netPrice": 33.610000,
            "grossPrice": 40.330000,
            "vatRate": 20.00000,
            "quantity": 1.000000,
            "type": "Simple",
            "notCapableContributionMargin": false,
            "state": "New",
            "childItems": []
        }
    ],
    "discount": 0.00000,
    "number": "R20211000239",
    "id": 20552943,
    "state": "Open",
    "timeStamp": "2021-10-22T14:36:51.5403308+02:00",
    "type": "Receipt",
    "sumGross": 40.33,
    "sumNet": 33.61,
    "userId": 0
}

Auf den Beleg muss die Belegnummer (number) sowie der Qr-Code mit dem Inhalt (qrData) gedruckt werden.