Submit Applicant

View as Markdown
### Submit applicant details for a customer application. **Available to:** All authenticated users **Environments:** Live **[Rate Limit](/overview/core-concepts/rate-limits):** No endpoint-specific limit Submit the applicant's personal, financial, and regulatory details for a customer application. Call this after starting the application with [`startCustomerApplication`](/api/rest-api-endpoints/users/start-customer-application), using the returned application `id` as `customerApplicationId`. Provide at least one applicant object matching the application's legal status: - `individual` — for `Individual` and `IRA` applications - `jointApplicant` — for the second applicant on `Joint` applications - `corporate` — for entity applications (`Corporation`, `LLC`, `LLP`, `LP`, `PTR`, `Trust`) The request is rejected if all three applicant objects are empty. Only the primary applicant's login can submit or change applicant details. Set `dryRun` to save the applicant details without finalizing the submission — useful for persisting progress while the applicant is still filling out the application. A successful response returns the created applicant record ID (`individualApplicantId` or `corporateApplicantId`). The response can also include `duplicateMetadata` — if `duplicateFound` is `true`, the details matched an existing application or account, and the metadata references the conflicting `customerApplicationId` or `accountId`. **Business Rules** The submission is rejected when: - The applicant selects the `Hedger` margin type — only `Speculator` accounts are supported. - The applicant reports a previous bankruptcy filing (`debtorInBankruptcy`). - The applicant is under 18 years old, or `birthDate` is missing for an individual applicant. - The applicant's `country` does not match the user's country of residence (applies to applications in certain jurisdictions). **Common Failure Scenarios** - `customerApplicationId` does not reference an existing application. - All of `individual`, `jointApplicant`, and `corporate` are empty. - The caller is not the primary applicant on the application. - The caller belongs to a reliance-agreement organization and cannot sign on behalf of customers. **Error Messages** | `errorText` | Trigger | |-------------|---------| | `"Thank you for your interest in opening an account. Unfortunately, we do not support Hedgers. Please choose Speculator to continue your application."` | The applicant's `marginType` is `Hedger`. | | `"Thank you for your interest in opening an account. Unfortunately, we have a policy to not open accounts for clients that have had a previous Bankruptcy filing. If you have further questions, please contact our compliance department."` | The applicant reports `debtorInBankruptcy`. | | `"Please specify birth date"` | `individual` is provided without a parseable `birthDate`. | | `"Thank you for your interest in opening an account, however, the minimum age to open an account is 18."` | The applicant's `birthDate` is less than 18 years ago. | | `"Country must match your country of residence. Start a new application and select your correct country of residence."` | The individual applicant's `country` conflicts with the user's country of residence. | | `"Applicant info cannot be changed after signing by primary applicant"` | The caller's session is not the primary applicant's session. | | `"This operation should be performed by your organization"` | The caller's organization has a reliance agreement, and the caller cannot sign on behalf of customers. | **Next Steps** - Upload any required supporting documents with [`submitCustomerApplicationDocument`](/api/rest-api-endpoints/users/submit-customer-application-document). - Generate the agreement documents for signing with [`prepareAgreementDocuments`](/api/rest-api-endpoints/users/prepare-agreement-documents).

Authentication

AuthorizationBearer

Bearer authentication of the form Bearer <token>, where token is your auth token.

Request

This endpoint expects an object.
customerApplicationIdlongRequired
individualobjectOptional
jointApplicantobjectOptional
corporateobjectOptional
dryRunbooleanOptional
ecbsvAuthorizedbooleanOptional

Response

ApplicantResponse
errorTextstring<=8192 characters

Non-empty if the request failed

individualApplicantIdlong
corporateApplicantIdlong
duplicateMetadataobject
ecbsvAuthorizedboolean