# 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       | Optional redirect behavior setting.                     |
| `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](https://developers.bead.xyz/entity-management/terminal-management/create-terminal)
* [List Terminals](https://developers.bead.xyz/entity-management/terminal-management/list-terminals)
* [Get Terminal](https://developers.bead.xyz/entity-management/terminal-management/get-terminal)
* [Delete Terminal](https://developers.bead.xyz/entity-management/terminal-management/delete-terminal)
* [Webhook Management](https://developers.bead.xyz/entity-management/terminal-management/webhook-management)
