{
  "openapi": "3.0.1",
  "info": {
    "title": "anybill VendorApi",
    "description": "<p>Api for the anybill service for vendors.</p>\n<p>All endpoints need authorization. To authorize you must issue an oauth2(ropc)-request to https://adanybill.b2clogin.com/ad.anybill.de/oauth2/v2.0/token?p=b2c_1_ropc_vendor </p>\n<p>Further information about our services and how to use this api can be found <a href='https://developers.anybill.de/'>here</a></p>\n<p>Feel free to contact us.</p><p><a href='../swagger'>Swagger UI</a></p><p><a href='../redoc'>ReDoc</a></p><br /><strong>Please pay attention that all requests must be prefixed with: <em>/api</em></strong>",
    "contact": {
      "name": "anybill",
      "url": "https://anybill.de/",
      "email": "info@anybill.de"
    },
    "version": "2.0"
  },
  "servers": [
    {
      "url": "https://vendor.stg.anybill.de/api"
    }
  ],
  "paths": {
    "/v2/bill": {
      "post": {
        "tags": [
          "Bill"
        ],
        "summary": "Add receipt",
        "description": "Adds an receipt to the system.\r\n\r\n## Anonymous receipt\r\nIf `loyaltyCardBarCode` is **not** provided in the query parameters, this receipt is considered to be an anonymous receipt.\r\nIn that case a link to the created receipt is returned.\r\n\r\nAnonymous receipts are ones for which anybill is not able to assign them to a specific app user because of missing information.\r\nThis might be because the user does not yet have an anybill account.\r\nThe user for whom the receipt was issued has to open the link provided in the response and add the receipt to his account manually.\r\n\r\n## User receipt\r\nUser receipts are ones for which anybill is able to assign them to a specific app user.\r\nIf `loyaltyCardBarCode` is provided in the query parameters, this bill is considered to be a user receipt that belongs to the user owning the provided loyalty card.\r\n\r\n**Note:**\r\n* In contrast to anonymous receipts, no link is returned in that case because the bill is already assigned to an AppUser.\r\n\r\n## Errors\r\n| Type | Description |\r\n|-------|------------|\r\n| loyaltycard-notfound | Provided LoyaltyCard was not found in our system. |\n\nNeeded scopes: **_bill_**\n\nNeeded permissions:\n- **_Bill_** with **_Write_**",
        "parameters": [
          {
            "name": "loyaltyCardBarCode",
            "in": "query",
            "description": "Barcode of a LoyaltyCard that uniquely identifies a AppUser for a Vendor Customer.",
            "schema": {
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "description": "A dto containing the store id, the bill should be added to, and the receipt with its line items.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/AddBillDto"
              },
              "examples": {
                "Valid bill": {
                  "value": {"storeId":"8a39e4","bill":{"date":"2026-03-06T19:24:29.4546824+01:00","customText":"Thank you for your purchase!","lineItems":[{"quantityType":"Count","quantity":2.0,"unitGrossPrice":12.95,"unitNetPrice":10.88,"totalNetPrice":21.76,"totalGrossPrice":25.90,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":2.05,"priceModifier":"Monetary","totalVatAmount":4.14,"vat":19.0,"name":"Article 1","description":null,"ean":"5329858234","returnBarcodeReference":null,"categoryId":"459429ca-d625-4300-9c80-a553adcb589f","text":null,"sequenceNumber":0,"type":null},{"quantityType":"Kilogram","quantity":0.736,"unitGrossPrice":1.5,"unitNetPrice":1.4,"totalNetPrice":1.03,"totalGrossPrice":1.1,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":null,"priceModifier":null,"totalVatAmount":0.07,"vat":7.0,"name":"Article 2","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":"1e6683a7-8601-4c8d-9e81-ae6cfed913cf","text":null,"sequenceNumber":1,"type":null}],"categories":["459429ca-d625-4300-9c80-a553adcb589f","1e6683a7-8601-4c8d-9e81-ae6cfed913cf","921a6fdb-35a5-400f-ab18-203c1ddedb47"],"tenders":[{"tenderType":"CreditCard","detailedType":"VISA","currencyCode":"EUR","amount":7.0,"paymentDetails":{"cardNumber":"123xxxxxxxx","bankName":"Best VISA Bank","terminalId":"TID123","terminalText":"Vielen Dank für die Benutzung unseres Terminals","terminalDateTime":null,"transactionNumber":"XYZ123","traceNumber":null,"pan":null,"expiryYear":null,"expiryMonth":null}},{"tenderType":"GiftCard","detailedType":"Geschenkgutschein Typ 1","currencyCode":"EUR","amount":20.0,"paymentDetails":{"initialBalance":50.0,"remainingBalance":30.0,"dateOfExpiry":"2027-01-01T00:00:00+02:00"}}],"totalGrossAmount":27.0,"totalNetAmount":22.79,"totalTaxAmount":4.21,"currencyCode":"EUR","coupons":[{"title":"20 % off your next purchase!","description":"Enjoy 20 % off with the code SUPERWEEKEND!","codeType":"Text","code":"SUPERWEEKEND","redeemStartDate":"2026-03-15T23:59:59+02:00","redeemEndDate":"2026-03-08T06:00:00+02:00"}],"legalInformation":{"beginDateTime":"2026-03-06T19:23:52.4546824+01:00","endDateTime":"2026-03-06T19:24:29.4546824+01:00","securityModuleNumber":"TSE Number","transactionId":"TID 123 456","cashierName":"Fr. Müller","tseFailure":false,"posInspectionQRData":null,"additionalLegalText":null,"signature":null,"signatureCounter":null,"billId":null,"additionalLegalProperties":{"additionalProperty1":{"displayName":"Super important legal stuff","value":"12345"},"additionalProperty2":{"displayName":"Not so super important legal stuff","value":"This is text for the additional legal property."}}},"discounts":[],"posBillId":"2d2411f1-c44c-4c58-b4bf-02c9a36d13f0","returnBarcode":"501234567890","returnBarcodeType":null,"amountPerTaxRate":{"19.00":4.14,"7":0.07},"customerAddress":null,"isExample":false}}
                },
                "PaymentDetails example": {
                  "value": {"storeId":"2f424b","bill":{"date":"2026-03-06T19:24:29.4546824+01:00","customText":null,"lineItems":[{"quantityType":"Count","quantity":1.0,"unitGrossPrice":10.7,"unitNetPrice":10.0,"totalNetPrice":10.0,"totalGrossPrice":10.7,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":null,"priceModifier":null,"totalVatAmount":0.7,"vat":7.0,"name":"Article 1","description":null,"ean":"123456789","returnBarcodeReference":null,"categoryId":null,"text":null,"sequenceNumber":0,"type":null}],"categories":[],"tenders":[{"tenderType":"Miscellaneous","detailedType":"Some other type","currencyCode":"EUR","amount":10.7,"paymentDetails":null},{"tenderType":"Cash","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"amountGiven":12.0,"amountReturned":1.3}},{"tenderType":"DirectDebit","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"sepaCreditorId":"SepaCreditorId","sepaMandateReference":"SepaMandateReference","cardNumber":"CardNumber","bankName":"BankName","terminalId":"TerminalId","terminalText":"TerminalText","terminalDateTime":null,"transactionNumber":"TransactionNumber","traceNumber":null,"pan":null,"expiryYear":null,"expiryMonth":null}},{"tenderType":"CreditCard","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"cardNumber":"CardNumber","bankName":"BankName","terminalId":"TerminalId","terminalText":"TerminalText","terminalDateTime":null,"transactionNumber":"TransactionNumber","traceNumber":null,"pan":null,"expiryYear":null,"expiryMonth":null}},{"tenderType":"OnlinePayment","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"senderAccountName":"SenderAccountName","recipientAccountName":"RecipientAccountName","transactionId":"TransactionId"}},{"tenderType":"GiftCard","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"initialBalance":25.0,"remainingBalance":14.3,"dateOfExpiry":"2027-12-31T23:59:59+07:00"}},{"tenderType":"BankTransfer","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"purposeOfUsage":"PurposeOfUsage","iban":"Iban","bic":"Bic","accountHolderName":"AccountHolderName","accountNumber":"AccountNumber","bankName":"BankName","bankAddress":"BankAddress","sortCode":"SortCode","routingNumber":"RoutingNumber","ifscCode":"IfscCode","routingCode":"RoutingCode","terminalId":"TerminalId","terminalText":"TerminalText","terminalDateTime":null,"transactionNumber":"TransactionNumber","traceNumber":null,"pan":null,"expiryYear":null,"expiryMonth":null}},{"tenderType":"Check","detailedType":"Euros","currencyCode":"EUR","amount":10.7,"paymentDetails":{"drawee":"Check Drawee","payee":"Check Payee","dateOfIssue":"2026-03-06T19:07:29.4690444+01:00","drawer":"Check Drawer","sortCode":"123","accountNumber":"123xxx"}},{"tenderType":"LoyaltyCard","detailedType":"Vendor Loyalty System","currencyCode":"EUR","amount":10.7,"paymentDetails":{"name":"Account Holder","accountNumber":"123xxx","pointsUsed":1070.0,"pointsLeft":297.0,"pointsGained":10.0}}],"totalGrossAmount":10.7,"totalNetAmount":10.0,"totalTaxAmount":0.7,"currencyCode":"EUR","coupons":null,"legalInformation":{"beginDateTime":"2026-03-06T19:15:46.4546824+01:00","endDateTime":"2026-03-06T19:24:29.4546824+01:00","securityModuleNumber":"TSEID123","transactionId":"TID 123 456","cashierName":"Hr. Huber","tseFailure":false,"posInspectionQRData":null,"additionalLegalText":null,"signature":null,"signatureCounter":null,"billId":null,"additionalLegalProperties":null},"discounts":[],"posBillId":null,"returnBarcode":null,"returnBarcodeType":null,"amountPerTaxRate":{"7":0.7},"customerAddress":null,"isExample":false}}
                },
                "Discount example": {
                  "value": {"storeId":"6867b1","bill":{"date":"2026-03-06T19:24:29.4546824+01:00","customText":null,"lineItems":[{"quantityType":"Kilogram","quantity":2.47,"unitGrossPrice":5.39,"unitNetPrice":5.04,"totalNetPrice":12.44,"totalGrossPrice":13.31,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":null,"priceModifier":"None","totalVatAmount":0.87,"vat":7.0,"name":"Article without discount","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":null,"text":"No discount","sequenceNumber":0,"type":null},{"quantityType":"Meters","quantity":20.0,"unitGrossPrice":0.9,"unitNetPrice":0.76,"totalNetPrice":15.13,"totalGrossPrice":18.0,"totalDiscountValue":null,"unitOriginalGrossPrice":1.0,"discountValue":10.0,"priceModifier":"Percentage","totalVatAmount":2.87,"vat":19.0,"name":"Article with percentage discount","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":null,"text":"10 % discount","sequenceNumber":1,"type":null},{"quantityType":"Liter","quantity":1.0,"unitGrossPrice":9.0,"unitNetPrice":8.41,"totalNetPrice":8.41,"totalGrossPrice":9.0,"totalDiscountValue":null,"unitOriginalGrossPrice":10.0,"discountValue":1.0,"priceModifier":"Monetary","totalVatAmount":0.59,"vat":7.0,"name":"Article with monetary discount","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":null,"text":"1 € off","sequenceNumber":2,"type":null},{"quantityType":"Count","quantity":3.0,"unitGrossPrice":0.667,"unitNetPrice":0.56,"totalNetPrice":1.68,"totalGrossPrice":2.0,"totalDiscountValue":null,"unitOriginalGrossPrice":1.0,"discountValue":1.0,"priceModifier":"MonetaryReplacement","totalVatAmount":0.32,"vat":19.0,"name":"Article with monetary replacement discount","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":null,"text":"3 for 2 discount","sequenceNumber":3,"type":null}],"categories":[],"tenders":[{"tenderType":"Cash","detailedType":"Hard cold cash","currencyCode":"EUR","amount":32.91,"paymentDetails":{"amountGiven":50.0,"amountReturned":17.09}}],"totalGrossAmount":32.91,"totalNetAmount":29.29,"totalTaxAmount":3.62,"currencyCode":"EUR","coupons":null,"legalInformation":{"beginDateTime":"2026-03-06T19:22:22.4546824+01:00","endDateTime":"2026-03-06T19:24:29.4546824+01:00","securityModuleNumber":null,"transactionId":"TID 123 456","cashierName":null,"tseFailure":false,"posInspectionQRData":null,"additionalLegalText":null,"signature":null,"signatureCounter":null,"billId":null,"additionalLegalProperties":null},"discounts":[{"name":"20 % off","value":8.4},{"name":"Save 1 €","value":1.0}],"posBillId":null,"returnBarcode":null,"returnBarcodeType":null,"amountPerTaxRate":{"7":1.14,"19":2.48},"customerAddress":null,"isExample":false}}
                },
                "Text line example": {
                  "value": {"storeId":"00b568","bill":{"date":"2026-03-06T19:24:29.4546824+01:00","customText":"Thank you for your purchase!","lineItems":[{"quantityType":"Count","quantity":2.0,"unitGrossPrice":12.95,"unitNetPrice":10.88,"totalNetPrice":21.76,"totalGrossPrice":25.90,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":2.05,"priceModifier":"Monetary","totalVatAmount":4.14,"vat":19.0,"name":"Article 1","description":null,"ean":"5329858234","returnBarcodeReference":null,"categoryId":"459429ca-d625-4300-9c80-a553adcb589f","text":null,"sequenceNumber":0,"type":null},{"text":"Text between the two line items.","sequenceNumber":1,"type":"text"},{"quantityType":"Kilogram","quantity":0.736,"unitGrossPrice":1.5,"unitNetPrice":1.4,"totalNetPrice":1.03,"totalGrossPrice":1.1,"totalDiscountValue":null,"unitOriginalGrossPrice":null,"discountValue":null,"priceModifier":null,"totalVatAmount":0.07,"vat":7.0,"name":"Article 2","description":null,"ean":null,"returnBarcodeReference":null,"categoryId":"1e6683a7-8601-4c8d-9e81-ae6cfed913cf","text":null,"sequenceNumber":2,"type":null}],"categories":["459429ca-d625-4300-9c80-a553adcb589f","1e6683a7-8601-4c8d-9e81-ae6cfed913cf","921a6fdb-35a5-400f-ab18-203c1ddedb47"],"tenders":[{"tenderType":"CreditCard","detailedType":"VISA","currencyCode":"EUR","amount":7.0,"paymentDetails":{"cardNumber":"123xxxxxxxx","bankName":"Best VISA Bank","terminalId":"TID123","terminalText":"Vielen Dank für die Benutzung unseres Terminals","terminalDateTime":null,"transactionNumber":"XYZ123","traceNumber":null,"pan":null,"expiryYear":null,"expiryMonth":null}},{"tenderType":"GiftCard","detailedType":"Geschenkgutschein Typ 1","currencyCode":"EUR","amount":20.0,"paymentDetails":{"initialBalance":50.0,"remainingBalance":30.0,"dateOfExpiry":"2027-01-01T00:00:00+02:00"}}],"totalGrossAmount":27.0,"totalNetAmount":22.79,"totalTaxAmount":4.21,"currencyCode":"EUR","coupons":[{"title":"20 % off your next purchase!","description":"Enjoy 20 % off with the code SUPERWEEKEND!","codeType":"Text","code":"SUPERWEEKEND","redeemStartDate":"2026-03-15T23:59:59+02:00","redeemEndDate":"2026-03-08T06:00:00+02:00"}],"legalInformation":{"beginDateTime":"2026-03-06T19:23:52.4546824+01:00","endDateTime":"2026-03-06T19:24:29.4546824+01:00","securityModuleNumber":"TSE Number","transactionId":"TID 123 456","cashierName":"Fr. Müller","tseFailure":false,"posInspectionQRData":null,"additionalLegalText":null,"signature":null,"signatureCounter":null,"billId":null,"additionalLegalProperties":{"additionalProperty1":{"displayName":"Super important legal stuff","value":"12345"},"additionalProperty2":{"displayName":"Not so super important legal stuff","value":"This is text for the additional legal property."}}},"discounts":[],"posBillId":"66d704b6-f5d3-4127-bb22-dd9ef1e09504","returnBarcode":"501234567890","returnBarcodeType":null,"amountPerTaxRate":{"19.00":4.14,"7":0.07},"customerAddress":null,"isExample":false}}
                }
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Returns a link to further information about the created bill on success.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymousBillResponseDto"
                }
              }
            }
          },
          "204": {
            "description": "Returns if a user bill was created successfully."
          },
          "400": {
            "description": "Returns if the data is invalid or an error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "401": {
            "description": "Returns if the appUser could not be authenticated.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "403": {
            "description": "Returns if the access token is missing the right scope or appUser permissions are missing.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "404": {
            "description": "Returns if the store or LoyaltyCard was not found.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "409": {
            "description": "Returns if the bill with the given id already exists",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          },
          "500": {
            "description": "Returns if an unexpected error occurred.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            }
          }
        },
        "deprecated": true,
        "security": [
          {
            "oauth2": [
              "VendorApiUser"
            ]
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "AddBillDto": {
        "required": [
          "bill",
          "storeId"
        ],
        "type": "object",
        "properties": {
          "storeId": {
            "maxLength": 36,
            "minLength": 1,
            "type": "string",
            "description": "The id of the store of the vendor in which the transaction was done."
          },
          "bill": {
            "$ref": "#/components/schemas/BillDto"
          }
        },
        "additionalProperties": false
      },
      "AdditionalLegalPropertyDto": {
        "required": [
          "displayName",
          "value"
        ],
        "type": "object",
        "properties": {
          "displayName": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string",
            "description": "Display name of the additional property."
          },
          "value": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string",
            "description": "Value of the additional property."
          }
        },
        "additionalProperties": false
      },
      "AfterSalesCouponDto": {
        "required": [
          "code",
          "codeType",
          "title"
        ],
        "type": "object",
        "properties": {
          "title": {
            "maxLength": 60,
            "minLength": 1,
            "type": "string",
            "description": "The title of the coupon."
          },
          "description": {
            "maxLength": 512,
            "type": "string",
            "description": "Additional description for the coupon.",
            "nullable": true
          },
          "codeType": {
            "$ref": "#/components/schemas/CouponCodeTypeDto"
          },
          "code": {
            "maxLength": 512,
            "minLength": 1,
            "type": "string",
            "description": "The code used to redeem the coupon."
          },
          "redeemStartDate": {
            "type": "string",
            "description": "The start date of when the coupon can be redeemed.",
            "format": "date-time",
            "nullable": true
          },
          "redeemEndDate": {
            "type": "string",
            "description": "The end date of when the coupon can be redeemed.",
            "format": "date-time",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "A coupon that the customer gets after the checkout."
      },
      "AnonymousBillResponseDto": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "URL to the generated bill to encode in the QR-Code.",
            "nullable": true
          },
          "billId": {
            "type": "string",
            "description": "Id of the bill.",
            "format": "uuid"
          },
          "type": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "Information about the generated bill."
      },
      "BillDiscountDto": {
        "required": [
          "value"
        ],
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 60,
            "type": "string",
            "description": "Optional name for the discount.",
            "nullable": true
          },
          "value": {
            "type": "number",
            "description": "Discount value.",
            "format": "double"
          }
        },
        "additionalProperties": false
      },
      "BillDto": {
        "required": [
          "date",
          "legalInformation",
          "lineItems",
          "tenders",
          "totalGrossAmount",
          "totalTaxAmount"
        ],
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "description": "Date and time of the transaction. This should be in the correct ISO 8601 format to represent the correct timezone.",
            "format": "date-time"
          },
          "customText": {
            "maxLength": 65536,
            "type": "string",
            "description": "Custom text the vendor might want to add to his receipts.",
            "nullable": true
          },
          "lineItems": {
            "type": "array",
            "items": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/LineItemDto"
                },
                {
                  "$ref": "#/components/schemas/TextLineItemDto"
                }
              ]
            },
            "description": "A collection of the invoice line items of this transaction."
          },
          "categories": {
            "type": "array",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "description": "A collection of categories. Can be assigned by the vendor.",
            "nullable": true
          },
          "tenders": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TenderDto"
            },
            "description": "Tender data."
          },
          "totalGrossAmount": {
            "type": "number",
            "description": "Total gross amount the appUser paid.",
            "format": "double"
          },
          "totalNetAmount": {
            "type": "number",
            "description": "Total net amount.",
            "format": "double",
            "nullable": true
          },
          "totalTaxAmount": {
            "type": "number",
            "description": "Total amount of tax paid.",
            "format": "double"
          },
          "currencyCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "Currency code as of ISO 4217.",
            "nullable": true
          },
          "coupons": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AfterSalesCouponDto"
            },
            "description": "Coupons that are received after the checkout.",
            "nullable": true
          },
          "legalInformation": {
            "$ref": "#/components/schemas/LegalInformationDto"
          },
          "discounts": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/BillDiscountDto"
            },
            "description": "Discounts applied to every LineItem.",
            "nullable": true
          },
          "posBillId": {
            "type": "string",
            "description": "The bill id issued by the POS system. Does not uniquely identify a Bill.",
            "nullable": true
          },
          "returnBarcode": {
            "maxLength": 25,
            "type": "string",
            "description": "Data to display a return barcode.",
            "nullable": true
          },
          "returnBarcodeType": {
            "$ref": "#/components/schemas/ReturnBarcodeTypeDto"
          },
          "amountPerTaxRate": {
            "type": "object",
            "additionalProperties": {
              "type": "number",
              "format": "double"
            },
            "description": "The amount of paid taxes per tax-rate.\r\nThe allowed format for tax rates and values are english based doubles e.g. \"7\" or \"7.00\". \r\nFull example: {\"7.0\": 20.0}",
            "nullable": true
          },
          "customerAddress": {
            "$ref": "#/components/schemas/CustomerAddressDto"
          },
          "isExample": {
            "type": "boolean",
            "description": "Marks a bill as example bill."
          }
        },
        "additionalProperties": false,
        "description": "The bill object that represents the entire transaction."
      },
      "CouponCodeTypeDto": {
        "enum": [
          "Ean13",
          "Text",
          "Qr",
          "ImageUrl"
        ],
        "type": "string"
      },
      "CustomerAddressDto": {
        "type": "object",
        "properties": {
          "name": {
            "maxLength": 256,
            "type": "string",
            "description": "Name of the Customer. Allows up to 4 lines separated using a line feed (`\\r\\n` or `\\n`).",
            "nullable": true
          },
          "companyName": {
            "maxLength": 256,
            "type": "string",
            "description": "Name of the Company",
            "nullable": true
          },
          "vatId": {
            "maxLength": 15,
            "type": "string",
            "description": "Value added tax identification number",
            "nullable": true
          },
          "country": {
            "type": "string",
            "nullable": true
          },
          "zip": {
            "type": "string",
            "nullable": true
          },
          "city": {
            "type": "string",
            "nullable": true
          },
          "street": {
            "type": "string",
            "nullable": true
          },
          "number": {
            "type": "string",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "Error": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "nullable": true
          },
          "code": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true,
            "readOnly": true
          }
        },
        "additionalProperties": false
      },
      "ErrorProblemDetails": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Error"
            },
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LegalInformationDto": {
        "type": "object",
        "properties": {
          "beginDateTime": {
            "type": "string",
            "description": "The date time of the start of the transaction. This should be in the correct ISO 8601 format to represent the correct timezone.",
            "format": "date-time",
            "nullable": true
          },
          "endDateTime": {
            "type": "string",
            "description": "The date time of the end of the transaction. This should be in the correct ISO 8601 format to represent the correct timezone.",
            "format": "date-time",
            "nullable": true
          },
          "securityModuleNumber": {
            "maxLength": 1024,
            "type": "string",
            "description": "Number of the security module of the cashbox. Can only be null if TSEFailure is true.",
            "nullable": true
          },
          "transactionId": {
            "maxLength": 512,
            "type": "string",
            "description": "Identifier for this transaction in the vendors system. Usually represented in form of a barcode on the receipt. Can only be null if TSEFailure is true.",
            "nullable": true
          },
          "cashierName": {
            "maxLength": 30,
            "type": "string",
            "description": "Name of the cashier who processed the transaction.",
            "nullable": true
          },
          "tseFailure": {
            "type": "boolean",
            "description": "Specifies if TSE check has failed."
          },
          "posInspectionQRData": {
            "type": "string",
            "description": "Data to display a QR code for a POS inspection.",
            "nullable": true
          },
          "additionalLegalText": {
            "maxLength": 65536,
            "type": "string",
            "description": "Additional legal text that must be displayed.",
            "nullable": true
          },
          "signature": {
            "maxLength": 128,
            "type": "string",
            "description": "Signature of the TSE.",
            "nullable": true
          },
          "signatureCounter": {
            "type": "integer",
            "description": "Counter how often the TSE got a signature request.",
            "format": "int32",
            "nullable": true
          },
          "billId": {
            "maxLength": 15,
            "type": "string",
            "description": "BillId used for the Signature.",
            "nullable": true
          },
          "additionalLegalProperties": {
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/AdditionalLegalPropertyDto"
            },
            "description": "Additional legal properties.",
            "nullable": true
          }
        },
        "additionalProperties": false,
        "description": "The additional legal information needed to fulfill the standards given by the law."
      },
      "LineItemBaseDto": {
        "required": [
          "sequenceNumber"
        ],
        "type": "object",
        "properties": {
          "sequenceNumber": {
            "type": "integer",
            "description": "The sequence number of the line item. Needed to display the correct order.",
            "format": "int32"
          },
          "type": {
            "type": "string",
            "description": "Type of line item. Must be \"text\" for text-only line item and can otherwise be left out. For any other value a default line item will be expected.",
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "LineItemDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LineItemBaseDto"
          },
          {
            "required": [
              "name",
              "quantity",
              "quantityType",
              "totalVatAmount",
              "unitGrossPrice",
              "vat"
            ],
            "type": "object",
            "properties": {
              "quantityType": {
                "$ref": "#/components/schemas/QuantityTypeDto"
              },
              "quantity": {
                "type": "number",
                "description": "The quantity of the line item.",
                "format": "double"
              },
              "unitGrossPrice": {
                "type": "number",
                "description": "The gross price that was paid for this line item per unit.",
                "format": "double"
              },
              "unitNetPrice": {
                "type": "number",
                "description": "The unit net price per item.",
                "format": "double",
                "nullable": true
              },
              "totalNetPrice": {
                "type": "number",
                "description": "Total net price.",
                "format": "double",
                "nullable": true
              },
              "totalGrossPrice": {
                "type": "number",
                "description": "Total gross price.",
                "format": "double",
                "nullable": true
              },
              "totalDiscountValue": {
                "type": "number",
                "description": "Total amount (Quantity * UnitOriginalGrossPrice) by which the line was reduced.",
                "format": "double",
                "nullable": true
              },
              "unitOriginalGrossPrice": {
                "type": "number",
                "description": "The original price before discounts that would have been called per unit.",
                "format": "double",
                "nullable": true
              },
              "discountValue": {
                "type": "number",
                "description": "The amount by which the item was reduced.",
                "format": "double",
                "nullable": true
              },
              "priceModifier": {
                "$ref": "#/components/schemas/PriceModifierDto"
              },
              "totalVatAmount": {
                "type": "number",
                "description": "Total vat amount.",
                "format": "double"
              },
              "vat": {
                "maximum": 100,
                "minimum": 0,
                "type": "number",
                "description": "The percentage of vat. e.g. 19",
                "format": "double"
              },
              "name": {
                "maxLength": 256,
                "minLength": 1,
                "type": "string",
                "description": "Name of the article."
              },
              "description": {
                "maxLength": 1024,
                "type": "string",
                "description": "Description of the article.",
                "nullable": true
              },
              "ean": {
                "maxLength": 128,
                "type": "string",
                "description": "Ean of the article.",
                "nullable": true
              },
              "returnBarcodeReference": {
                "maxLength": 25,
                "type": "string",
                "description": "ReturnBarcode of the original bill. Identifies this line item as returned.",
                "nullable": true
              },
              "categoryId": {
                "type": "string",
                "description": "The id of the category the article belongs to.",
                "format": "uuid",
                "nullable": true
              },
              "text": {
                "maxLength": 256,
                "type": "string",
                "description": "Text that should be displayed with the line item.",
                "nullable": true
              }
            },
            "additionalProperties": false
          }
        ],
        "description": "Represents one line item of a bill."
      },
      "PaymentDetailsDto": {
        "type": "object",
        "additionalProperties": false,
        "description": "Additional payment details."
      },
      "PriceModifierDto": {
        "enum": [
          "None",
          "Percentage",
          "Monetary",
          "MonetaryReplacement"
        ],
        "type": "string",
        "description": "Price modifier applied to line item."
      },
      "ProblemDetails": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      },
      "QuantityTypeDto": {
        "enum": [
          "Count",
          "Kilogram",
          "Lbs",
          "Meters",
          "Inches",
          "Liter",
          "CubicMeters",
          "SquareMeters"
        ],
        "type": "string"
      },
      "ReturnBarcodeTypeDto": {
        "enum": [
          "Ean13",
          "Text",
          "Qr"
        ],
        "type": "string",
        "description": "The type of the return barcode"
      },
      "TenderDto": {
        "required": [
          "amount",
          "currencyCode",
          "tenderType"
        ],
        "type": "object",
        "properties": {
          "tenderType": {
            "$ref": "#/components/schemas/TenderTypeDto"
          },
          "detailedType": {
            "maxLength": 48,
            "type": "string",
            "description": "The detailed tender type used. E.g. Visa for credit card tender.",
            "nullable": true
          },
          "currencyCode": {
            "maxLength": 3,
            "minLength": 3,
            "type": "string",
            "description": "Currency code as of ISO 4217."
          },
          "amount": {
            "type": "number",
            "description": "The amount paid with this tender.",
            "format": "double"
          },
          "paymentDetails": {
            "$ref": "#/components/schemas/PaymentDetailsDto"
          }
        },
        "additionalProperties": false,
        "description": "The legal tender used in the transaction."
      },
      "TenderTypeDto": {
        "enum": [
          "Miscellaneous",
          "Cash",
          "DirectDebit",
          "CreditCard",
          "OnlinePayment",
          "GiftCard",
          "BankTransfer",
          "Check",
          "LoyaltyCard",
          "Girocard",
          "Elv",
          "Maestro",
          "VisaElectron"
        ],
        "type": "string",
        "description": "The general type of the legal tender used."
      },
      "TextLineItemDto": {
        "allOf": [
          {
            "$ref": "#/components/schemas/LineItemBaseDto"
          },
          {
            "required": [
              "text"
            ],
            "type": "object",
            "properties": {
              "text": {
                "maxLength": 256,
                "minLength": 1,
                "type": "string",
                "description": "Text that should be displayed with the line item."
              }
            },
            "additionalProperties": false
          }
        ]
      },
      "ValidationProblemDetails": {
        "type": "object",
        "properties": {
          "errors": {
            "type": "object",
            "additionalProperties": {
              "type": "array",
              "items": {
                "type": "string"
              }
            },
            "nullable": true
          },
          "type": {
            "type": "string",
            "nullable": true
          },
          "title": {
            "type": "string",
            "nullable": true
          },
          "status": {
            "type": "integer",
            "format": "int32",
            "nullable": true
          },
          "detail": {
            "type": "string",
            "nullable": true
          },
          "instance": {
            "type": "string",
            "nullable": true
          },
          "extensions": {
            "type": "object",
            "additionalProperties": {
              "nullable": true
            },
            "nullable": true
          }
        },
        "additionalProperties": false
      }
    },
    "securitySchemes": {
      "oauth2": {
        "type": "apiKey",
        "description": "Standard Authorization header using the Bearer scheme. Example: \"bearer { token }\"",
        "name": "Authorization",
        "in": "header"
      }
    }
  }
}