---
description: "This endpoint initiates [Noah's Reliance Model onboarding flow](/getting-started/kyc#reliance-model). Customers created from this endpoint must have a valid KYC status at the point of passing this data to Noah, and when executing a transaction. A unique `CustomerID` must be provided to enable unique identification in Noah. Customers are approved synchronously from the API call, and are immediately available to transact."
title: "Create/Update Customer"
---

# Create/Update Customer

> This endpoint initiates [Noah's Reliance Model onboarding flow](/getting-started/kyc#reliance-model). Customers created from this endpoint must have a valid KYC status at the point of passing this data to Noah, and when executing a transaction. A unique `CustomerID` must be provided to enable unique identification in Noah. Customers are approved synchronously from the API call, and are immediately available to transact.

```http
PUT /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) |

## Request body

### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `(body)` | IndividualCustomerInput \| BusinessCustomerInput | Yes | (discriminated by `Type`) |
| `IndividualCustomerInput` | object | No |  |
| `IndividualCustomerInput.Type` | `Individual` | Yes |  |
| `IndividualCustomerInput.FullName` | object | Yes |  |
| `IndividualCustomerInput.FullName.FirstName` | string | Yes | user's first name (length 1-50) |
| `IndividualCustomerInput.FullName.LastName` | string | Yes | user's last name (family name) (length 1-50) |
| `IndividualCustomerInput.FullName.MiddleName` | string | No | user's middle name (length 1-50) |
| `IndividualCustomerInput.DateOfBirth` | string (date) | Yes | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomerInput.Email` | string (email) | No | Customer's email address. |
| `IndividualCustomerInput.PhoneNumber` | string | No | (pattern `^\+[0-9]{6,15}$`) |
| `IndividualCustomerInput.Identities` | object[] | Yes |  |
| `IndividualCustomerInput.Identities[].IssuingCountry` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `IndividualCustomerInput.Identities[].IDNumber` | string | Yes | (length 1-36) |
| `IndividualCustomerInput.Identities[].IssuedDate` | string (date) | No | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomerInput.Identities[].ExpiryDate` | string (date) | No | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |
| `IndividualCustomerInput.Identities[].IDType` | string | Yes | Type of identification document: * DrivingLicense * NationalIDCard * Passport * AddressProof * ResidencePermit * TaxID |
| `IndividualCustomerInput.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. |
| `IndividualCustomerInput.PrimaryResidence.Street` | string | Yes | Street: the primary name of an address's street. Printable ASCII only. (length 2-200) |
| `IndividualCustomerInput.PrimaryResidence.Street2` | string | No | Street2: the secondary name of an address's street. Optional. Printable ASCII only. (length 0-200) |
| `IndividualCustomerInput.PrimaryResidence.City` | string | Yes | City: name of an address's city or town. Printable ASCII only. (length 1-100) |
| `IndividualCustomerInput.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) |
| `IndividualCustomerInput.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) |
| `IndividualCustomerInput.PrimaryResidence.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `BusinessCustomerInput` | object | No |  |
| `BusinessCustomerInput.Type` | `Business` | Yes |  |
| `BusinessCustomerInput.RegisteredName` | string | Yes | Name of the business. (length 1-100) |
| `BusinessCustomerInput.Email` | string (email) | No | Email address of the business. |
| `BusinessCustomerInput.RegistrationNumber` | string | Yes | Registration number of the business. (length 1-40) |
| `BusinessCustomerInput.EntityType` | `LimitedLiabilityCompany` \| `PublicCompany` \| `SoleProprietorship` \| `Partnership` \| `Corporation` \| `Trust` \| `PrivateFoundation` \| `Charity` \| `NonProfitOrganization` \| `PublicAgency` | Yes | Entity type for business entities |
| `BusinessCustomerInput.RegistrationCountry` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `BusinessCustomerInput.RegisteredAddress` | 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. |
| `BusinessCustomerInput.RegisteredAddress.Street` | string | Yes | Street: the primary name of an address's street. Printable ASCII only. (length 2-200) |
| `BusinessCustomerInput.RegisteredAddress.Street2` | string | No | Street2: the secondary name of an address's street. Optional. Printable ASCII only. (length 0-200) |
| `BusinessCustomerInput.RegisteredAddress.City` | string | Yes | City: name of an address's city or town. Printable ASCII only. (length 1-100) |
| `BusinessCustomerInput.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) |
| `BusinessCustomerInput.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) |
| `BusinessCustomerInput.RegisteredAddress.Country` | string | Yes | ISO 3166-1 alpha-2 country code. |
| `BusinessCustomerInput.IncorporationDate` | string (date) | Yes | (length 10-10; pattern `^\d{4}-\d{2}-\d{2}$`) |

## Responses

### 201 — Customer created

### 204 — Customer updated

### 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/create-update-customer
- OpenAPI document: https://docs.noah.com/files/oas-schema.generated.json
