---
description: "This endpoint retrieves the details of a specific customer by their `CustomerID`."
title: "Customer by ID"
---

# Customer by ID

> This endpoint retrieves the details of a specific customer by their `CustomerID`.

```http
GET /customers/{CustomerID}
```

- `https://api.sandbox.noah.com/v1/customers/{CustomerID}` — V1 Sandbox Server
- `https://api.noah.com/v1/customers/{CustomerID}` — V1 Production Server

## Authentication

- `X-Api-Key`: Your Noah API key. Required on all requests. See [API Keys](/api-concepts/authentication/api).
- `Api-Signature`: Digitally signed JWT used to verify request authenticity. Optional in sandbox when your API key has no associated signing public key; required in production for all requests. If sent, the signature is always validated. See [Request Signing](/api-concepts/authentication/signing).

## Path parameters

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |

## Responses

### 200 — Customer details retrieved successfully

#### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `(body)` | IndividualCustomer \| BusinessCustomer | No | (discriminated by `Type`) |
| `IndividualCustomer` | object | No |  |
| `IndividualCustomer.Type` | `Individual` | Yes |  |
| `IndividualCustomer.CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `IndividualCustomer.Created` | string (date-time) | Yes |  |
| `IndividualCustomer.DateOfBirth` | string (date) | Yes | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomer.FullName` | object | Yes |  |
| `IndividualCustomer.FullName.FirstName` | string | Yes | user's first name (length 1-50) |
| `IndividualCustomer.FullName.LastName` | string | Yes | user's last name (family name) (length 1-50) |
| `IndividualCustomer.FullName.MiddleName` | string | No | user's middle name (length 1-50) |
| `IndividualCustomer.Identities` | object[] | Yes |  |
| `IndividualCustomer.Identities[].IssuingCountry` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `IndividualCustomer.Identities[].IDNumber` | string | Yes | (length 1-36) |
| `IndividualCustomer.Identities[].IssuedDate` | string (date) | No | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomer.Identities[].ExpiryDate` | string (date) | No | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomer.Identities[].IDType` | string | Yes | Type of identification document: * DrivingLicense * NationalIDCard * Passport * AddressProof * ResidencePermit * TaxID |
| `IndividualCustomer.PrimaryResidence` | object | Yes | Physical postal address. All string fields must be printable ASCII. State and PostCode are required for every country. See [Address Validation](/api-concepts/address-validation) for country-specific rules and payment-form differences. |
| `IndividualCustomer.PrimaryResidence.Street` | string | Yes | Street: the primary name of an address's street. Printable ASCII only. (length 2-200) |
| `IndividualCustomer.PrimaryResidence.Street2` | string | No | Street2: the secondary name of an address's street. Optional. Printable ASCII only. (length 0-200) |
| `IndividualCustomer.PrimaryResidence.City` | string | Yes | City: name of an address's city or town. Printable ASCII only. (length 1-100) |
| `IndividualCustomer.PrimaryResidence.PostCode` | string | Yes | PostCode: the address's postcode or ZIP code. Required for all countries (1-20 characters). Use the format from the customer's official documents. Placeholder values such as 00000 or NA are not accepted. (length 1-20) |
| `IndividualCustomer.PrimaryResidence.State` | string | Yes | State: the address's state, province, or county. Required for all countries (1-100 characters). For USA and Canada, use the ISO 3166-2 subdivision code as two uppercase letters (e.g. CA). For other countries, use the local administrative division name. Placeholders such as NA or None are not accepted. (length 1-100) |
| `IndividualCustomer.PrimaryResidence.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `IndividualCustomer.Verifications` | object | No | Verification data for the customer |
| `IndividualCustomer.Verifications.Type` | `Individual` \| `Business` | Yes |  |
| `IndividualCustomer.Verifications.Status` | string | Yes |  |
| `IndividualCustomer.Verifications.ActionsRequired` | (`HighRiskInfo` \| `HighRiskInfoSenior` \| `SourceOfWealth` \| `DocumentPageMissing` \| `DocumentReupload` \| `SelfieReupload` \| `ProofOfAddress` \| `ProofOfAddressReupload` \| `IncorrectTaxID`)[] | No | Additional actions currently required from the customer to complete the review. |
| `IndividualCustomer.Verifications.EntityVerifications` | object[] | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].Model` | string | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].Status` | string | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].Created` | string (date-time) | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].Modified` | string (date-time) | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].Entity` | string | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].RejectionData` | object | No |  |
| `IndividualCustomer.Verifications.EntityVerifications[].RejectionData.RejectType` | `Final` \| `Retry` | Yes |  |
| `IndividualCustomer.Verifications.EntityVerifications[].RejectionData.PublicComment` | string | No |  |
| `IndividualCustomer.Metadata` | Record<string, string> | No | Custom user defined key value pairs used for storing additional information about the customer. |
| `IndividualCustomer.Agreements` | object[] | No |  |
| `IndividualCustomer.Agreements[].Name` | `NoahPrivacyPolicy` \| `NoahTermsOfService` \| `NoahEsignAgreement` \| `LeadBankFundTransfer` \| `LeadBankTermsAndConditions` \| `LeadBankBusinessFundTransfer` | Yes | Identifier of a terms or agreement document the customer was asked to accept. |
| `IndividualCustomer.Agreements[].Version` | integer | Yes | Version of the agreement. |
| `IndividualCustomer.Agreements[].Accepted` | boolean | Yes | Whether the customer has accepted this agreement version. |
| `IndividualCustomer.Agreements[].AcceptedAt` | string (date-time) | No | Time at which the agreement was accepted. Present only when Accepted is true. |
| `BusinessCustomer` | object | No |  |
| `BusinessCustomer.Type` | `Business` | Yes |  |
| `BusinessCustomer.CustomerID` | string | Yes | A unique ID which identifies the customer in the Business' internal system and in NOAH. (length 1-42) |
| `BusinessCustomer.Created` | string (date-time) | Yes |  |
| `BusinessCustomer.RegisteredName` | string | Yes | Name of the business. |
| `BusinessCustomer.Email` | string (email) | No | Email address of the business. |
| `BusinessCustomer.RegistrationNumber` | string | No | Registration number of the business. |
| `BusinessCustomer.RegistrationCountry` | string | No | ISO 3166-1 alpha-2 country code. |
| `BusinessCustomer.RegisteredAddress` | object | No | Physical postal address. All string fields must be printable ASCII. State and PostCode are required for every country. See [Address Validation](/api-concepts/address-validation) for country-specific rules and payment-form differences. |
| `BusinessCustomer.RegisteredAddress.Street` | string | Yes | Street: the primary name of an address's street. Printable ASCII only. (length 2-200) |
| `BusinessCustomer.RegisteredAddress.Street2` | string | No | Street2: the secondary name of an address's street. Optional. Printable ASCII only. (length 0-200) |
| `BusinessCustomer.RegisteredAddress.City` | string | Yes | City: name of an address's city or town. Printable ASCII only. (length 1-100) |
| `BusinessCustomer.RegisteredAddress.PostCode` | string | Yes | PostCode: the address's postcode or ZIP code. Required for all countries (1-20 characters). Use the format from the customer's official documents. Placeholder values such as 00000 or NA are not accepted. (length 1-20) |
| `BusinessCustomer.RegisteredAddress.State` | string | Yes | State: the address's state, province, or county. Required for all countries (1-100 characters). For USA and Canada, use the ISO 3166-2 subdivision code as two uppercase letters (e.g. CA). For other countries, use the local administrative division name. Placeholders such as NA or None are not accepted. (length 1-100) |
| `BusinessCustomer.RegisteredAddress.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `BusinessCustomer.IncorporationDate` | string (date) | No | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `BusinessCustomer.Verifications` | object | No | Verification data for the customer |
| `BusinessCustomer.Verifications.Type` | `Individual` \| `Business` | Yes |  |
| `BusinessCustomer.Verifications.Status` | string | Yes |  |
| `BusinessCustomer.Verifications.ActionsRequired` | (`HighRiskInfo` \| `HighRiskInfoSenior` \| `SourceOfWealth` \| `DocumentPageMissing` \| `DocumentReupload` \| `SelfieReupload` \| `ProofOfAddress` \| `ProofOfAddressReupload` \| `IncorrectTaxID`)[] | No | Additional actions currently required from the customer to complete the review. |
| `BusinessCustomer.Verifications.EntityVerifications` | object[] | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].Model` | string | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].Status` | string | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].Created` | string (date-time) | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].Modified` | string (date-time) | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].Entity` | string | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].RejectionData` | object | No |  |
| `BusinessCustomer.Verifications.EntityVerifications[].RejectionData.RejectType` | `Final` \| `Retry` | Yes |  |
| `BusinessCustomer.Verifications.EntityVerifications[].RejectionData.PublicComment` | string | No |  |
| `BusinessCustomer.Metadata` | Record<string, string> | No | Custom user defined key value pairs used for storing additional information about the customer. |
| `BusinessCustomer.Agreements` | object[] | No |  |
| `BusinessCustomer.Agreements[].Name` | `NoahPrivacyPolicy` \| `NoahTermsOfService` \| `NoahEsignAgreement` \| `LeadBankFundTransfer` \| `LeadBankTermsAndConditions` \| `LeadBankBusinessFundTransfer` | Yes | Identifier of a terms or agreement document the customer was asked to accept. |
| `BusinessCustomer.Agreements[].Version` | integer | Yes | Version of the agreement. |
| `BusinessCustomer.Agreements[].Accepted` | boolean | Yes | Whether the customer has accepted this agreement version. |
| `BusinessCustomer.Agreements[].AcceptedAt` | string (date-time) | No | Time at which the agreement was accepted. Present only when Accepted is true. |

### 400 — Bad request

### 401 — Client is not authorized to perform this action

### 500 — Internal server error

Error responses share one `Error` envelope across the whole API. See https://docs.noah.com/api-concepts/errors.md for its fields, the `Type` values, and the field-level validation details in `RequestExtension` and `DenyExtension`.

## See also

- Rendered reference: https://docs.noah.com/api-reference/customer-by-id
- OpenAPI document: https://docs.noah.com/files/oas-schema.generated.json
