# Register endpoints

You can register an account address or, if the ledger supports smart contracts, a smart contract address as an endpoint.

If this is a smart contract endpoint, you can deploy the contract application binary interface (ABI) data when you create the endpoint.

## Prerequisites

Before you register your endpoint, you need the following:

| Prerequisite | Additional information |
|  --- | --- |
| The ledger ID | [List ledgers](/products/custody/v1.15/api/reference/openapi/ledgers/getledgers) |
| An account or smart contract address | [Retrieve account address](/products/custody/v1.15/api/reference/openapi/accounts/getaccountaddress) |
| The following new IDs, in a standard UUID format:An endpoint IDAn intent ID |  |


## Register an endpoint

System change process
All new requests to change the system state follow the same process. To familiarize yourself with this process first, follow the [Request a change with an intent](/products/custody/v1.15/resources/tutorials/intent) tutorial.

To register a new endpoint, follow the steps in [Request a change with an intent](/products/custody/v1.15/resources/tutorials/intent), with a payload similar to one of the following examples.

### Payload examples

#### Wallet endpoint

This example shows a wallet endpoint `payload` block


```json
"payload":{
   "id": "c3ddaca1-07d8-437d-803b-bfdef7833aa4",
   "address": "0x258aE861829FB6B33e7528308cA2938638590F34",
   "trustScore": 50,
   "ledgerId": "ethereum-testnet",
   "alias": "Ethereum Testnet",
   "lock": "Unlocked",
   "description": "Ethereum testnet wallet",
   "customProperties": {},
   "type": "v0_CreateEndpoint"
},
```

#### Smart contract endpoint

This example shows a smart contract endpoint `payload` block


```json
"payload": {
   "id": "b445e1d1-41fe-468a-a600-1b9ad7b057e1",
   "address": "0xb2f701a94d864b131fd47c9cf4563e6298afdbfc",
   "trustScore": 50,
   "ledgerId": "ethereum-testnet",
   "parameters": {
        "ABI": "json_string",
        "type": "Ethereum"
    },
   "alias": "MTT Smart Contract",
   "lock": "Unlocked",
   "metadata": {},
   "type": "v0_CreateEndpoint"
}
```

Fields of the `payload` block to note are as follows:

| Field | Description |
|  --- | --- |
| `type` | `v0_CreateEndpoint` |
| `address` | Address of an account or smart contract. If this is a smart contract address, it must be in a valid format. |
| `trustScore` | A score used to define the level of trust in the address. |
| `parameters` | For smart contract endpoints, set `ABI` to the ABI string in JSON format. The only supported `type` is `Ethereum`. |


The endpoint is registered when the endpoint creation intent is successfully approved and executed.