Paymentsense Connect REST API

Cloud REST API for driving Paymentsense card terminals from EPOS software. Covers Pay-At-Counter (/pac) transactions and reports and Pay-At-Table (/pat) hospitality flows against a per-merchant Connect host. Published in versions v0 (Swagger 2.0, 3.0-beta), v1 (Swagger 2.0, 3.1) and v2 (OpenAPI 3.0, 3.2, current). Authenticates with HTTP Basic using the merchant API key as the password.

OpenAPI Specification

paymentsense-connect-v2.json Raw ↑
{
  "openapi": "3.0.0",
  "info": {
    "version": "3.2",
    "title": "Connect REST API"
  },
  "servers": [
    { 
      "url": "https://dev-heisenberg.test.connect.paymentsense.cloud"
    }
  ],
  "security": [
    {
      "connectBasicAuth": []
    }
  ],
  "components": {
    "securitySchemes": {
      "connectBasicAuth": {
        "type": "http",
        "scheme": "basic"
      }
    },
    "parameters": {
      "tidParam": {
        "name": "tid",
        "description": "Id (unique identifier assigned to a terminal) of the terminal to use.",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      },
      "requestIdParam": {
        "name": "requestId",
        "description": "Id (UUID assigned to a terminal request) of the request to use.",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    },
    "schemas": {
      "currency": {
        "description": "Currency of the request. The textual representation from ISO 4217 is used.",
        "type": "string",
        "enum": [
          "GBP",
          "EUR"
        ],
        "example": "GBP"
      },
      "format": {
        "type": "string",
        "enum": [
          "BOLD",
          "DOUBLE_HEIGHT",
          "DOUBLE_WIDTH"
        ]
      },
      "issuerTotals": {
        "type": "object",
        "description": "A dictionary of totals split by issuer. {issuerName} is an example key.",
        "properties": {
          "{issuerName}": {
            "$ref": "#/components/schemas/totalsBreakdown"
          }
        }
      },
      "messageList": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "notifications": {
        "type": "string",
        "enum": [
          "APPROVED",
          "ATTEMPTING_CANCEL",
          "BAD_SWIPE",
          "CANCELLING",
          "CARD_ERROR",
          "CARD_EXPIRED",
          "CARD_NOT_SUPPORTED",
          "CONNECTING",
          "CONNECTION_MADE",
          "DECLINED",
          "DECLINED_BY_CARD",
          "INSERT_CARD",
          "PIN_ENTRY",
          "PLEASE_WAIT",
          "PRESENT_CARD",
          "PRESENT_ONLY_ONE_CARD",
          "PROCESSING_ERROR",
          "REMOVE_CARD",
          "RETRYING",
          "REQUEST_SENT",
          "RE_PRESENT_CARD",
          "SIGNATURE_VERIFICATION",
          "SIGNATURE_VERIFICATION_PROCESS_COMPLETED",
          "SIGNATURE_VERIFICATION_PROCESS_COULD_NOT_BE_COMPLETED",
          "SIGNATURE_VERIFICATION_IN_PROGRESS",
          "SIGNATURE_VERIFICATION_TIMEOUT",
          "TRANSACTION_FINISHED",
          "TRANSACTION_STARTED",
          "UNABLE_TO_CANCEL"
        ]
      },
      "paymentMethod": {
        "type": "string",
        "example": "ICC_CHIP",
        "enum": [
          "UNKNOWN",
          "KEYED",
          "SWIPED",
          "ICC_CHIP",
          "CONTACTLESS"
        ]
      },
      "receiptLine": {
        "type": "object",
        "required": [
          "value"
        ],
        "properties": {
          "format": {
            "description": "Defines any special formatting applied to this line.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/format"
            },
            "example": [ "BOLD" ]
          },
          "type": {
            "description": "The type of the content contained in the value field.",
            "type": "string",
            "enum": [
              "TEXT",
              "BOX_DECLINE",
              "BOX_VOID",
              "CARRIAGE_RETURN",
              "LINE_SEPARATOR_SINGLE",
              "LINE_SEPARATOR_DOUBLE",
              "TICKET_FEED"
            ],
            "example": "TEXT"
          },
          "value": {
            "description": "Raw content of the line.",
            "type": "string",
            "example": "John's Shop"
          }
        }
      },
      "receiptLineList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/receiptLine"
        }
      },
      "reportBalances": {
        "description": "Local totals for the current terminal session. Only contained in X_BALANCE, Z_BALANCE and END_OF_DAY.",
        "type": "object",
        "required": [
          "currency",
          "issuerTotals",
          "totalAmount",
          "totalCashbackAmount",
          "totalCashbackCount",
          "totalGratuityAmount",
          "totalGratuityCount",
          "totalRefundsAmount",
          "totalRefundsCount",
          "totalSalesAmount",
          "totalSalesCount",
          "totalsSince",
          "waiterTotals"
        ],
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "issuerTotals": {
            "$ref": "#/components/schemas/issuerTotals"
          },
          "totalAmount": {
            "description": "Total amount that has been taken in the current session.",
            "type": "integer",
            "example": "1000"
          },
          "totalCashbackAmount": {
            "description": "Total amount of cashback (in pence) that has been taken in the current session.",
            "type": "integer",
            "example": "100"
          },
          "totalCashbackCount": {
            "description": "Total number of transactions with cashback that have taken place in the current session.",
            "type": "integer",
            "example": "2"
          },
          "totalGratuityAmount": {
            "description": "Total amount of gratuity (in pence) that has been taken in the current session.",
            "type": "integer",
            "example": "100"
          },
          "totalGratuityCount": {
            "description": "Total number of transactions with gratuity that have taken place in the current session.",
            "type": "integer",
            "example": "3"
          },
          "totalRefundsAmount": {
            "description": "Total amount of refunds (in pence) that have been taken in the current session.",
            "type": "integer",
            "example": "400"
          },
          "totalRefundsCount": {
            "description": "Total number of refunds that have taken place in the current session.",
            "type": "integer",
            "example": "9"
          },
          "totalSalesAmount": {
            "description": "Total amount of sales (in pence) that have been taken in the current session.",
            "type": "integer",
            "example": "1200"
          },
          "totalSalesCount": {
            "description": "Total number of sales that have taken place in the current session.",
            "type": "integer",
            "example": "14"
          },
          "totalsSince": {
            "description": "Time at which the terminal totals were last reset.",
            "type": "string",
            "example": "INSTALLATION"
          },
          "waiterTotals": {
            "$ref": "#/components/schemas/waiterTotals"
          }
        }
      },
      "reportBanking": {
        "type": "object",
        "required": [
          "currency",
          "currentSessionIssuerTotals",
          "previousSessionIssuerTotals",
          "currentSessionTotals",
          "previousSessionTotals",
          "currentSessionTransactionNumbers",
          "previousSessionTransactionNumbers"
        ],
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "currentSessionIssuerTotals": {
            "$ref": "#/components/schemas/issuerTotals"
          },
          "previousSessionIssuerTotals": {
            "$ref": "#/components/schemas/issuerTotals"
          },
          "currentSessionTotals": {
            "$ref": "#/components/schemas/totalsBreakdown"
          },
          "previousSessionTotals": {
            "$ref": "#/components/schemas/totalsBreakdown"
          },
          "currentSessionTransactionNumbers": {
            "description": "Range of transaction numbers within the current terminal session.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [ "0076", "0123" ]
          },
          "previousSessionTransactionNumbers": {
            "description": "Range of transaction numbers within the previous terminal session.",
            "type": "array",
            "items": {
              "type": "string"
            },
            "example": [ "0000", "0075" ]
          }
        }
      },
      "reportRequest": {
        "type": "object",
        "properties": {
          "reportType": {
            "$ref": "#/components/schemas/reportType"
          }
        }
      },
      "reportResponse": {
        "type": "object",
        "required": [
          "requestId",
          "location",
          "notifications"
        ],
        "properties": {
          "balances": {
            "$ref": "#/components/schemas/reportBalances"
          },
          "banking": {
            "$ref": "#/components/schemas/reportsBanking"
          },
          "reportLines": {
            "$ref": "#/components/schemas/receiptLineList"
          },
          "reportTime": {
            "description": "Time at which the report took place.",
            "type": "string",
            "format": "YYYY-MM-DDThh:mm:ss",
            "example": "2019-03-04T16:12:00"
          },
          "reportType": {
            "description": "Type of the report.",
            "type": "string",
            "enum": [
              "END_OF_DAY",
              "BANKING",
              "X_BALANCE",
              "Z_BALANCE"
            ],
            "example": "END_OF_DAY"
          },
          "reportResult": {
            "description": "Outcome of the report.",
            "type": "string",
            "enum": [
              "TIMED_OUT",
              "COMPLETE"
            ],
            "example": "COMPLETE"
          },
          "tid": {
            "description": "Terminal Id (unique identifier assigned to a terminal) of the terminal used in this request.",
            "type": "string",
            "example": "12345678"
          },
          "requestId": {
            "description": "UUID for this request, which can be used in other endpoints.",
            "type": "string",
            "example": "d19912ad-11a3-4af3-86e0-d6eb2ebea63c"
          },
          "location": {
            "description": "URI where information about this report can be found.",
            "type": "string",
            "format": "URI",
            "example": "https://your-host-here.test.connect.paymentsense.cloud/pac/terminals/{tid}/report/{requestId}"
          },
          "notifications": {
            "description": "Notifications indicating the progress of the report.",
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "REPORT_FINISHED",
                "REPORT_STARTED"
              ],
              "example": [
                "REPORT_FINISHED",
                "REPORT_STARTED"
              ]
            }
          }
        }
      },
      "reportsBanking": {
        "type": "object",
        "description": "Banking totals for the current terminal session (these are reset in line with the banking window). Only contained in BANKING and END_OF_DAY. Consists of a dictionary of reports keyed by acquirer name. '{acquirerName}' is an example key",
        "properties": {
          "{acquirerName}": {
            "$ref": "#/components/schemas/reportBanking"
          }
        }
      },
      "reportType": {
        "description": "Type of the report.",
        "type": "string",
        "enum": [
          "END_OF_DAY",
          "BANKING",
          "X_BALANCE",
          "Z_BALANCE"
        ],
        "example": "END_OF_DAY"
      },
      "requestLocationResponse": {
        "type": "object",
        "properties": {
          "requestId": {
            "description": "UUID for this request, which can be used in other endpoints.",
            "type": "string",
            "example": "d19912ad-11a3-4af3-86e0-d6eb2ebea63c"
          },
          "location": {
            "description": "URI where information about this request can be found.",
            "type": "string",
            "format": "URI",
            "example": "https://your-host-here.test.connect.paymentsense.cloud/pac/terminals/{tid}/{requestType}/{requestId}"
          }
        }
      },
      "signatureRequest": {
        "type": "object",
        "required": [
          "accepted"
        ],
        "properties": {
          "accepted": {
            "description": "Indicates whether the signature has been accepted.",
            "type": "boolean",
            "example": true
          }
        }
      },
      "terminal": {
        "title": "Terminal",
        "type": "object",
        "required": [
          "tid",
          "status",
          "currency",
          "location"
        ],
        "properties": {
          "tid": {
            "description": "Terminal Id, a unique identifier assigned to this terminal.",
            "type": "string",
            "example": "12345678"
          },
          "status": {
            "description": "Current status of the terminal, indicating whether it is ready to accept requests.",
            "type": "string",
            "enum": [ "AVAILABLE", "BUSY" ],
            "example": "AVAILABLE"
          },
          "currency": {
            "description": "Currency in which the terminal is setup. The textual representation from ISO 4217 is used.",
            "type": "string",
            "enum": [
              "GBP",
              "EUR"
            ],
            "example": "GBP"
          },
          "location": {
            "description": "URI where information about this terminal can be found.",
            "type": "string",
            "format": "URI",
            "example": "https://your-host-here.test.connect.paymentsense.cloud/pac/terminals/{tid}"
          }
        }
      },
      "terminalList": {
        "type": "array",
        "items": {
          "$ref": "#/components/schemas/terminal"
        }
      },
      "terminalWrapper": {
        "type": "object",
        "properties": {
          "terminals": {
            "$ref": "#/components/schemas/terminalList"
          }
        }
      },
      "totalsBreakdown": {
        "type": "object",
        "required": [
          "currency",
          "totalAmount",
          "totalRefundsAmount",
          "totalRefundsCount",
          "totalSalesAmount",
          "totalSalesCount"
        ],
        "properties": {
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "totalAmount": {
            "description": "Total amount that has been taken in the current session.",
            "type": "integer"
          },
          "totalRefundsAmount": {
            "description": "Total amount of refunds (in pence) that have been taken in the current session.",
            "type": "integer"
          },
          "totalRefundsCount": {
            "description": "Total number of refunds that have taken place in the current session.",
            "type": "integer"
          },
          "totalSalesAmount": {
            "description": "Total amount of sales (in pence) that have been taken in the current session.",
            "type": "integer"
          },
          "totalSalesCount": {
            "description": "Total number of sales that have taken place in the current session.",
            "type": "integer"
          }
        }
      },
      "transaction": {
        "type": "object",
        "properties": {
          "amountBase": {
            "description": "Base amount of the transaction (in pence), without cashback or gratuity.",
            "type": "integer",
            "format": "int32",
            "example": "100"
          },
          "amountCashback": {
            "description": "Amount of cashback (in pence) added to the transaction.",
            "type": "integer",
            "format": "int32",
            "example": "30"
          },
          "amountGratuity": {
            "description": "Amount of gratuity (in pence) added to the transaction.",
            "type": "integer",
            "format": "int32",
            "example": "20"
          },
          "amountTotal": {
            "description": "Sum of amountBase, amountCashback and amountGratuity (in pence).",
            "type": "integer",
            "format": "int32",
            "example": "150"
          },
          "applicationId": {
            "description": "Identifier of the application in the card used in the transaction.",
            "type": "string",
            "example": "A0000000031010"
          },
          "applicationLabel": {
            "description": "Name of the application in the card used in the transaction.",
            "type": "string",
            "example": "VISA"
          },
          "authCode": {
            "description": "Authorisation code provided by the bank to approve the transaction.",
            "type": "string",
            "example": "78YT6RS0"
          },
          "cardSchemeName": {
            "description": "Scheme of the card used in the transaction. The scheme controls the operation of payment transactions.",
            "type": "string",
            "example": "VISA"
          },
          "cardHolderVerificationMethod": {
            "description": "Method used to verify that the person presenting the card is the legitimate cardholder.",
            "type": "string",
            "enum": [
              "UNKNOWN",
              "NONE",
              "PIN",
              "SIGNATURE",
              "DEVICE"
            ],
            "example": "PIN"
          },
          "currency": {
            "description": "Currency in which the transaction took place. The textual representation from ISO 4217 is used.",
            "type": "string",
            "enum": [
              "GBP",
              "EUR"
            ],
            "example": "GBP"
          },
          "dateOfExpiry": {
            "description": "Expiry date of the card used in the transaction.",
            "type": "string",
            "format": "MM/YY",
            "example": "01/25"
          },
          "dateOfStart": {
            "description": "Start date of the card used in the transaction.",
            "type": "string",
            "format": "MM/YY",
            "example": "01/19"
          },
          "location": {
            "description": "URI where information about this transaction can be found.",
            "type": "string",
            "format": "URI",
            "example": "https://your-host-here.test.connect.paymentsense.cloud/pac/terminals/{tid}/transactions/{requestId}"
          },
          "notifications": {
            "description": "Notifications indicating the progress of the transaction.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/notifications"
            },
            "example": [
              "TRANSACTION_FINISHED",
              "APPROVED",
              "CONNECTION_MADE",
              "CONNECTING",
              "PIN_ENTRY",
              "PLEASE_WAIT",
              "PRESENT_CARD",
              "TRANSACTION_STARTED",
              "REPLACE_PAPER"
            ]
          },
          "paymentMethod": {
            "description": "Method by which the card details have been read from the payment medium.",
            "type": "string",
            "example": "ICC_CHIP",
            "enum": [
              "UNKNOWN",
              "KEYED",
              "SWIPED",
              "ICC_CHIP",
              "CONTACTLESS"
            ]
          },
          "primaryAccountNumber": {
            "description": "PAN (Primary Account Number) of the card used in the transaction. Only the last 4 digits of the number are provided.",
            "type": "string",
            "example": "************1234"
          },
          "primaryAccountNumberSequence": {
            "description": "Sequence number of the PAN of the card used in the transaction. Used to differentiate cards with the same PAN.",
            "type": "string",
            "example": "01"
          },
          "receiptLines": {
            "description": "Card machine receipt(s) for the transaction.",
            "type": "object",
            "properties": {
              "MERCHANT": {
                "$ref": "#/components/schemas/receiptLineList"
              },
              "CUSTOMER": {
                "$ref": "#/components/schemas/receiptLineList"
              }
            }
          },
          "requestId": {
            "description": "UUID for this request, which can be used in other endpoints.",
            "type": "string",
            "example": "d19912ad-11a3-4af3-86e0-d6eb2ebea63c"
          },
          "transactionId": {
            "description": "Used by the terminal to identify this transaction.",
            "type": "string",
            "example": "1234567"
          },
          "transactionNumber": {
            "description": "Number of the transaction within the current terminal session.",
            "type": "string",
            "example": "0012"
          },
          "transactionResult": {
            "description": "Outcome of the transaction.",
            "type": "string",
            "enum": [
              "SUCCESSFUL",
              "DECLINED",
              "VOID",
              "UNSUCCESSFUL",
              "CANCELLED",
              "TIMED_OUT"
            ],
            "example": "SUCCESSFUL"
          },
          "transactionTime": {
            "description": "Time at which the transaction took place.",
            "type": "string",
            "format": "YYYY-MM-DDThh:mm:ss",
            "example": "2019-03-04T16:12:00"
          },
          "transactionType": {
            "description": "Type of the transaction.",
            "type": "string",
            "enum": [
              "LOGON",
              "REFUND",
              "REFUND_REVERSAL",
              "SALE",
              "SALE_REVERSAL",
              "PRE_AUTH",
              "COMPLETION",
              "ACCOUNT_VERIFICATION"
            ],
            "example": "SALE"
          },
          "userMessage": {
            "description": "Message relating to the transaction that should be displayed to the user.",
            "type": "string",
            "example": "Signature check not actioned before timeout. When required, signatures must be verified within 80 seconds."
          }
        },
        "required": [ "location", "notifications" ]
      },
      "transactionRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "amount": {
            "description": "Accepted for all transactions except duplicates. Base amount of the transaction (in pence).",
            "type": "integer",
            "minimum": 1,
            "maximum": 99999999,
            "example": 1234
          },
          "amountCashback": {
            "description": "Only accepted for sale transactions. Amount of cashback to attempt to add to this transaction (in pence). The amountCashback field in the transaction should always be checked to find out the actual amount of cashback processed.",
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "example": 100
          },
          "cardholderNotPresent": {
            "description": "Accepted for all transactions except duplicates. Indicates whether this transaction should be completed as CNP (e.g. manual entry of card details). If set, the PDQ will skip the present card screen (for sales and refunds) and immediately prompt for manual entry of card details. Transactions with this flag set are allowed to take longer to complete than a standard transaction.",
            "type": "boolean",
            "example": true
          },
          "authCode": {
            "description": "(Ingenico Only). Required for completion transactions and not accepted for any other transaction types. Should contain the auth code of the first pre-auth transaction performed on a customer's card. Pre-auths and completions must be completed on the same card.",
            "type": "string",
            "example": "ABC123"
          }
          ,
          "amountPreAuthorisedTotal": {
            "description": "(Ingenico Only). Required for completion transactions and not accepted for any other transaction types. Should contain the sum of all pre-auth transactions performed on a customer's card. Pre-auths and completions must be completed on the same card.",
            "type": "integer",
            "minimum": 1,
            "maximum": 99999999,
            "example": 1234
          }
        }
      },
      "saleRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "amount": {
            "description": "Base amount of the transaction (in pence).",
            "type": "integer",
            "minimum": 1,
            "maximum": 99999999,
            "example": 1234
          },
          "amountCashback": {
            "description": "Amount of cashback to attempt to add to this transaction (in pence). The amountCashback field in the transaction should always be checked to find out the actual amount of cashback processed.",
            "type": "integer",
            "minimum": 0,
            "maximum": 10000,
            "example": 100
          },
          "cardholderNotPresent": {
            "description": "Indicates whether this transaction should be completed as CNP (e.g. manual entry of card details). If set, the PDQ will skip the present card screen (for sales and refunds) and immediately prompt for manual entry of card details. Transactions with this flag set are allowed to take longer to complete than a standard transaction.",
            "type": "boolean",
            "example": true
          }
        }
      },
      "refundRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "amount": {
            "description": "Base amount of the transaction (in pence).",
            "type": "integer",
            "example": 1234
          },
          "cardholderNotPresent": {
            "description": "Indicates whether this transaction should be completed as CNP (e.g. manual entry of card details). If set, the PDQ will skip the present card screen (for sales and refunds) and immediately prompt for manual entry of card details. Transactions with this flag set are allowed to take longer to complete than a standard transaction.",
            "type": "boolean",
            "example": true
          }
        }
      },
      "preAuthRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "amount": {
            "description": "Base amount of the transaction (in pence).",
            "type": "integer",
            "example": 1234
          },
          "cardholderNotPresent": {
            "description": "Indicates whether this transaction should be completed as CNP (e.g. manual entry of card details). If set, the PDQ will skip the present card screen (for sales and refunds) and immediately prompt for manual entry of card details. Transactions with this flag set are allowed to take longer to complete than a standard transaction.",
            "type": "boolean",
            "example": true
          }
        }
      },
      "completionRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          },
          "amount": {
            "description": "Base amount of the transaction (in pence).",
            "type": "integer",
            "example": 1234
          },
          "cardholderNotPresent": {
            "description": "Indicates whether this transaction should be completed as CNP (e.g. manual entry of card details). If set, the PDQ will skip the present card screen (for sales and refunds) and immediately prompt for manual entry of card details. Transactions with this flag set are allowed to take longer to complete than a standard transaction.",
            "type": "boolean",
            "example": true
          },
          "authCode": {
            "description": "Should contain the auth code of the first pre-auth transaction performed on a customer's card. Pre-auths and completions must be completed on the same card.",
            "type": "string",
            "example": "ABC123"
          }
        }
      },
      "duplicateRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          }
        }
      },
      "accountVerificationRequest": {
        "type": "object",
        "properties": {
          "transactionType": {
            "$ref": "#/components/schemas/transactionType"
          },
          "currency": {
            "$ref": "#/components/schemas/currency"
          }
        }
      },
      "transactionType": {
        "description": "Type of the transaction. The DUPLICATE type is only supported on Ingenico terminals.",
        "type": "string",
        "enum": [
          "SALE",
          "REFUND",
          "DUPLICATE",
          "PRE_AUTH",
          "COMPLETION",
          "ACCOUNT_VERIFICATION"
        ],
        "example": "SALE"
      },
      "userMessage": {
        "type": "object",
        "properties": {
          "userMessage": {
            "description": "Error message to display to the user.",
            "type": "string",
            "example": "This is an example error message. The string here should be displayed to the user."
          }
        }
      },
      "waiterTotals": {
        "type": "object",
        "description": "A dictionary of totals split by waiter. {waiterId} is an example key.",
        "properties": {
          "{waiterId}": {
            "$ref": "#/components/schemas/totalsBreakdown"
          }
        }
      }
    },
    "responses": {
      "unauthorized": {
        "description": "Request could not be authorized:<ul><li>Authorization credentials were not provided in the request headers</li><li>The provided authorization credentials were not correct</li></ul>",
            "content": {
              "application/connect.v2+json": {
                "schema": {
                  "$ref": "#/components/schemas/userMessage"
                }
              }
            }
      },
      "internalError": {
        "description": "An internal Connect error has occurred. The request should be retried and if the problem persists, support should be contacted."
      },
      "unprocessibleEntity": {
        "description": "Request could not be processed:<ul><li>The received JSON was invalid (e.g. missing field, invalid value in field)</li><li>Missing <strong>Software-House-Id</strong> or <strong>Installer-Id</strong> header</li></ul>",
        "content": {
              "application/connect.v2+json": {
                "schema": {
                  "$ref": "#/components/schemas/userMessage"
                }
              }
            }
      },
      "unprocessibleAndBusy": {
        "description": "Request could not be processed:<ul><li>The received JSON was invalid (e.g. missing field, invalid value in field)</li><li>Terminal is busy processing another request</li><li>Missing <strong>Software-House-Id</strong> or <strong>Installer-Id</strong> header</li></ul>",
        "content": {
          "application/connect.v2+json": {
            "schema": {
            

# --- truncated at 32 KB (45 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/paymentsense/refs/heads/main/openapi/paymentsense-connect-v2.json