# Create a person

Create a Person. Adds an individual to an Account’s identity. You can set relationship attributes and identity information at creation.

## Request

```curl
curl -X POST https://api.stripe.com/v2/core/accounts/{{ACCOUNT_ID}}/persons \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-07-29.dahlia" \
  --json '{
    "given_name": "Jenny",
    "surname": "Rosen",
    "email": "jenny.rosen@example.com",
    "address": {
        "line1": "27 Fredrick Ave",
        "city": "Brothers",
        "postal_code": "97712",
        "state": "OR",
        "country": "us"
    },
    "id_numbers": [
        {
            "type": "us_ssn_last_4",
            "value": "0000"
        }
    ],
    "relationship": {
        "owner": true,
        "percent_ownership": "0.8",
        "representative": true,
        "title": "CEO"
    }
  }'
```

### Response

```json
{
  "id": "person_test_61RS0CgWt1xBt8M1Q16RS0Cg0WSQO5ZXUVpZxZ9tAIbY",
  "object": "v2.core.account_person",
  "account": "acct_1Nv0FGQ9RKHgCVdK",
  "additional_addresses": [],
  "additional_names": [],
  "address": {
    "city": "Brothers",
    "country": "us",
    "line1": "27 Fredrick Ave",
    "postal_code": "97712",
    "state": "OR"
  },
  "created": "2024-11-26T17:10:07.000Z",
  "email": "jenny.rosen@example.com",
  "given_name": "Jenny",
  "id_numbers": [
    {
      "type": "us_ssn_last_4"
    }
  ],
  "livemode": true,
  "metadata": {},
  "nationalities": [],
  "relationship": {
    "owner": true,
    "percent_ownership": "0.8",
    "representative": true,
    "title": "CEO"
  },
  "surname": "Rosen",
  "updated": "2024-11-26T17:10:07.000Z"
}
```

## Parameters

- [`additional_addresses`](https://docs.stripe.com/api/v2/core/persons/create.md?query=additional_addresses) (array of objects, optional)
  Additional addresses associated with the person.

- [`additional_names`](https://docs.stripe.com/api/v2/core/persons/create.md?query=additional_names) (array of objects, optional)
  Additional names (e.g. aliases) associated with the person.

- [`additional_terms_of_service`](https://docs.stripe.com/api/v2/core/persons/create.md?query=additional_terms_of_service) (object, optional)
  Attestations of accepted terms of service agreements.

- [`address`](https://docs.stripe.com/api/v2/core/persons/create.md?query=address) (object, optional)
  The person’s residential address.

- [`date_of_birth`](https://docs.stripe.com/api/v2/core/persons/create.md?query=date_of_birth) (object, optional)
  The person’s date of birth.

- [`documents`](https://docs.stripe.com/api/v2/core/persons/create.md?query=documents) (object, optional)
  Documents that may be submitted to satisfy various informational requests.

- `email` (string, optional)
  Email.

- `given_name` (string, optional)
  The person’s first name.

- [`id_numbers`](https://docs.stripe.com/api/v2/core/persons/create.md?query=id_numbers) (array of objects, optional)
  The identification numbers (e.g., SSN) associated with the person.

- `legal_gender` (enum, optional)
  The person’s gender (International regulations require either “male” or “female”).
Possible enum values:
  - `female`
    Female gender person.

  - `male`
    Male gender person.

- `metadata` (map, optional)
  Set of key-value pairs that you can attach to an object. This can be useful for storing additional information about the object in a structured format.

- `nationalities` (array of enums, optional)
  The nationalities (countries) this person is associated with.

- `person_token` (string, optional)
  The person token generated by the person token api.

- `phone` (string, optional)
  The phone number for this person.

- `political_exposure` (enum, optional)
  The person’s political exposure.
Possible enum values:
  - `existing`
    The person has disclosed that they do have political exposure.

  - `none`
    The person has disclosed that they have no political exposure.

- [`relationship`](https://docs.stripe.com/api/v2/core/persons/create.md?query=relationship) (object, optional)
  The relationship that this person has with the Account’s business or legal entity.

- [`script_addresses`](https://docs.stripe.com/api/v2/core/persons/create.md?query=script_addresses) (object, optional)
  The script addresses (e.g., non-Latin characters) associated with the person.

- [`script_names`](https://docs.stripe.com/api/v2/core/persons/create.md?query=script_names) (object, optional)
  The script names (e.g. non-Latin characters) associated with the person.

- `surname` (string, optional)
  The person’s last name.

## Returns

Returns a [Person object](https://docs.stripe.com/api/v2/core/persons/object.md).

## Error Codes

| HTTP status code | Code | Description |
| --- | --- | --- |
| 400 | account_not_yet_compatible_with_v2 | Account is not yet compatible with V2 APIs. |
| 400 | accounts_v2_access_blocked | Accounts v2 is not enabled for your merchant. |
| 400 | additional_legal_guardian_not_allowed | More than one legal guardian is added to an account. |
| 400 | additional_representative_not_allowed | More than one representative is added to an account. |
| 400 | additional_tos_only_allowed_for_legal_guardian | Additional terms of service are signed by someone other than the legal guardian. |
| 400 | address_characters_invalid | Invalid characters are provided for address fields. |
| 400 | address_country_identity_country_mismatch | Address country doesn’t match identity country. |
| 400 | address_country_mismatch | Registered/script address country doesn’t match residential address country. |
| 400 | address_country_required | Address country is required but not provided. |
| 400 | address_postal_code_invalid | Address postal code is invalid. |
| 400 | address_state_invalid | Address state is invalid. |
| 400 | address_town_invalid | Address town is invalid. |
| 400 | authorizer_duplicate | There can only be one authorizer. |
| 400 | authorizer_relationship_invalid_for_representative | An authorizer cannot be a representative. |
| 400 | date_of_birth_age_restriction | Representative date of birth does not meet the age limit. |
| 400 | date_of_birth_invalid | Representative date of birth is provided an invalid date or a future date. |
| 400 | document_invalid | Provided file tokens for documents are invalid, not found, deleted, or belong to a different account. |
| 400 | document_purpose_invalid | Provided file tokens for documents are of the wrong purpose. |
| 400 | duplicate_person_not_allowed | Duplicate person is added to an account. |
| 400 | email_domain_invalid_for_recipient | Email contains unsupported domain. |
| 400 | email_invalid | Incorrect email is provided. |
| 400 | id_number_invalid | Provided ID number is of the wrong format for the given type. |
| 400 | identity_country_required | The `identity.country` value is required but not provided. |
| 400 | incorrect_account_for_person_token | A person token is created with one account but used on a different account. |
| 400 | incorrect_id_number_for_country | Incorrect ID number is provided for a country. |
| 400 | incorrect_token_wrong_type | The incorrect token type is provided . |
| 400 | individual_additional_person_not_allowed | Additional person is added for an individual business type. |
| 400 | invalid_relationship_for_identity_type_structure_and_country | Some relationships are specific to type, structure, and country. |
| 400 | ip_address_invalid | Invalid IP address is provided. |
| 400 | legal_guardian_representative_not_allowed | Person is designated as both legal guardian and representative. |
| 400 | legal_guardian_requires_existing_representative | A legal guardian may not be added to the account without an existing representative. |
| 400 | non_connect_platform_accounts_v2_access_blocked | Needs to use the newer API version or onboard to Connect. |
| 400 | non_jp_kana_kanji_address | Kana Kanji script addresses must have JP country. |
| 400 | param_alongside_person_token | Parameter cannot be passed alongside person_token. |
| 400 | person_percent_ownership_invalid | Error returned when relationship.owner is set to true but the ownership percentage is set to 0%. |
| 400 | person_token_required | Person token required for platforms in mandated countries (e.g., France). |
| 400 | phone_invalid | Phone number is invalid. |
| 400 | platform_registration_required | The direct merchant has not signed up for Connect and cannot create connected accounts. |
| 400 | postal_code_required_for_jp_address | Postal code is required for Japanese addresses. |
| 400 | script_characters_invalid | Provided script characters are invalid for the script. |
| 400 | token_already_used | The token is re-used with a different idempotency key. |
| 400 | token_expired | Token has expired. |
| 400 | total_person_ownership_exceeded | Total ownership percentages of all Persons on the account exceeds 100%. |
| 400 | unsupported_postal_code | Address is in an unsupported postal code. |
| 400 | unsupported_state | Address is in an unsupported state. |
| 400 | v1_account_instead_of_v2_account | V1 Account ID cannot be used in V2 Account APIs. |
| 400 | v1_customer_instead_of_v2_account | V1 Customer ID cannot be used in V2 Account APIs. |
| 400 | v1_token_invalid_in_v2 | A v1 token ID is passed in v2 APIs. |
| 403 | invalid_person_token | Invalid person token. |
| 429 | account_rate_limit_exceeded | Account cannot exceed a configured concurrency rate limit on updates. |
