openapi: 3.2.0 info: title: Dojo Terminal sessions API version: '2026-02-27' description: "# Introduction\n\nThe Dojo API is a REST API, using HTTP response codes to convey status, including successful responses and errors. Additionally, it accepts and returns JSON in the HTTP body.\nFor information on the latest development progress, visit the [changelog](../changelog).\n\n## Base URLs\n\nUse the following base URL when making requests to the API: https://api.dojo.tech/\n\n## Authentication\n\nThe Dojo API uses [Basic HTTP authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). You can generate API keys in the [Developer Portal](https://developer.dojo.tech).\nSecret keys for the test environment use the prefix `sk_sandbox_`. Production keys use the prefix `sk_prod_`.\n\nYou must include your secret API key in the header of all requests, for example:\n\n```curl\n --header 'content-type: application/json' \\\n --header 'Authorization: Basic sk_prod_your_key' \\\n```\n\nAPI requests without authentication will fail.\n\n## Additional Required Headers\n\nThe following headers are required on Terminal and Terminal Sessions API requests, requests without them will fail.\n\n- `reseller-id` - Identifies the reseller who sells software on behalf of the EPOS company. This value will be unique and provided by Dojo to each reseller.\n- `software-house-id` - Identifies the EPOS company whose software is generating the request. This value shouldn't be configurable, as it will remain the same for all customers using particular EPOS software. This value will be provided by Dojo.\n\n## HTTP Responses\n\nThe API returns standard HTTP response codes [RFC 7231](https://tools.ietf.org/html/rfc7231#section-6) on each request to indicate the success or otherwise of API requests. Summaries for each HTTP code are listed below:\n\n* `200 OK`—The request was successful.\n\n* `201 Created`—The request was successful, and a new resource was created as a result.\n\n* `204 No Content`—The request was successful, but there is no content to send.\n\n* `400 Bad Request`—Bad request, probably due to a syntax error.\n\n* `401 Unauthorized`—Authentication required.\n\n* `403 Forbidden`—The API key doesn't have permissions.\n\n* `404 Not Found`—The resource doesn't exist.\n\n* `405 Method Not Allowed`—The request method is known by the server but isn't supported by the target resource.\n\n* `409 Conflict`—The request couldn't be completed because it conflicted with another request or the server's configuration.\n\n* `500`, `502`, `503`, `504` `Server Errors`—An error occurred with our API.\n\n## Errors\n\nDojo follows the error response format proposed in [RFC 7807](https://tools.ietf.org/html/rfc7807), also known as Problem Details for HTTP APIs. All errors are returned in the form of JSON.\n\n### Error Schema\n\nIn case of an error, the response object contains the following fields:\n\n* `errors` [object]—A human-readable explanation of errors.\n\n* `type` [string]—\nA URI reference RFC 3986 that identifies the problem type.\n\n* `title` [string]—A short, human-readable summary of the error.\n\n* `status` [integer]—The HTTP status code.\n\n* `detail` [string]—A human-readable message giving more details about the error. Not always present.\n\n* `traceId` [string]—The unique identifier of the failing request.\n\nThe following example shows a possible error response:\n\n```json\n{\n \"errors\": {\n \"Reference\": [\n \"The Reference field is required.\"\n ]\n },\n \"type\": \"https://tools.ietf.org/html/rfc7231#section-6.5.1\",\n \"title\": \"One or more validation errors occurred.\",\n \"status\": 400,\n \"traceId\": \"00-a405f077df056a498323ffbcec05923f-aa63e6f4dbbc734a-01\",\n}\n```\n\n## Versioning\n\nDojo APIs use the yyyy-mm-dd API version-naming scheme. You have to pass the version as the `version` header in all API calls, for example:\n\n``` curl\n --header 'content-type: application/json' \\\n --header 'Authorization: Basic sk_prod_your_key' \\\n --header 'version: 2026-02-27' \\\n```\n\nWhen we make [breaking changes](../development-resources/versioning-overview#breaking-changes) to the API, we release new dated versions.\n\nThe current version is `2026-02-27`.\n\n## SDKs\nUse our PHP, .NET, and mobile [client libraries](/development-resources/sdk) to build your integration.\n\n## Code Samples\n\nGet help in building your integration with our [code samples](/development-resources/code-samples).\n" termsOfService: https://dojo.tech/legal/ contact: name: Dojo Developer Experience Team servers: - url: https://api.dojo.tech security: - ApiKeyAuth: [] tags: - name: Terminal sessions description: Allows you to manage sessions on the terminal. paths: /terminal-sessions: post: requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateTerminalSessionRequest' examples: Sale: value: terminalId: tm_sandbox_65c5fe8a104a1222b2d8b968 details: sale: paymentIntentId: pi_sandbox_81Q7HAZSGkWLKFx_DFEe9Q sessionType: Sale Matched Refund: value: terminalId: tm_sandbox_65cb51f7b8c708df70d75420 details: matchedRefund: paymentIntentId: pi_sandbox_9H-mmJ4hQ0yc3KlwmbInfg amount: value: 800 currencyCode: GBP sessionType: MatchedRefund Unlinked Refund: value: terminalId: tm_sandbox_65cb51f7b8c708df70d75420 details: unlinkedRefund: amount: value: 800 currencyCode: GBP sessionType: UnlinkedRefund required: true tags: - Terminal sessions parameters: - $ref: '#/components/parameters/Version' - $ref: '#/components/parameters/SoftwareHouseId' - $ref: '#/components/parameters/ResellerId' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TerminalSession' example: createdAt: '2024-02-15T00:48:10.756Z' details: sale: paymentIntentId: pi_sandbox_OMqImg5ob0mY7QVyg6quJA sessionType: Sale expireAt: '2024-02-15T00:48:20.756Z' id: ts_sandbox_65cd5f4a57ba13ad7424acd0 notificationEvents: [] status: InitiateRequested statusEvents: - createdAt: '2024-02-15T00:48:10.756Z' debugMessage: '' status: InitiateRequested terminalId: tm_sandbox_65c5fe8a104a1222b2d8b968 updatedAt: '2024-02-15T00:48:10.756Z' description: Terminal session created. '400': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Bad request '401': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Not found operationId: TerminalSession_Create summary: Create a session on a terminal /terminal-sessions/{terminalSessionId}: get: tags: - Terminal sessions parameters: - name: terminalSessionId description: The unique identifier of the terminal session. schema: type: string in: path required: true x-position: 2 - $ref: '#/components/parameters/Version' - $ref: '#/components/parameters/SoftwareHouseId' - $ref: '#/components/parameters/ResellerId' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TerminalSession' example: createdAt: '2024-02-15T00:48:10.756Z' customerReceipt: lines: - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 'Paymentsense Connect ' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 0808 274 3307 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: www.paymentsense.com - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: M:**********66701 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'TID:****YC8SIP0 ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SCH ID:00000000006615628 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TABLE:30808347 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: HANDSET:1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: VISA CREDIT - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'AID: A0000000032010' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: VISA - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '************0226' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: PAN SEQ NO. 01 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ICC_CHIP - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SALE - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AMOUNT £10.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: GRATUITY £0.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: CASHBACK £0.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: TOTAL £10.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeBody value: SUCCESSFUL - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: Thank You - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '2024-02-15T00:48:10Z' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AUTH CODE:282994 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' CUSTOMER COPY ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' PLEASE RETAIN RECEIPT' details: sale: paymentIntentId: pi_sandbox_OMqImg5ob0mY7QVyg6quJA sessionType: Sale expireAt: '2024-02-15T00:49:40.756Z' id: ts_sandbox_65cd5f4a57ba13ad7424acd0 merchantReceipt: lines: - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 'Paymentsense Connect ' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 0808 274 3307 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: www.paymentsense.com - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: M:**********66701 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'TID:*****C8SIP0 ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SCH ID:00000000006615628 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TABLE:30808347 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: HANDSET:1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: VISA CREDIT - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'AID: A0000000032010' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: VISA - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '************0226' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: PAN SEQ NO. 01 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ICC_CHIP - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SALE - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AMOUNT £10.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: GRATUITY £0.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: CASHBACK £0.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: TOTAL £10.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeBody value: SUCCESSFUL - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: Thank You - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '2024-02-15T00:48:10Z' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AUTH CODE:282994 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TXN 0028 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SESSION 1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' MERCHANT COPY ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' PLEASE RETAIN RECEIPT' notificationEvents: - createdAt: '2024-02-15T00:48:11.98Z' notificationType: PresentCard - createdAt: '2024-02-15T00:48:16.066Z' notificationType: PleaseWait - createdAt: '2024-02-15T00:48:16.176Z' notificationType: EnterPin - createdAt: '2024-02-15T00:48:17.307Z' notificationType: PleaseWait - createdAt: '2024-02-15T00:48:18.354Z' notificationType: RemoveCard status: Captured statusEvents: - createdAt: '2024-02-15T00:48:10.756Z' debugMessage: '' status: InitiateRequested - createdAt: '2024-02-15T00:48:10.972Z' debugMessage: '' status: Initiated - createdAt: '2024-02-15T00:48:19.448Z' debugMessage: '' status: Captured terminalId: tm_sandbox_65c5fe8a104a1222b2d8b968 updatedAt: '2024-02-15T00:48:19.448Z' description: OK '400': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Bad request '401': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Not found operationId: TerminalSession_Get summary: Retrieve a terminal session /terminal-sessions/{terminalSessionId}/cancel: put: tags: - Terminal sessions parameters: - name: terminalSessionId description: The unique identifier of the terminal session. schema: type: string in: path required: true x-position: 2 - $ref: '#/components/parameters/Version' - $ref: '#/components/parameters/SoftwareHouseId' - $ref: '#/components/parameters/ResellerId' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TerminalSession' example: terminalId: tm_sandbox_amxm22C23 createdAt: '2024-02-12T14:15:22Z' updatedAt: '2024-02-12T14:16:22Z' id: ts_sandbox_RBMHTJ4fIkmSppDILZVCGw status: CancelRequested expireAt: '2024-02-12T14:15:22Z' notificationEvents: - notificationType: Approved createdAt: '2024-02-12T14:15:22Z' statusEvents: - status: CancelRequested createdAt: '2024-02-12T14:16:22Z' debugMessage: Troubleshooting message details: sale: paymentIntentId: pi_sandbox_RBMHTJ4fIkmSppDILZVCGw sessionType: Sale description: Terminal session requested to be canceled. '400': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Bad request '401': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Not found '422': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Session cannot be canceled. operationId: TerminalSession_Cancel summary: Request the cancellation of a terminal session /terminal-sessions/{terminalSessionId}/signature: put: requestBody: content: application/json: schema: $ref: '#/components/schemas/SignatureVerificationRequest' required: true tags: - Terminal sessions parameters: - name: terminalSessionId description: The unique identifier of the terminal session. schema: type: string in: path required: true x-position: 2 - $ref: '#/components/parameters/Version' - $ref: '#/components/parameters/SoftwareHouseId' - $ref: '#/components/parameters/ResellerId' responses: '200': content: application/json: schema: $ref: '#/components/schemas/TerminalSession' example: createdAt: '2024-02-15T00:48:10.756Z' customerReceipt: lines: - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 'Paymentsense Connect ' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 0808 274 3307 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: www.paymentsense.com - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: M:**********66701 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'TID:****YC8SIP0 ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SCH ID:00000000006615628 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TABLE:30808347 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: HANDSET:1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: VISA CREDIT - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'AID: A0000000032010' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: VISA - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '************0226' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: PAN SEQ NO. 01 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ICC_CHIP - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SALE - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AMOUNT £10.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: GRATUITY £0.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: CASHBACK £0.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: TOTAL £10.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeBody value: SUCCESSFUL - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: Thank You - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '2024-02-15T00:48:10Z' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AUTH CODE:282994 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' CUSTOMER COPY ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' PLEASE RETAIN RECEIPT' details: sale: paymentIntentId: pi_sandbox_OMqImg5ob0mY7QVyg6quJA sessionType: Sale expireAt: '2024-02-15T00:49:40.756Z' id: ts_sandbox_65cd5f4a57ba13ad7424acd0 merchantReceipt: lines: - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 'Paymentsense Connect ' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: 0808 274 3307 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: www.paymentsense.com - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: M:**********66701 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'TID:*****C8SIP0 ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SCH ID:00000000006615628 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TABLE:30808347 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: HANDSET:1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: VISA CREDIT - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: 'AID: A0000000032010' - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: VISA - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '************0226' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: PAN SEQ NO. 01 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ICC_CHIP - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SALE - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AMOUNT £10.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: GRATUITY £0.00 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: CASHBACK £0.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeHeader1 value: TOTAL £10.00 - lineType: Text text: align: AlignLeft emphasisBold: true size: SizeBody value: SUCCESSFUL - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: Thank You - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: '2024-02-15T00:48:10Z' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: AUTH CODE:282994 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: TXN 0028 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: SESSION 1 - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' MERCHANT COPY ' - lineType: Text text: align: AlignLeft emphasisBold: false size: SizeBody value: ' PLEASE RETAIN RECEIPT' notificationEvents: - createdAt: '2024-02-15T00:48:11.98Z' notificationType: PresentCard - createdAt: '2024-02-15T00:48:16.066Z' notificationType: PleaseWait - createdAt: '2024-02-15T00:48:16.176Z' notificationType: EnterPin - createdAt: '2024-02-15T00:48:17.307Z' notificationType: PleaseWait - createdAt: '2024-02-15T00:48:18.354Z' notificationType: RemoveCard status: SignatureVerificationAccepted statusEvents: - createdAt: '2024-02-15T00:48:10.756Z' debugMessage: '' status: InitiateRequested - createdAt: '2024-02-15T00:48:10.972Z' debugMessage: '' status: Initiated - createdAt: '2024-02-15T00:48:19.448Z' debugMessage: '' status: Captured - createdAt: '2024-02-15T01:47:28.85Z' debugMessage: '' status: SignatureVerificationAccepted terminalId: tm_sandbox_65c5fe8a104a1222b2d8b968 updatedAt: '2024-02-15T01:47:28.85Z' description: Terminal session signature verification response recorded. '400': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Bad request '401': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Unauthorized '404': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Not found '422': content: application/json: schema: $ref: '#/components/schemas/ProblemDetailsTerminals' description: Session cannot be canceled. operationId: TerminalSession_Signature summary: Respond to a signature verification request components: schemas: TerminalSessionReceiptTextSize: description: "Decide the size of included receipt text. \n" enum: - SizeHeader1 - SizeHeader2 - SizeBody type: string CardFundingType: type: string description: 'The main funding types are credit, debit, pre-paid, and charge. ' TerminalSessionReceiptLine: description: The value and configuration of the terminal session receipt line. required: - lineType type: object properties: lineType: $ref: '#/components/schemas/TerminalSessionReceiptLineType' text: $ref: '#/components/schemas/TerminalSessionReceiptText' imageLogo: $ref: '#/components/schemas/TerminalSessionReceiptImageLogo' TerminalSessionNotificationType: description: 'Terminal notifications. (Approved, Declined, InsertCard, EnterPin, PleaseWait, PresentCard, PresentOnlyOneCard, RemoveCard, CardUnsupported, CardError, ReEnterCard)' type: string PaymentDetails: type: object additionalProperties: false description: The payment details object. properties: transactionId: type: - string - 'null' description: 'The unique identifier of the transaction. ' transactionDateTime: type: - string - 'null' description: The date and time of the payment in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. message: type: - string - 'null' description: The description of the operation. paymentMethodId: type: - string - 'null' description: The unique identifier of the customer payment method. authCode: type: - string - 'null' description: The acquirer's authorization code. This code is returned on a successful transaction. card: oneOf: - $ref: '#/components/schemas/Card' description: Card details, including card number, scheme, and expiry date. avsResult: type: - string - 'null' description: 'The result of the Address Verification Service (AVS) check. ' Money: description: 'The amount intended to be collected by this payment intent excluding `tipsAmount` `serviceChargeAmount` and `cashbackAmount`. ' type: object additionalProperties: false required: - value - currencyCode properties: value: description: The amount in [ISO 4217](https://www.iso.org/iso-4217-currency-codes.html) minor units, for example, "100" for 1.00 GBP. type: integer format: int64 currencyCode: description: Three-letter currency code in [ISO 4217 alpha-3](https://www.iso.org/iso-4217-currency-codes.html) format. Accepts `GBP` and `EUR`. type: string maxLength: 10 minLength: 1 CreateTerminalSessionRequest: type: object description: Create a terminal session, and decide what sort of transaction it is going to be associated with. Note that only one of the refund types can be specified, and this selection must be the same as the `sessionType`. additionalProperties: false title: CreateTerminalSessionRequest required: - terminalId - details properties: terminalId: description: The unique identifier for the terminal. type: string example: tm_sandbox_amxm22C23 details: $ref: '#/components/schemas/TerminalSessionDetails' ProblemDetailsTerminals: type: object title: ProblemDetails description: Dojo follows the error response format proposed in [RFC 7807](https://datatracker.ietf.org/doc/html/rfc7807), also known as Problem Details for HTTP APIs. required: - detail - status - title - traceId - type - errors properties: type: type: - string - 'null' description: A URI reference [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) that identifies the problem type. title: type: - string - 'null' description: A short, human-readable summary of the error. status: type: - integer - 'null' format: int32 description: The [HTTP status code](#section/Introduction/HTTP-Responses). detail: type: - string - 'null' description: An optional, human-readable message giving more details about the error. traceId: type: - string - 'null' description: The unique identifier of the failing request. errors: type: - object - 'null' description: A human-readable explanation of errors. additionalProperties: {} TerminalSessionStatusEvent: description: The current progress of the terminal session, including whether it is in-progress or finished. required: - status - createdAt - debugMessage type: object properties: status: $ref: '#/components/schemas/TerminalSessionStatus' createdAt: format: date-time description: 'The creation date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. ' type: string debugMessage: description: 'The message to troubleshoot the terminal session by revealing the internal state of the terminal. ' type: string SignatureVerificationRequest: title: SignatureVerificationRequest description: Request to the EPOS to confirm whether the signature has been accepted or not in a payment that requires signature verification. This request must be replied to within a set period of time defined by the timeout property. If no reply to this request is received (i.e. no confirmation of acceptance), the signature will automatically be accepted. required: - accepted type: object properties: accepted: description: True/false. Failed signature verification requests will be false. type: boolean TerminalSessionNotificationEvent: description: This event is a timestamped record of when a notification was issued. required: - notificationType - createdAt type: object properties: notificationType: $ref: '#/components/schemas/TerminalSessionNotificationType' createdAt: format: date-time description: This is when the terminal session was created, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. type: string TerminalSessionReceiptText: description: 'Edit the content of text included with the terminal session receipt, and configure the text''s appearance. ' required: - value - size - align - emphasisBold type: object properties: value: description: 'This string field is for the actual receipt text body. ' type: string size: $ref: '#/components/schemas/TerminalSessionReceiptTextSize' align: $ref: '#/components/schemas/TerminalSessionReceiptAlign' emphasisBold: description: 'Decide whether the terminal session receipt text is bold. True/false. ' type: boolean TerminalSessionDetails: description: Details about the terminal session, including which type of transaction it is associated with. required: - sessionType type: object anyOf: - required: - sale title: Sale - required: - unlinkedRefund title: Unlinked Refund - required: - matchedRefund title: Matched Refund properties: unlinkedRefund: $ref: '#/components/schemas/TerminalSessionUnlinkedRefundDetails' matchedRefund: $ref: '#/components/schemas/TerminalSessionMatchedRefundDetails' sale: $ref: '#/components/schemas/TerminalSessionSaleDetails' x-displayName: Sale sessionType: $ref: '#/components/schemas/TerminalSessionType' TerminalSessionStatus: description: The current status of the terminal session. A finalized, successful session will be `Captured`. enum: - InitiateRequested - Initiated - Authorized - Captured - CancelRequested - Canceled - SignatureVerificationAccepted - SignatureVerificationRejected - SignatureVerificationRequired - Expired - Declined type: string TerminalSessionSaleDetails: description: Use this field when creating a terminal session request to name a payment intent by its ID to associate with the session. required: - paymentIntentId type: object properties: paymentIntentId: description: 'The unique identifier of the payment intent. ' type: string example: pi_sandbox_RBMHTJ4fIkmSppDILZVCGw TerminalSessionMatchedRefundDetails: description: A matched refund is associated with the payment intent of the initial transaction. required: - paymentIntentId type: object properties: paymentIntentId: type: string description: 'The unique identifier of the payment intent. ' amount: allOf: - $ref: '#/components/schemas/Money' description: The value of the linked refund, in minor units. TerminalSessionReceiptAlign: description: "Align the receipt text to the center, to the left, or to the right. \n" enum: - AlignLeft - AlignCenter - AlignRight type: string TerminalSession: description: This is the terminal session object, containing detailed information about the history of the terminal session, and its current status. required: - createdAt - updatedAt - id - status - notificationEvents - expireAt - statusEvents - terminalId type: object properties: terminalId: description: The unique identifier for the terminal. type: string createdAt: format: date-time description: This is when the terminal session was created, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. type: string updatedAt: type: string format: date-time description: The timestamp of the update date, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. id: description: The unique identifier of the terminal session. type: string example: ts_sandbox_RBMHTJ4fIkmSppDILZVCGw status: description: The current status of the terminal session. A finalized, successful session will be `Captured`. oneOf: - $ref: '#/components/schemas/TerminalSessionStatus' expireAt: format: date-time description: The timestamp and date of when a terminal session will be marked as `Expired`, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) UTC format. This changes throughout the life cycle of a terminal session as it moves to different states. type: string notificationEvents: description: When a notification is issued, a notification event is created to record when it occurred. type: array items: $ref: '#/components/schemas/TerminalSessionNotificationEvent' statusEvents: description: Status events include the capture, cancellation, and refund of payments. type: array items: $ref: '#/components/schemas/TerminalSessionStatusEvent' receipt: allOf: - $ref: '#/components/schemas/TerminalSessionReceipt' details: $ref: '#/components/schemas/TerminalSessionDetails' paymentDetails: oneOf: - $ref: '#/components/schemas/PaymentDetails' description: These details about the payment will only populate once the status of the transaction is finalized. TerminalSessionReceipt: description: The receipt object is a record of the transactions associated with a terminal session. required: - lines type: object properties: lines: description: The line items purchased by the customer. type: array items: $ref: '#/components/schemas/TerminalSessionReceiptLine' TerminalSessionPaymentVerificationMode: type: string description: 'Method used to verify that the person presenting the card is the legitimate cardholder. The most common verification methods are PIN and signature. (Pin, Signature, Device, None)' TerminalSessionReceiptLineType: description: These are the line types that will form the physical receipt. enum: - Text - LogoImage - NewLine - SingleLineSeperator - DoubleLineSeperator type: string TerminalSessionReceiptImageLogo: description: 'An optional logo can be added to the terminals receipt. ' required: - value - align type: object properties: value: description: '' type: string align: $ref: '#/components/schemas/TerminalSessionReceiptAlign' TerminalSessionPaymentEntryMode: type: string description: 'Entry mode of the payment. (Contactless, ContactChip, Magstripe, ManualEntry, Unknown)' Card: type: object additionalProperties: false properties: cardNumber: type: - string - 'null' description: The card number. cardName: type: - string - 'null' description: The name of the cardholder. expiryDate: type: - string - 'null' description: If available, the expiry date of the card in the format 'MM/YY'. cardType: type: - string - 'null' description: The card scheme. cardFundingType: $ref: '#/components/schemas/CardFundingType' last4PAN: type: - string - 'null' description: The last four digits of the Primary Account Number. For Visa and Mastercard, this will be the four numbers at the end of the sixteen-digit card number. entryMode: $ref: '#/components/schemas/TerminalSessionPaymentEntryMode' verificationMethod: $ref: '#/components/schemas/TerminalSessionPaymentVerificationMode' TerminalSessionUnlinkedRefundDetails: description: A refund which is not linked to any previous transaction. required: - amount type: object properties: amount: allOf: - $ref: '#/components/schemas/Money' description: The value of the unlinked refund, in minor units. cardholderNotPresent: description: Indicates whether this transaction should be completed as Cardholder Not Present (CNP), with manual entry of card details. If the flag is true, the card machine skips the `Present Card` screen and goes directly into Key Card Number. type: boolean TerminalSessionType: description: Decide which type of transaction a terminal session is going to be associated with. enum: - Sale - MatchedRefund - UnlinkedRefund type: string parameters: ResellerId: name: reseller-id description: This identifies the reseller of the EPOS. This may be the same as the `software-house-id` if they are also the seller. schema: type: string example: reseller1 in: header required: false SoftwareHouseId: name: software-house-id description: This field shows the EPOS company whose software is generating the request. This value should not be configurable as it will remain the same for all customers using particular EPOS software. schema: type: string example: softwareHouse1 in: header required: true Version: name: version in: header required: true schema: type: string format: date example: '2026-02-27' description: The API version with format yyyy-mm-dd. The current version is `2026-02-27`. securitySchemes: ApiKeyAuth: type: apiKey name: Authorization in: header x-tagGroups: - name: Core payments tags: - Payment intents - Refunds - Reversal - Captures - Webhooks - Customers - Setup intents - name: In-person payments tags: - Terminals - Terminal sessions - name: Capabilities tags: - Capabilities - Events