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

Die externe Software sendet die Belegdaten an die asello Cloud. Dies geschieht über die asello Rest-Schnittstelle.
Mittels HSM signiert asello die Rechnung, wodurch diese Ihre rechtliche Gültigkeit erhält (RKSV/Österreich)
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)
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
{
  "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
{
    "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.