---
description: "This endpoint initiates [Noah's Standard Model onboarding flow](/getting-started/kyc#standard-model). Through this solution, Noah establishes direct contractual relationships with your end customers, handling all KYB/KYC verification and Terms and Conditions acceptance on your behalf."
title: "Create Onboarding Session"
---

# Create Onboarding Session

> This endpoint initiates [Noah's Standard Model onboarding flow](/getting-started/kyc#standard-model). Through this solution, Noah establishes direct contractual relationships with your end customers, handling all KYB/KYC verification and Terms and Conditions acceptance on your behalf.

```http
POST /onboarding/{CustomerID}
```

- `https://api.sandbox.noah.com/v1/onboarding/{CustomerID}` — V1 Sandbox Server
- `https://api.noah.com/v1/onboarding/{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 |
| --- | --- | --- | --- |
| `Metadata` | Record<string, string> | No | Custom user defined key value pairs used for storing additional information. |
| `ReturnURL` | string (uri) | Yes | (length 10-1000) |
| `FiatOptions` | object[] | No | Specifies fiat channels the customer will be onboarded to. When omitted, fiat options are resolved from the customer's onboarding record or available channels. |
| `FiatOptions[].FiatCurrencyCode` | string | Yes | Supported fiat ISO_4217 3 letter currency codes. |
| `Form` | object | No | Form input to be submitted based on returned FormSchema (additional properties allowed) |
| `CustomerType` | `Individual` \| `Business` | No | Type of customer to onboard. Defaults to Individual if not provided. |
| `Locale` | string | No | Checkout / hosted UI language code for URL path segments. Supported values: en, es, fr, de, it, pt. Defaults to en when omitted. |

## Responses

### 200 — Hosted onboarding session request successful. The `OnboardingStatus` field indicates an action is required to complete the onboarding.

#### `application/json`

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `HostedURL` | string (uri) | Yes | URL to redirect the customer to hosted session. |
| `FormSchema` | object | No | JSON schema for the form |
| `FormSchema.$schema` | string | Yes |  |
| `FormSchema.type` | string | Yes |  |
| `FormSchema.title` | string | No |  |
| `FormSchema.description` | string | No |  |
| `FormSchema.properties` | object | Yes | (additional properties allowed) |
| `FormSchema.required` | string[] | No |  |
| `FormSchema.allOf` | object[] | No |  |
| `OnboardingStatus` | `ReviewNotStarted` \| `ReviewPending` \| `DocumentInvalid` \| `AgreementsRequired` \| `Rejected` | No | Indicates the current status of the onboarding process. |
| `MissingSteps` | string[] | No | Verification step types that are still incomplete (e.g. IDENTITY, SELFIE, QUESTIONNAIRE). Only present when OnboardingStatus is ReviewNotStarted and the applicant has not yet submitted all required data for the initial verification. For follow-up verification requirements, please refer to customer webhooks. |
| `Verifications` | object | No | Verification data for the customer |
| `Verifications.Type` | `Individual` \| `Business` | Yes |  |
| `Verifications.Status` | string | Yes |  |
| `Verifications.ActionsRequired` | (`HighRiskInfo` \| `HighRiskInfoSenior` \| `SourceOfWealth` \| `DocumentPageMissing` \| `DocumentReupload` \| `SelfieReupload` \| `ProofOfAddress` \| `ProofOfAddressReupload` \| `IncorrectTaxID`)[] | No | Additional actions currently required from the customer to complete the review. |
| `Verifications.EntityVerifications` | object[] | Yes |  |
| `Verifications.EntityVerifications[].Model` | string | Yes |  |
| `Verifications.EntityVerifications[].Status` | string | Yes |  |
| `Verifications.EntityVerifications[].Created` | string (date-time) | Yes |  |
| `Verifications.EntityVerifications[].Modified` | string (date-time) | Yes |  |
| `Verifications.EntityVerifications[].Entity` | string | Yes |  |
| `Verifications.EntityVerifications[].RejectionData` | object | No |  |
| `Verifications.EntityVerifications[].RejectionData.RejectType` | `Final` \| `Retry` | Yes |  |
| `Verifications.EntityVerifications[].RejectionData.PublicComment` | string | No |  |

### 201 — Customer created

### 202 — Onboarding in progress. The review will be processed asynchronously and a webhook will be sent when the review is complete or has advanced to the next step.

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