---
updatedAt: 2026-06-18T06:18:31.000Z
agentTools:
  projectIndex: https://developer.pay.nl/llms.txt
---

# TerminalProducts

Get an overview of terminal products.

> 📘 API is in early pilot phase, use only when instructed by Pay.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "PAY. Global Management System API's",
    "description": "The restful API for interacting with the Pay.",
    "termsOfService": "https://www.pay.nl/en/terms-conditions",
    "contact": {
      "name": "Pay.",
      "url": "https://developer.pay.nl",
      "email": "support@pay.nl"
    },
    "license": {
      "name": "Proprietary",
      "url": "https://www.pay.nl/en/terms-conditions"
    },
    "version": "2"
  },
  "servers": [
    {
      "url": "https://gms.pay.nl",
      "description": "Pay.nl"
    }
  ],
  "paths": {
    "/v2/terminalproducts": {
      "get": {
        "operationId": "terminal_product_terminal_products_get",
        "tags": [
          "Core Data"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/TerminalProduct.TerminalProductsOutput"
                },
                "examples": {
                  "success": {
                    "$ref": "#/components/examples/TerminalProductsResponse200Successful"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          },
          "405": {
            "$ref": "#/components/responses/MethodNotAllowed"
          },
          "406": {
            "$ref": "#/components/responses/NotAcceptable"
          },
          "410": {
            "$ref": "#/components/responses/Gone"
          },
          "415": {
            "$ref": "#/components/responses/UnsupportedMediaType"
          },
          "429": {
            "$ref": "#/components/responses/TooManyRequests"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/ServiceUnavailable"
          }
        },
        "summary": "TerminalProducts",
        "description": "Get an overview of terminal products.",
        "parameters": [],
        "deprecated": false
      },
      "parameters": [
        {
          "name": "Accept-Language",
          "in": "header",
          "description": "Locales for the following languages are accepted, all others are treated with \"en_GB\" by default.",
          "required": false,
          "deprecated": false,
          "schema": {
            "type": "string",
            "enum": [
              "en_GB",
              "de_DE",
              "es_ES",
              "fr_BE",
              "fr_FR",
              "it_IT",
              "nl_BE",
              "nl_NL",
              "nl",
              "de",
              "en",
              "fr",
              "es",
              "it"
            ]
          },
          "style": "simple",
          "explode": false,
          "examples": {
            "default_locale": {
              "summary": "Query for results in en_GB.",
              "value": "en_GB"
            }
          }
        }
      ]
    }
  },
  "components": {
    "schemas": {
      "LinkOutput": {
        "type": "object",
        "description": "A hyperlink to a related resource.",
        "deprecated": false,
        "properties": {
          "href": {
            "type": [
              "string",
              "null"
            ],
            "description": "The URI to the linked resource"
          },
          "rel": {
            "type": [
              "string",
              "null"
            ],
            "description": "The name of the linked resource"
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The (http(s)) method needed to approach the linked resource"
          }
        },
        "title": "Link"
      },
      "TerminalProduct.ImageOutput": {
        "type": "object",
        "description": "An image associated with a terminal product.",
        "deprecated": false,
        "properties": {
          "label": {
            "description": "The label of the image",
            "example": "main",
            "type": [
              "string",
              "null"
            ]
          },
          "url": {
            "description": "The URL of the image",
            "example": "https://example.com/image.jpg",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "title": "Image"
      },
      "TerminalProduct.TerminalProductOutput": {
        "type": "object",
        "description": "A single terminal product.",
        "deprecated": false,
        "properties": {
          "code": {
            "description": "The TX-code for a terminal product.",
            "example": "TX-1234-4321",
            "type": "string"
          },
          "type": {
            "description": "The type of the product",
            "example": "ACCESSORIES",
            "type": [
              "string",
              "null"
            ],
            "enum": [
              "ACCESSORIES",
              "MARKETING",
              "SERVICES",
              "SOFTWARE",
              "POS",
              "TERMINAL",
              null
            ]
          },
          "name": {
            "description": "The name for the product",
            "example": "A77 protective case",
            "type": "string"
          },
          "description": {
            "description": "The description of the product",
            "example": "Protective case for the A77 terminal.",
            "type": [
              "string",
              "null"
            ]
          },
          "images": {
            "description": "List of images of the product",
            "example": [
              {
                "label": "main",
                "url": "https://example.com/image.png"
              }
            ],
            "type": "object",
            "additionalProperties": {
              "$ref": "#/components/schemas/TerminalProduct.ImageOutput"
            }
          },
          "translations": {
            "type": "object",
            "additionalProperties": {
              "type": "object",
              "additionalProperties": {
                "type": "string"
              }
            },
            "example": {
              "...": {
                "nl_NL": "The Dutch translation",
                "en_GB": "The British translation",
                "nl_BE": "The Flemish translation",
                "fr_FR": "The French translation",
                "de_DE": "The German translation",
                "it_IT": "The Italian translation",
                "es_ES": "The Spanish translation"
              }
            }
          },
          "createdAt": {
            "description": "The creation date of the terminal product",
            "example": "2025-07-16T14:34:11.575Z",
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "modifiedAt": {
            "description": "The last modification date of the terminal product",
            "example": "2025-07-29T08:17:28.235Z",
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "deletedAt": {
            "description": "The deletion date of the terminal product",
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "title": "Terminal Product"
      },
      "TerminalProduct.TerminalProductsOutput": {
        "type": "object",
        "description": "A collection of all available terminal products.",
        "deprecated": false,
        "properties": {
          "terminalProducts": {
            "readOnly": true,
            "description": "Contains a list of available terminalProducts.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/TerminalProduct.TerminalProductOutput"
            }
          },
          "total": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The total items the collection contains",
            "example": 10
          },
          "_links": {
            "readOnly": true,
            "type": [
              "array",
              "null"
            ],
            "items": {
              "$ref": "#/components/schemas/LinkOutput"
            }
          }
        },
        "title": "Terminal Products"
      },
      "ErrorOutput": {
        "type": "object",
        "description": "Standard error response body returned when an API request fails.",
        "deprecated": false,
        "properties": {
          "type": {
            "default": "https://developer.pay.nl/docs/error-codes",
            "example": "https://developer.pay.nl/docs/error-codes",
            "type": "string",
            "description": "URI identifying the error type documentation."
          },
          "code": {
            "type": "string",
            "description": "PAY error code identifying the error.",
            "example": "PAY-1404",
            "pattern": "^PAY-\\d{1,4}$"
          },
          "title": {
            "type": "string",
            "description": "Short, human-readable summary of the error.",
            "example": "Resource not found"
          },
          "detail": {
            "type": "string",
            "description": "Detailed explanation of the error.",
            "example": "The requested resource is not found"
          },
          "violations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ViolationOutput"
            },
            "description": "Field-level validation violations, when applicable.",
            "example": [
              {
                "propertyPath": "name",
                "message": "This value should not be blank."
              }
            ]
          },
          "trace": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Stack trace entries (only included in non-production environments).",
            "example": []
          }
        }
      },
      "ViolationOutput": {
        "type": "object",
        "description": "A single field-level validation violation within an error response.",
        "deprecated": false,
        "properties": {
          "propertyPath": {
            "type": [
              "string",
              "null"
            ],
            "description": "JSON pointer or property path to the invalid field, or null for a general error.",
            "example": "name"
          },
          "message": {
            "type": "string",
            "description": "Human-readable description of the validation failure.",
            "example": "This value should not be blank."
          },
          "code": {
            "type": [
              "string",
              "null"
            ],
            "description": "PAY error code for this violation.",
            "example": "PAY-1422",
            "pattern": "^PAY-\\d{1,4}$"
          }
        }
      }
    },
    "responses": {
      "BadRequest": {
        "description": "Bad request, see response body for more information",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "BadRequest": {
                "summary": "Bad Request",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1400",
                  "title": "Bad request",
                  "detail": "The given input is malformed",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "Bad request",
                      "code": "PAY-1400"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Unauthorized. Supplied credentials are invalid",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "Unauthorized": {
                "summary": "Supplier credentials are invalid",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1401",
                  "title": "Authentication is needed to access this resource",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "Authentication is needed to access this resource",
                      "code": "PAY-1401"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "Forbidden": {
        "description": "Forbidden. Supplied credentials have no rights",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "Forbidden": {
                "summary": "Supplier credentials have no rights",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1403",
                  "title": "Access denied",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "Access denied",
                      "code": "PAY-1403"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "NotFound": {
        "description": "Resource not found",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "NotFound": {
                "summary": "The requested resource is not found",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1404",
                  "title": "The requested resource is not found",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "The requested resource is not found",
                      "code": "PAY-1404"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "MethodNotAllowed": {
        "description": "Used HTTP method is not allowed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "MethodNotAllowed": {
                "summary": "The used HTTP method is not allowed",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1405",
                  "title": "The request method is not supported by the target resource",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "The request method is not supported by the target resource",
                      "code": "PAY-1405"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "NotAcceptable": {
        "description": "Not acceptable. The supplied content type in the accept parameter in the header is not supported",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "NotAcceptable": {
                "summary": "The supplied content type in the accept parameter in the header is not supported",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1406",
                  "title": "There is no content that is acceptable by this server",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "There is no content that is acceptable by this server",
                      "code": "PAY-1406"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "Gone": {
        "description": "Indicates that this resource is no longer available for use",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "Gone": {
                "summary": "The requested resource is no longer available",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1410",
                  "title": "The requested resource is no longer available",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "The requested resource is no longer available",
                      "code": "PAY-1410"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "UnsupportedMediaType": {
        "description": "Unsupported media. The supplied content type in the content-type parameter in the header is not supported",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "UnsupportedMediaType": {
                "summary": "The supplied content type in the content-type parameter in the header is not supported",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1415",
                  "title": "The server does not support the requested media type",
                  "detail": "",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "The server does not support the requested media type",
                      "code": "PAY-1415"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "TooManyRequests": {
        "description": "Rate limit reached.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "TooManyRequests": {
                "summary": "Rate limit reached.",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1429",
                  "title": "Too many requests",
                  "detail": "Rate limit reached, try again in 15 minutes.",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "Too many requests",
                      "code": "PAY-1429"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "InternalServerError": {
        "description": "An internal error occurred.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "InternalServerError": {
                "summary": "An internal error occurred.",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1500",
                  "title": "An internal error has occurred",
                  "detail": "Failed to process request due to X",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "An internal error has occurred",
                      "code": "PAY-1500"
                    }
                  ]
                }
              }
            }
          }
        }
      },
      "ServiceUnavailable": {
        "description": "The server is currently unable to handle your request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ErrorOutput"
            },
            "examples": {
              "ServiceUnavailable": {
                "summary": "The server is currently unable to handle your request.",
                "value": {
                  "type": "https://developer.pay.nl/docs/error-codes",
                  "code": "PAY-1503",
                  "title": "The server is unable to handle your request, try again later.",
                  "detail": "The server is currently unable to handle your request, try again in 15 minuntes.",
                  "violations": [
                    {
                      "propertyPath": null,
                      "message": "The server is unable to handle your request, try again later.",
                      "code": "PAY-1503"
                    }
                  ]
                }
              }
            }
          }
        }
      }
    },
    "examples": {
      "TerminalProductsResponse200Successful": {
        "summary": "Browse TerminalProducts",
        "description": "Browse TerminalProducts",
        "value": {
          "total": 1,
          "terminalProducts": [
            {
              "code": "TX-1234-4321",
              "type": "SERVICES",
              "name": "A77 protective case",
              "description": "Protective case for the A77 terminal.",
              "images": [
                {
                  "label": "main",
                  "url": "https://example.com/image.png"
                }
              ],
              "translations": {
                "name": {
                  "en_GB": "A77 protective case"
                },
                "description": {
                  "en_GB": "Protective case for the A77 terminal."
                }
              },
              "createdAt": "2025-07-16T16:34:11+02:00",
              "modifiedAt": "2025-07-29T10:17:28+02:00",
              "deletedAt": null
            }
          ],
          "_links": [
            {
              "href": "/terminalproducts",
              "rel": "self",
              "type": "GET"
            }
          ]
        }
      }
    },
    "securitySchemes": {
      "BasicAuth": {
        "type": "http",
        "description": "HTTP Basic authentication using your API token as the username and an empty password.",
        "scheme": "basic"
      },
      "BearerAuth": {
        "type": "http",
        "description": "Example: Bearer 12345xx6xxx1x2x123456789123xx123x12345x4",
        "scheme": "bearer"
      }
    }
  },
  "security": [
    {
      "BasicAuth": []
    },
    {
      "BearerAuth": []
    }
  ],
  "tags": [
    {
      "name": "Core Data",
      "description": "Core Data"
    }
  ]
}
```