# Update Terminal

Updates an existing terminal configuration.

### Endpoint

`PUT https://api.test.devs.beadpay.io/Terminals/{id}`

### Authentication

Use your **admin API key** in the request header for terminal management operations.

### Request headers

| Header         | Value              |
| -------------- | ------------------ |
| `X-Api-Key`    | `{adminApiKey}`    |
| `Content-Type` | `application/json` |
| `Accept`       | `application/json` |

### Path parameter

| Name | Type   | Description                                                                       |
| ---- | ------ | --------------------------------------------------------------------------------- |
| `id` | string | Terminal identifier returned by Create Terminal, List Terminals, or Get Terminal. |

### Request body

| Field                  | Type    | Required | Description                                                    |
| ---------------------- | ------- | -------- | -------------------------------------------------------------- |
| `name`                 | string  | Yes      | Friendly name for the terminal.                                |
| `description`          | string  | Yes      | Terminal description.                                          |
| `displayLogo`          | boolean | Yes      | Controls whether the logo is displayed where supported.        |
| `isEnabled`            | boolean | Yes      | Controls whether the terminal can create new payments.         |
| `tenderTypes`          | array   | No       | Tender types enabled for this terminal.                        |
| `extendRedirectUrl`    | boolean | No       | Adds `paymentPageId` as a query parameter to the redirect URL. |
| `maxTransactionAmount` | number  | No       | Optional maximum transaction amount for this terminal.         |

### Example request

```bash
curl --request PUT "https://api.test.devs.beadpay.io/Terminals/67f10123456789abcdef0456" \
  --header "X-Api-Key: {adminApiKey}" \
  --header "Content-Type: application/json" \
  --header "Accept: application/json" \
  --data '{
    "name": "Front Counter 1",
    "description": "Primary checkout terminal - updated",
    "displayLogo": true,
    "isEnabled": true,
    "tenderTypes": ["ethereum", "usdcBase"],
    "extendRedirectUrl": false,
    "maxTransactionAmount": 7500
  }'
```

### Example response

```json
{
  "id": "67f10123456789abcdef0456",
  "name": "Front Counter 1",
  "description": "Primary checkout terminal - updated",
  "merchantId": "67e90123456789abcdef0001",
  "merchantStatus": "active",
  "type": "virtual",
  "merchantLocationId": "67f00123456789abcdef0123",
  "merchantLocation": {
    "id": "67f00123456789abcdef0123",
    "name": "Main Store",
    "address": {
      "address1": "123 Main St",
      "city": "Boston",
      "region": "MA",
      "country": "US",
      "postalCode": "02110"
    },
    "isEnabled": true
  },
  "displayLogo": true,
  "webhookUrl": "https://example.com/webhooks/terminal/67f10123456789abcdef0456",
  "isEnabled": true,
  "extendRedirectUrl": false,
  "tenderTypes": ["ethereum", "usdcBase"],
  "created": "2026-04-02T15:00:00Z",
  "updated": "2026-04-03T10:15:00Z",
  "maxTransactionAmount": 7500,
  "apiKey": {
    "secret": "pk_test_terminal_secret_value",
    "maskedSecret": "pk_****_value"
  },
  "useSandboxSharedWallet": true
}
```

### Notes

* Use this endpoint to update terminal settings such as name, description, enabled status, tender types, branding, and transaction limits.
* Use your **admin API key** for terminal management operations.
* Use the terminal payments API key for payment activity performed by that terminal.
* Treat `apiKey.secret` as sensitive and do not expose it in logs or client-side code.
* Updating a terminal does not replace the terminal payments API key. If you need to rotate the terminal key, use the terminal API key reset operation.

### Response codes

| Code  | Meaning                                                                         |
| ----- | ------------------------------------------------------------------------------- |
| `200` | Terminal updated successfully.                                                  |
| `202` | Update accepted for processing.                                                 |
| `204` | Update completed with no response body.                                         |
| `400` | The request body is invalid or missing required fields.                         |
| `401` | The admin API key is missing or invalid.                                        |
| `403` | The caller is authenticated but not permitted to update the specified terminal. |
| `404` | No terminal was found for the supplied `id`.                                    |
| `409` | A conflicting terminal state prevented the update.                              |

### Related operations

* [Create Terminal](/entity-management/terminal-management/create-terminal.md)
* [List Terminals](/entity-management/terminal-management/list-terminals.md)
* [Get Terminal](/entity-management/terminal-management/get-terminal.md)
* [Delete Terminal](/entity-management/terminal-management/delete-terminal.md)
* [Webhook Management](/entity-management/terminal-management/webhook-management.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://developers.bead.xyz/entity-management/terminal-management/update-terminal.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
