# Retrieves a merchant's terminal POS status by ID

<a id="flute-v2-get-terminals-terminalId-status"></a>
<span class="api-endpoint">GET {{<a href="#urlbases">baseURL</a>}}/v2/terminals/{{terminalId}}/status</span>
This endpoint Retrieves a merchant's terminal POS status by ID.
information includes the connection and network state, hardware info and software version.
This provides the latest available information about a terminal, updated in near real-time.
Use this endpoint before initiating a POS transaction.
It verifies the terminal is reachable and ready to accept a payment.
Before creating a POS transaction, check the `terminalStatus`.
It must be `Ready` and not `Busy` or `Offline`.
The fields `batteryLevel` and p`rinterStatus` can be used to warn merchants of low battery or printer issues before starting a transaction.
Depending on the terminal's internet connectivity and operational status, the response may include limited terminal data.

Endpoint: GET /v2/terminals/{terminalId}/status
Version: V2 Beta
Security: Bearer

## Path parameters:

  - `terminalId` (string, required)
    Specifies the terminal identifier.

## Response 200 fields (application/json):

  - `terminalId` (string)
    Indicates the terminal identifier that handles the transaction.

This is a mirror of the path parameter.

The terminal must be in semi-integrated mode and available (online and ready).
A semi-integrated terminal is one that is connected to a POS system, typically through a network or cable.

Example: 0dfac966-9dbd-4608-a65f-d6a4c961dd35
    Example: 0dfac966-9dbd-4608-a65f-d6a4c961dd35

  - `merchantId` (string)
    Identifies the merchant identifier.

Example: 5611f824-48ef-4255-978d-91ce13953bbd
    Example: 5611f824-48ef-4255-978d-91ce13953bbd

  - `terminalStatus` (string)
    Indicates the terminal status to process a new transaction.
Valid values are:
| Status | Meaning |
|  --- | --- |
| Active | The terminal is powered on and available.It is ready to process a new transaction. |
| Busy | The terminal is currently processing a transaction.It is not available to accept another one until that transaction completes. |
| Offline | The terminal is disconnected or unreachable.It cannot process transactions until connectivity is restored. |

Example: Active
    Enum: "Active", "Busy", "Offline"

  - `lastSeenOn` (string)
    Indicates the timestamp (in an ISO 8601 date-time UTC format) that the terminal was last seen online.

Example: 2026-05-05T13:25:32.223Z
    Example: 2026-05-05T13:25:32.223Z

  - `debitPinKey` (string)
    Indicates the debit PIN key.
A debit PIN key is a cryptographic key used specifically to encrypt the cardholder's PIN during a debit transaction on a payment terminal.
When a customer enters their PIN on a PIN pad or terminal, that PIN must be encrypted immediately within the terminal's secure hardware (never transmitted in plaintext) to comply with PCI PIN security standards.
The debit PIN key is what performs that encryption.
It is typically injected into the terminal.
This is often as part of a DUKPT (derived unique key per transaction) scheme, or a fixed key-encryption-key setup.
The terminal can encrypt the PIN block before it's sent onward for authorization.
If the debitPinKey is missing, the terminal cannot securely accept PIN-debit transactions until that key is loaded.
Valid values are:
| Status | Explanation |
|  --- | --- |
| Injected | The terminal has had its encryption or security keys loaded.It is properly provisioned to process secure payment data. |
| Missing | The terminal does not have its encryption or security keys loaded.It cannot securely process payment data until keys are injected. |

Example: Injected
    Enum: "Injected", "Missing"

  - `terminalAppVersion` (string)
    Indicates the terminal version.

Example: 1.4.2
    Example: 1.4.2

  - `connectionStatus` (string)
    Indicates the line status of the terminal.
Valid values are:
| Status | Meaning |
|  --- | --- |
| Online | The terminal is currently connected and reachable.It has active network or internet connectivity. It is able to process transactions and communicate with the backend in real time. |
| Offline | The terminal is disconnected or unreachable.It may be powered off, have lost its network connection, or otherwise be unable to communicate. As a result, it cannot process transactions, or can only do so in a stored or deferred mode depending on the platform. |

Example: Online
    Enum: "Online", "Offline"

  - `connectionType` (string)
    Indicates the connection type for the terminal.
Valid values are:
| Type | Meaning |
|  --- | --- |
| Ethernet | The terminal connects through a wired network cable.This typically offers the most stable and reliable connection. |
| Mobile | The terminal connects using a cellular data connection.This is useful when Wi-Fi or Ethernet isn't available, such as in the field. |
| WiFi | The terminal connects through a wireless local network.This offers mobility within range of the wireless access point without a physical cable. |

Example: Ethernet
    Enum: "WiFi", "Mobile", "Ethernet"

  - `wifiConnectionStrength` (integer)
    Indicates the WiFi connection strength as a percent.
Example: 45 (as 45%)
    Example: 45

  - `mobileConnectionStrength` (integer)
    Indicates the mobile connection strength as a percent.
Example: 87 (as 87%)
    Example: 87

  - `batteryLevel` (integer)
    Indicates the battery level as a percent.
Example: 52 (as 52%)
    Example: 52

  - `printerStatus` (string)
    Indicates the printer status.
Valid values are:
| Status | Meaning |
|  --- | --- |
| Normal | The device is functioning correctly. |
| NotNormal | The device has an issue or fault. |
| NotSupported | The device does not support this feature. |

Example: Normal
    Enum: "Normal", "NotNormal", "NotSupported"

## Response 400 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 401 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 403 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 404 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 429 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

## Response 500 fields (application/json):

  - `details` (string)
    Indicates details about the error.

Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error
    Example: Validation failed: -- Email: 'Email' is not a valid email address. Severity: Error

  - `statusCode` (integer)
    Specifies the HTTP response status code.
This is the HTTP status code returned by the attempted delivery.
The following is a list of HTTP response status codes that include but are not limited to:
| HTTP Status | Meaning |
|  --- | --- |
| 200 | Delivery succeeded |
| 400 | Bad request |
| 401 | Unauthorized |
| 404 | Endpoint not found |
| 429 | Rate limited |

Example: 401
    Example: 401

  - `source` (string)
    Indicates the source of the error.
Example: <Service>
    Example: <Service>

  - `exceptionType` (string)
    Indicates the error's exception type.

Example: FluentValidation.ValidationException
    Example: FluentValidation.ValidationException

  - `correlationId` (string)
    Indicates the correlation identifier.

Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef
    Example: aa6cfcd0-0295-4a4c-b074-8c901f114fef

  - `entityId` (string)
    Indicates the entity identifier.
Example:
null

  - `errorCode` (string)
    Indicates the error code.
Example:
null

  - `title` (string)

  - `cause` (string)

  - `resolution` (string)

  - `documentationUrl` (string)
    https://developer.flute.com/

