# List terminals Retrieve a list of all physical point-of-sale devices. The results are paginated. > 🔑 Access with > > [API key](/reference/authentication) > > [Organization access token with **terminals.read**](/reference/authentication) > > [OAuth access with **terminals.read**](/reference/authentication) # OpenAPI definition ```json { "openapi": "3.1.0", "info": { "title": "Accepting payments", "version": "1.0.0", "license": { "name": "Attribution-NonCommercial-ShareAlike 4.0 International", "identifier": "CC-BY-NC-SA-4.0" } }, "servers": [ { "url": "https://api.mollie.com/v2" } ], "security": [ { "apiKey": [] }, { "organizationAccessToken": [] }, { "oAuth": [] } ], "paths": { "/terminals": { "get": { "summary": "List terminals", "x-speakeasy-name-override": "list", "tags": [ "Terminals API" ], "operationId": "list-terminals", "security": [ { "apiKey": [] }, { "organizationAccessToken": [ "terminals.read" ] }, { "oAuth": [ "terminals.read" ] } ], "description": "Retrieve a list of all physical point-of-sale devices.\n\nThe results are paginated.\n\n> 🔑 Access with\n>\n> [API key](/reference/authentication)\n>\n> [Organization access token with **terminals.read**](/reference/authentication)\n>\n> [OAuth access with **terminals.read**](/reference/authentication)", "parameters": [ { "name": "from", "in": "query", "description": "Provide an ID to start the result set from the item with the given ID and onwards. This allows you to paginate the result set.", "schema": { "type": "string", "pattern": "^term_.+$", "example": "term_vytxeTZskVKR7C7WgdSP3d" } }, { "name": "limit", "description": "The maximum number of items to return. Defaults to 50 items.", "in": "query", "schema": { "type": [ "integer", "null" ], "minimum": 1, "maximum": 250, "default": 50, "example": 50 } }, { "name": "sort", "description": "Used for setting the direction of the result set. Defaults to descending order, meaning the results are ordered from newest to oldest.\n\nPossible values: `asc` `desc`", "in": "query", "schema": { "type": "string", "example": "desc" } }, { "name": "testmode", "description": "Most API credentials are specifically created for either live mode or test mode. In those cases the `testmode` query parameter must not be sent. For organization-level credentials such as OAuth access tokens, you can enable test mode by setting the `testmode` query parameter to `true`.\n\nTest entities cannot be retrieved when the endpoint is set to live mode, and vice versa.", "in": "query", "schema": { "type": "boolean", "example": false } } ], "responses": { "200": { "description": "A list of terminal objects.", "content": { "application/hal+json": { "schema": { "type": "object", "required": [ "count", "_embedded", "_links" ], "properties": { "count": { "type": "integer", "description": "The number of items in this result set. If more items are available, a `_links.next` URL will be present in the result as well.\n\nThe maximum number of items per result set is controlled by the `limit` property provided in the request. The default limit is 50 items.", "minimum": 1, "maximum": 250, "example": 5 }, "_embedded": { "type": "object", "properties": { "terminals": { "description": "An array of terminal objects.", "type": "array", "items": { "type": "object", "required": [ "resource", "id", "mode", "profileId", "status", "brand", "model", "serialNumber", "currency", "description", "createdAt", "updatedAt", "_links" ], "properties": { "resource": { "type": "string", "description": "Indicates the response contains a terminal object. Will always contain the string `terminal` for this endpoint.", "readOnly": true, "default": "terminal" }, "id": { "allOf": [ { "type": "string", "pattern": "^term_.+$", "example": "term_vytxeTZskVKR7C7WgdSP3d" } ], "description": "The identifier uniquely referring to this terminal. Example: `term_7MgL4wea46qkRcoTZjWEH`.", "readOnly": true }, "mode": { "type": "string", "description": "Whether this entity was created in live mode or in test mode.\n\nPossible values: `live` `test`", "readOnly": true, "example": "live" }, "description": { "type": "string", "description": "A short description of the terminal. The description can be used as an identifier for the terminal. Currently, the description is set when the terminal is initially configured. It will be visible in the Mollie Dashboard, and it may be visible on the device itself depending on the device.", "maxLength": 255, "example": "Main Terminal" }, "status": { "allOf": [ { "type": "string", "description": "The status of the terminal.\n\nPossible values: `pending` `active` `inactive`", "x-enumDescriptions": { "pending": "The device has been linked to your account, but has not yet been activated. If you ordered a terminal\nfrom us, it may already become visible in your account with this status.", "active": "The terminal is fully configured and ready to accept payments.", "inactive": "The terminal has been deactivated. Deactivation happens for example if you returned the device to\nMollie, or if you requested to move it to another profile or organization." }, "example": "active" } ], "readOnly": true }, "brand": { "type": [ "string", "null" ], "example": "PAX", "description": "The brand of the terminal.\n\nPossible values: `PAX` `Tap`" }, "model": { "type": [ "string", "null" ], "example": "A920", "description": "The model of the terminal. For example for a PAX A920, this field's value will be `A920`.\n\nPossible values: `A35` `A77` `A920` `A920Pro` `IM30` `Tap`" }, "serialNumber": { "type": [ "string", "null" ], "example": "1234567890", "description": "The serial number of the terminal. The serial number is provided at terminal creation time." }, "currency": { "type": "string", "example": "EUR", "description": "The currency configured on the terminal, in ISO 4217 format. Currently most of our terminals are bound to a specific currency, chosen during setup." }, "profileId": { "type": "string", "description": "The identifier referring to the [profile](get-profile) this entity belongs to.\n\nMost API credentials are linked to a single profile. In these cases the `profileId` must not be sent in the creation request. For organization-level credentials such as OAuth access tokens however, the `profileId` parameter is required.", "pattern": "^pfl_.+$", "example": "pfl_5B8cwPMGnU" }, "createdAt": { "type": "string", "description": "The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.", "readOnly": true, "example": "2024-03-20T09:13:37+00:00" }, "updatedAt": { "type": "string", "description": "The entity's date and time of creation, in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format.", "example": "2025-03-20T09:13:37+00:00" }, "_links": { "type": "object", "description": "An object with several relevant URLs. Every URL object will contain an `href` and a `type` field.", "required": [ "self" ], "properties": { "self": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } } }, "readOnly": true } } } } } }, "_links": { "type": "object", "description": "Links to help navigate through the lists of items. Every URL object will contain an `href` and a `type` field.", "required": [ "self", "previous", "next", "documentation" ], "properties": { "self": { "description": "The URL to the current set of items.", "type": "object", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "previous": { "description": "The previous set of items, if available.", "type": [ "object", "null" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "next": { "description": "The next set of items, if available.", "type": [ "object", "null" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } }, "documentation": { "type": "object", "description": "In v2 endpoints, URLs are commonly represented as objects with an `href` and `type` field.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "description": "The actual URL string.", "example": "https://..." }, "type": { "type": "string", "description": "The content type of the page or endpoint the URL points to.", "example": "application/hal+json" } } } } } } }, "examples": { "list-terminals-200-1": { "summary": "A list of terminal objects", "value": { "count": 1, "_embedded": { "terminals": [ { "resource": "terminal", "id": "term_7MgL4wea46qkRcoTZjWEH", "mode": "live", "status": "active", "brand": "PAX", "model": "A920", "serialNumber": "1234567890", "currency": "EUR", "description": "Terminal #12345", "profileId": "pfl_QkEhN94Ba", "createdAt": "2022-02-12T11:58:35+00:00", "updatedAt": "2022-02-12T11:58:35+00:00", "_links": { "self": { "href": "...", "type": "application/hal+json" }, "documentation": { "href": "...", "type": "text/html" } } } ] }, "_links": { "self": { "href": "...", "type": "application/hal+json" }, "previous": null, "next": null, "documentation": { "href": "...", "type": "text/html" } } } }, "list-terminals-200-2": { "summary": "List terminals for specific profile", "x-request": "./requests.yaml#/oauth-list-terminals-for-specific-profile", "value": { "_embedded": { "terminals": [ { "resource": "terminal", "id": "term_5YQ8WDcA4UWB5bo7AfDZH", "mode": "live", "profileId": "pfl_zcfJRjkf6P", "status": "active", "brand": "PAX", "model": "A920", "serialNumber": "1851664277", "currency": "EUR", "description": "Counter in store Amsterdam", "createdAt": "2023-06-01T08:22:07+00:00", "updatedAt": "2023-06-01T08:36:25+00:00", "_links": { "self": { "href": "...", "type": "application/hal+json" }, "documentation": { "href": "...", "type": "text/html" } } }, { "resource": "terminal", "id": "term_fmA5H4CAMsAMZz8bPgzMH", "mode": "live", "profileId": "pfl_zcfJRjkf6P", "status": "active", "brand": "PAX", "model": "A920", "serialNumber": "1850009788", "currency": "EUR", "description": "Terminal #12346", "createdAt": "2022-09-27T13:30:36+00:00", "updatedAt": "2022-09-27T13:37:27+00:00", "_links": { "self": { "href": "...", "type": "application/hal+json" }, "documentation": { "href": "...", "type": "text/html" } } }, { "resource": "terminal", "id": "term_2rfs4P5CfsEPaene6RgMH", "mode": "live", "profileId": "pfl_zcfJRjkf6P", "status": "active", "brand": "PAX", "model": "A920", "serialNumber": "1850009794", "currency": "EUR", "description": "Mollie1", "createdAt": "2022-09-20T12:10:33+00:00", "updatedAt": "2022-11-14T10:49:06+00:00", "_links": { "self": { "href": "...", "type": "application/hal+json" }, "documentation": { "href": "...", "type": "text/html" } } } ] }, "count": 3, "_links": { "documentation": { "href": "...", "type": "text/html" }, "self": { "href": "...", "type": "application/hal+json" }, "previous": null, "next": null } } } } } } }, "400": { "description": "The request contains issues. For example, if the specified `from` value is not a valid ID.", "content": { "application/hal+json": { "schema": { "type": "object", "description": "An error response object.", "required": [ "status", "title", "detail", "_links" ], "properties": { "status": { "type": "integer", "description": "The status code of the error message. This is always the same code as the status code of the HTTP message itself.", "minimum": 400, "maximum": 599, "example": 404 }, "title": { "type": "string", "description": "The HTTP reason phrase of the error. For example, for a `404` error, the `title` will be `Not Found`.", "example": "Not Found" }, "detail": { "type": "string", "description": "A detailed human-readable description of the error that occurred.", "example": "The resource does not exist" }, "field": { "type": "string", "description": "If the error was caused by a value provided by you in a specific field, the `field` property will contain the name of the field that caused the issue.", "example": "description" }, "_links": { "type": "object", "required": [ "documentation" ], "properties": { "documentation": { "type": "object", "description": "The URL to the generic Mollie API error handling guide.", "required": [ "href", "type" ], "properties": { "href": { "type": "string", "example": "https://docs.mollie.com/errors" }, "type": { "type": "string", "example": "text/html" } } } } } } }, "example": { "status": 400, "title": "Bad Request", "detail": "Invalid cursor value", "field": "from", "_links": { "documentation": { "href": "...", "type": "text/html" } } } } } } }, "x-speakeasy-pagination": { "type": "url", "outputs": { "nextUrl": "$._links.next.href" } }, "x-readme": { "code-samples": [ { "language": "shell", "code": "curl -X GET https://api.mollie.com/v2/terminals \\\n -H \"Authorization: Bearer live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM\"" }, { "language": "php", "code": "setApiKey(\"live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM\");\n\n$terminals = $mollie->send(new GetPaginatedTerminalsRequest(limit: 5));", "install": "composer require mollie/mollie-api-php" }, { "language": "node", "code": "/*\nWe don't have a Node.js code example for this\nAPI call yet.\n\nIf you have some time to spare, feel free to\nshare suggestions on our Discord:\nhttps://discord.gg/VaTVkXB4aQ\n*/", "install": "npm install @mollie/api-client" }, { "language": "python", "code": "from mollie.api.client import Client\n\nmollie_client = Client()\nmollie_client.set_api_key(\"live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM\")\n\nterminals = mollie_client.terminals.list()", "install": "pip install mollie-api-python" }, { "language": "ruby", "code": "# We don't have a Ruby code example for this\n# API call yet.\n#\n# If you have some time to spare, feel free to\n# share suggestions on our Discord:\n# https://discord.gg/VaTVkXB4aQ", "install": "gem install mollie-api-ruby" } ] } } } }, "components": { "securitySchemes": { "apiKey": { "type": "http", "scheme": "bearer", "x-default": "live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" }, "organizationAccessToken": { "type": "http", "scheme": "bearer", "x-default": "access_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM" }, "oAuth": { "type": "oauth2", "flows": { "authorizationCode": { "authorizationUrl": "https://my.mollie.com/oauth2/authorize", "tokenUrl": "https://api.mollie.com/oauth2/tokens", "scopes": {} } } } } }, "x-readme": { "explorer-enabled": false, "samples-languages": [ "shell", "php", "node", "python", "ruby" ] } } ```