/application/submit-individual-plusUpsert Individual Plus Application
Creates or updates an Individual Plus application. The applicant is the application — submit-individual and emove-individual do not apply to this form type.
- Create: Omit Individual.Id or set it to ull. A new Individual Plus application is created.
- Update: Include Individual.Id (returned from the create response) and Individual.Version. The entire form is fully replaced — send the full payload every time.
Key rules:
- Email is required on create, must be globally unique, and is immutable (ignored on update).
- Ssn (9 chars, no hyphens) is required for US individuals; TaxId is required for non-US individuals.
- CardAvail determines Visa debit card eligibility.
Optimistic locking: Send Individual.Version from the last response on update. Stale value → dirty_update.
Headers
| Field | Type | Required | Possible values | Description |
|---|---|---|---|---|
session-token | string | Required | — | SessionToken obtained from the Create GMA Session endpoint. All secured endpoints require this header. |
Request body
| Field | Type | Required | Possible values | Description |
|---|---|---|---|---|
Individual | object | Required | — | The Individual Plus applicant payload (`BrokerIndividualPlus`). Send the full form on every submit. |
Individual.FirstName | string | Required | — | First name. |
Individual.LastName | string | Required | — | Last name. |
Individual.MotherMaidenName | string | Required | — | Mother's maiden name. Min 2, Max 50 characters. |
Individual.Email | string | Required | — | Email address. Required on create; immutable thereafter (ignored on re-submit). Must be globally unique. |
Individual.Dob | string | Required | e.g. 19900131 | Date of birth. Format: `yyyyMMdd`. |
Individual.Gender | string | Required | Male | Female | Gender_X | Gender. |
Individual.Nationality | string | Required | e.g. US | GB | DE | Nationality. ISO 3166-1 alpha-2. |
Individual.MobileCountryCode | integer | Required | e.g. 1 | International dialing code for `MobilePhone` (e.g. `1` for US, `44` for UK). |
Individual.MobilePhone | string | Required | — | Mobile phone number (digits only, no hyphens). |
Individual.Address | object | Required | — | Residential address. |
Individual.Address.Street | string | Required | — | Street name. Max 40 characters. |
Individual.Address.BuildingNumber | string | Required | — | Building or apartment number. Max 40 characters. |
Individual.Address.City | string | Required | — | City. Min 2, Max 40 characters. |
Individual.Address.State | string | Required | — | State or province. Min 2, Max 40 characters. |
Individual.Address.PinCode | string | Required | — | Postal / ZIP code. Min 2, Max 40 characters. |
Individual.Address.Country | string | Required | e.g. US | GB | DE | Country. ISO 3166-1 alpha-2 (e.g. `US`, `GB`). |
Individual.HasBankAccount | boolean | Required | — | Does the applicant have an existing bank account? |
Individual.HasCriminalRecord | boolean | Required | — | Does the applicant have a criminal record? |
Individual.IsPoliticallyExposed | boolean | Required | — | Is the applicant a politically exposed person (PEP)? |
Individual.EmploymentStatus | string (enum) | Required | Employed | Employed_Variable_Wages | Self_Employed | Unemployed | Retired | Employment status. |
Individual.AnnualSalary | number | Required | — | Annual salary in USD. |
Individual.PurposeOfAccount | string (enum) | Required | daily_expenses | family_expenses | personal_banking | trading | travel_expenses | savings | emergency_funds | special_purpose | other | Primary purpose for opening the account. |
Individual.SourcesOfWealth | array<string> (enum) | Required | Inheritance | Employment | Business_Gains | Sale_Property_Assets | Own_business_Proceeds | insurance_income | lifetime_savings | lottery_or_gaming | retirement | Litigation_Proceeds | Rental_Contract | Source(s) of wealth (multi-select). |
Individual.DepositLocations | array<string> (enum) | Required | us | ca | eu | asia | cn | south_america | central_america | caribbean | africa | australia_nz | middle_east | Regions from which deposits will originate. |
Individual.PaymentLocations | array<string> (enum) | Required | us | ca | eu | asia | cn | south_america | central_america | caribbean | africa | australia_nz | middle_east | Regions to which payments will be made. |
Individual.InterestedInCrypto | boolean | Required | — | Is the applicant interested in cryptocurrency? |
Individual.HasCoinConversionPlan | boolean | Required | — | Does the applicant plan to convert stablecoins to/from fiat (USDC, USDT, etc.)? |
Individual.HasCryptoConversionPlan | boolean | Required | — | Does the applicant plan to convert cryptocurrencies to/from fiat (BTC, ETH, etc.)? |
Individual.AmountOfInitialDeposit | number | Required | — | Expected initial deposit amount (USD). |
Individual.AverageBalance | number | Required | — | Expected average balance (USD). |
Individual.NumberOfMonthlyAchDeposits | number | Required | — | Expected monthly ACH deposit count. |
Individual.AmountOfMonthlyAchDeposits | number | Required | — | Expected monthly ACH deposit amount (USD). |
Individual.NumberOfMonthlyDomesticWireDeposits | number | Required | — | Expected monthly domestic wire deposit count. |
Individual.AmountOfMonthlyDomesticWireDeposits | number | Required | — | Expected monthly domestic wire deposit amount (USD). |
Individual.NumberOfMonthlyInternationalWireDeposits | number | Required | — | Expected monthly international wire deposit count. |
Individual.AmountOfMonthlyInternationalWireDeposits | number | Required | — | Expected monthly international wire deposit amount (USD). |
Individual.NumberOfMonthlyAchPayments | number | Required | — | Expected monthly ACH payment count. |
Individual.AmountOfMonthlyAchPayments | number | Required | — | Expected monthly ACH payment amount (USD). |
Individual.NumberOfMonthlyDomesticWirePayments | number | Required | — | Expected monthly domestic wire payment count. |
Individual.AmountOfMonthlyDomesticWirePayments | number | Required | — | Expected monthly domestic wire payment amount (USD). |
Individual.NumberOfMonthlyInternationalWirePayments | number | Required | — | Expected monthly international wire payment count. |
Individual.AmountOfMonthlyInternationalWirePayments | number | Required | — | Expected monthly international wire payment amount (USD). |
Individual.NumberOfMonthlyStablecoinConversionsDeposits | number | Required | — | Expected monthly stablecoin deposit count. |
Individual.AmountOfMonthlyStablecoinConversionsDeposits | number | Required | — | Expected monthly stablecoin deposit amount. |
Individual.NumberOfMonthlyStablecoinConversionsPayments | number | Required | — | Expected monthly stablecoin payment count. |
Individual.AmountOfMonthlyStablecoinConversionsPayments | number | Required | — | Expected monthly stablecoin payment amount. |
Individual.CountOfMonthlyCryptocurrencyConversions | number | Required | — | Expected monthly cryptocurrency conversion count. |
Individual.AmountOfMonthlyCryptocurrencyConversions | number | Required | — | Expected monthly cryptocurrency conversion amount. |
Individual.Id | string | null | Optional | — | `null` or absent to create. Set to the `Id` from a previous response to re-submit. |
Individual.Version | integer | Optional | — | Optimistic lock version. Send the `Version` from the last response on re-submit. Stale value → `dirty_update` (400). |
Individual.MiddleName | string | Optional | — | Middle name. Max 50 characters. |
Individual.CountryOfBirth | string | Optional | e.g. US | Country of birth. ISO 3166-1 alpha-2. |
Individual.TaxId | string | Optional | — | Tax ID number. Required for non-US individuals. |
Individual.Ssn | string | Optional | — | Social Security Number (9 digits, no hyphens). Required when `Nationality` or `Address.Country` is `US`. |
Individual.Card | number | Optional | e.g. 1 | Card preference flag (e.g. `1`). Used with address country for Visa debit card eligibility. |
Individual.MailingAddress | object | Optional | — | Mailing address. Same shape as `Individual.Address`. |
Individual.MailingAddress.Street | string | Optional | — | Street name |
Individual.MailingAddress.BuildingNumber | string | Optional | — | Building or house number |
Individual.MailingAddress.City | string | Optional | — | City name |
Individual.MailingAddress.State | string | Optional | — | State or province name |
Individual.MailingAddress.PinCode | string | Optional | — | Postal or ZIP code |
Individual.MailingAddress.Country | string | Optional | — | ISO Alpha-2 country code (e.g. `US`) |
Individual.CriminalRecordDetail | string | Optional | — | Details of the criminal record. Required when `HasCriminalRecord` is `true`. |
Individual.EmploymentIndustry | string (enum) | Optional | agriculture | mining | utilities | construction | manufacturing | wholesale | retail | transportation | information | finance | real | professional | management | administrative | educational | health | arts | accommodation | other | public | Employment industry. Required when `EmploymentStatus` is `Employed` or `Employed_Variable_Wages`. |
Individual.CardAvail | boolean | Optional | — | Does the applicant want a Visa debit card? The internal card flag is derived from this value and the address country. |
Example request
{
"Individual": {
"Id": null,
"FirstName": "Ada",
"MiddleName": "Mary",
"LastName": "Lovelace",
"Email": "ada@example.com",
"Dob": "19900131",
"Gender": "female",
"Nationality": "GB",
"CountryOfBirth": "GB",
"MotherMaidenName": "Byron",
"MobileCountryCode": 44,
"MobilePhone": "7700900123",
"TaxId": "QQ123456C",
"Ssn": null,
"Address": {
"Street": "Baker Street",
"BuildingNumber": "221B",
"City": "London",
"State": "London",
"PinCode": "NW16XE",
"Country": "GB"
},
"HasBankAccount": true,
"HasCriminalRecord": false,
"CriminalRecordDetail": null,
"IsPoliticallyExposed": false,
"EmploymentStatus": "Employed",
"EmploymentIndustry": "finance",
"AnnualSalary": 90000,
"PurposeOfAccount": "savings",
"SourcesOfWealth": [
"Employment",
"Inheritance"
],
"DepositLocations": [
"us",
"eu"
],
"PaymentLocations": [
"us",
"eu"
],
"InterestedInCrypto": true,
"HasCoinConversionPlan": false,
"HasCryptoConversionPlan": false,
"CardAvail": true,
"AmountOfInitialDeposit": 10000,
"AverageBalance": 50000,
"NumberOfMonthlyAchDeposits": 5,
"AmountOfMonthlyAchDeposits": 10000,
"NumberOfMonthlyDomesticWireDeposits": 3,
"AmountOfMonthlyDomesticWireDeposits": 20000,
"NumberOfMonthlyInternationalWireDeposits": 2,
"AmountOfMonthlyInternationalWireDeposits": 15000,
"NumberOfMonthlyAchPayments": 4,
"AmountOfMonthlyAchPayments": 8000,
"NumberOfMonthlyDomesticWirePayments": 3,
"AmountOfMonthlyDomesticWirePayments": 12000,
"NumberOfMonthlyInternationalWirePayments": 1,
"AmountOfMonthlyInternationalWirePayments": 5000,
"NumberOfMonthlyStablecoinConversionsDeposits": 2,
"AmountOfMonthlyStablecoinConversionsDeposits": 4000,
"NumberOfMonthlyStablecoinConversionsPayments": 2,
"AmountOfMonthlyStablecoinConversionsPayments": 4000,
"CountOfMonthlyCryptocurrencyConversions": 1,
"AmountOfMonthlyCryptocurrencyConversions": 2000,
"Card": 1,
"MailingAddress": {
"Street": "Baker Street",
"BuildingNumber": "221B",
"City": "London",
"State": "London",
"PinCode": "NW16XE",
"Country": "GB"
}
}
}Email and MobilePhone must be globally unique. A 400 error is returned for duplicates.
A 423 Application Locked response is returned when the application is in a locked or final status.
Response
| Field | Type | Possible values | Description |
|---|---|---|---|
ResponseCode | integer | 200 | 201 | 204 | 301 | 400 | 401 | 403 | 404 | 410 | 422 | 500 | 503 | API result code in the response envelope. Indicates success or the error category (e.g. 200 success, 400 bad request, 401 unauthorized). |
ResponseMessage | string | Success | Created | NoContent | BadRequest | Unauthorized | Forbidden | NotFound | Gone | UnprocessableContent | ServerError | ResourceMoved | ServiceUnAvailable | UnProcessableEntity | Human-readable label paired with ResponseCode (e.g. Success, BadRequest, Unauthorized). Use with ResponseCode to interpret the outcome. |
ResponseData | object | Please refer to below example for response body | The saved Individual Plus record. Use `Id` and `Version` on subsequent re-submits. |
Example response
{
"ResponseCode": 200,
"ResponseMessage": "Success",
"ResponseData": {
"Version": 0,
"Id": "6a575a07e557d865e3095b0a",
"CreatedAt": 1784109575,
"UpdatedAt": 1784109575,
"FirstName": "Ada",
"MiddleName": "Mary",
"LastName": "Lovelace",
"Email": "ada@example.com",
"Dob": "19900131",
"Gender": "female",
"Nationality": "GB",
"CountryOfBirth": "GB",
"MotherMaidenName": "Byron",
"MobileCountryCode": 44,
"MobilePhone": "7700900123",
"TaxId": "QQ123456C",
"Address": {
"Street": "Baker Street",
"BuildingNumber": "221B",
"City": "London",
"State": "London",
"PinCode": "NW16XE",
"Country": "GB"
},
"HasBankAccount": true,
"HasCriminalRecord": false,
"IsPoliticallyExposed": false,
"EmploymentStatus": "Employed",
"EmploymentIndustry": "finance",
"AnnualSalary": 90000,
"PurposeOfAccount": "savings",
"SourcesOfWealth": [
"Employment",
"Inheritance"
],
"DepositLocations": [
"us",
"eu"
],
"PaymentLocations": [
"us",
"eu"
],
"InterestedInCrypto": true,
"HasCoinConversionPlan": false,
"HasCryptoConversionPlan": false,
"CardAvail": true,
"AmountOfInitialDeposit": 10000,
"AverageBalance": 50000,
"NumberOfMonthlyAchDeposits": 5,
"AmountOfMonthlyAchDeposits": 10000,
"NumberOfMonthlyDomesticWireDeposits": 3,
"AmountOfMonthlyDomesticWireDeposits": 20000,
"NumberOfMonthlyInternationalWireDeposits": 2,
"AmountOfMonthlyInternationalWireDeposits": 15000,
"NumberOfMonthlyAchPayments": 4,
"AmountOfMonthlyAchPayments": 8000,
"NumberOfMonthlyDomesticWirePayments": 3,
"AmountOfMonthlyDomesticWirePayments": 12000,
"NumberOfMonthlyInternationalWirePayments": 1,
"AmountOfMonthlyInternationalWirePayments": 5000,
"NumberOfMonthlyStablecoinConversionsDeposits": 2,
"AmountOfMonthlyStablecoinConversionsDeposits": 4000,
"NumberOfMonthlyStablecoinConversionsPayments": 2,
"AmountOfMonthlyStablecoinConversionsPayments": 4000,
"CountOfMonthlyCryptocurrencyConversions": 1,
"AmountOfMonthlyCryptocurrencyConversions": 2000
}
}A 400 with `dirty_update` is returned when the `Individual.Version` is stale. A 400 with `record_not_found` is returned if the `Id` does not exist. A 423 is returned when the application is locked.
Requires `session-token: {SessionToken}` from Create GMA Session. Use the same client IP as authentication.