github.com/stripe/stripe-go/v76@v76.25.0/person.go (about)

     1  //
     2  //
     3  // File generated from our OpenAPI spec
     4  //
     5  //
     6  
     7  package stripe
     8  
     9  // Indicates if the person or any of their representatives, family members, or other closely related persons, declares that they hold or have held an important public job or function, in any jurisdiction.
    10  type PersonPoliticalExposure string
    11  
    12  // List of values that PersonPoliticalExposure can take
    13  const (
    14  	PersonPoliticalExposureExisting PersonPoliticalExposure = "existing"
    15  	PersonPoliticalExposureNone     PersonPoliticalExposure = "none"
    16  )
    17  
    18  // One of `document_corrupt`, `document_country_not_supported`, `document_expired`, `document_failed_copy`, `document_failed_other`, `document_failed_test_mode`, `document_fraudulent`, `document_failed_greyscale`, `document_incomplete`, `document_invalid`, `document_manipulated`, `document_missing_back`, `document_missing_front`, `document_not_readable`, `document_not_uploaded`, `document_photo_mismatch`, `document_too_large`, or `document_type_not_supported`. A machine-readable code specifying the verification state for this document.
    19  type PersonVerificationDocumentDetailsCode string
    20  
    21  // List of values that PersonVerificationDocumentDetailsCode can take
    22  const (
    23  	PersonVerificationDocumentDetailsCodeDocumentCorrupt               PersonVerificationDocumentDetailsCode = "document_corrupt"
    24  	PersonVerificationDocumentDetailsCodeDocumentCountryNotSupported   PersonVerificationDocumentDetailsCode = "document_country_not_supported"
    25  	PersonVerificationDocumentDetailsCodeDocumentExpired               PersonVerificationDocumentDetailsCode = "document_expired"
    26  	PersonVerificationDocumentDetailsCodeDocumentFailedCopy            PersonVerificationDocumentDetailsCode = "document_failed_copy"
    27  	PersonVerificationDocumentDetailsCodeDocumentFailedOther           PersonVerificationDocumentDetailsCode = "document_failed_other"
    28  	PersonVerificationDocumentDetailsCodeDocumentFailedTestMode        PersonVerificationDocumentDetailsCode = "document_failed_test_mode"
    29  	PersonVerificationDocumentDetailsCodeDocumentFraudulent            PersonVerificationDocumentDetailsCode = "document_fraudulent"
    30  	PersonVerificationDocumentDetailsCodeDocumentIDTypeNotSupported    PersonVerificationDocumentDetailsCode = "document_id_type_not_supported"
    31  	PersonVerificationDocumentDetailsCodeDocumentIDCountryNotSupported PersonVerificationDocumentDetailsCode = "document_id_country_not_supported"
    32  	PersonVerificationDocumentDetailsCodeDocumentFailedGreyscale       PersonVerificationDocumentDetailsCode = "document_failed_greyscale"
    33  	PersonVerificationDocumentDetailsCodeDocumentIncomplete            PersonVerificationDocumentDetailsCode = "document_incomplete"
    34  	PersonVerificationDocumentDetailsCodeDocumentInvalid               PersonVerificationDocumentDetailsCode = "document_invalid"
    35  	PersonVerificationDocumentDetailsCodeDocumentManipulated           PersonVerificationDocumentDetailsCode = "document_manipulated"
    36  	PersonVerificationDocumentDetailsCodeDocumentMissingBack           PersonVerificationDocumentDetailsCode = "document_missing_back"
    37  	PersonVerificationDocumentDetailsCodeDocumentMissingFront          PersonVerificationDocumentDetailsCode = "document_missing_front"
    38  	PersonVerificationDocumentDetailsCodeDocumentNotReadable           PersonVerificationDocumentDetailsCode = "document_not_readable"
    39  	PersonVerificationDocumentDetailsCodeDocumentNotUploaded           PersonVerificationDocumentDetailsCode = "document_not_uploaded"
    40  	PersonVerificationDocumentDetailsCodeDocumentPhotoMismatch         PersonVerificationDocumentDetailsCode = "document_photo_mismatch"
    41  	PersonVerificationDocumentDetailsCodeDocumentTooLarge              PersonVerificationDocumentDetailsCode = "document_too_large"
    42  	PersonVerificationDocumentDetailsCodeDocumentTypeNotSupported      PersonVerificationDocumentDetailsCode = "document_type_not_supported"
    43  )
    44  
    45  // One of `document_address_mismatch`, `document_dob_mismatch`, `document_duplicate_type`, `document_id_number_mismatch`, `document_name_mismatch`, `document_nationality_mismatch`, `failed_keyed_identity`, or `failed_other`. A machine-readable code specifying the verification state for the person.
    46  type PersonVerificationDetailsCode string
    47  
    48  // List of values that PersonVerificationDetailsCode can take
    49  const (
    50  	PersonVerificationDetailsCodeFailedKeyedIdentity         PersonVerificationDetailsCode = "failed_keyed_identity"
    51  	PersonVerificationDetailsCodeFailedOther                 PersonVerificationDetailsCode = "failed_other"
    52  	PersonVerificationDetailsCodeScanNameMismatch            PersonVerificationDetailsCode = "scan_name_mismatch"
    53  	PersonVerificationDetailsCodeDocumentAddressMismatch     PersonVerificationDetailsCode = "document_address_mismatch"
    54  	PersonVerificationDetailsCodeDocumentDOBMismatch         PersonVerificationDetailsCode = "document_dob_mismatch"
    55  	PersonVerificationDetailsCodeDocumentDuplicateType       PersonVerificationDetailsCode = "document_duplicate_type"
    56  	PersonVerificationDetailsCodeDocumentIDNumberMismatch    PersonVerificationDetailsCode = "document_id_number_mismatch"
    57  	PersonVerificationDetailsCodeDocumentNameMismatch        PersonVerificationDetailsCode = "document_name_mismatch"
    58  	PersonVerificationDetailsCodeDocumentNationalityMismatch PersonVerificationDetailsCode = "document_nationality_mismatch"
    59  )
    60  
    61  // The state of verification for the person. Possible values are `unverified`, `pending`, or `verified`.
    62  type PersonVerificationStatus string
    63  
    64  // List of values that PersonVerificationStatus can take
    65  const (
    66  	PersonVerificationStatusPending    PersonVerificationStatus = "pending"
    67  	PersonVerificationStatusUnverified PersonVerificationStatus = "unverified"
    68  	PersonVerificationStatusVerified   PersonVerificationStatus = "verified"
    69  )
    70  
    71  // Deletes an existing person's relationship to the account's legal entity. Any person with a relationship for an account can be deleted through the API, except if the person is the account_opener. If your integration is using the executive parameter, you cannot delete the only verified executive on file.
    72  type PersonParams struct {
    73  	Params  `form:"*"`
    74  	Account *string `form:"-"` // Included in URL
    75  	// Details on the legal guardian's acceptance of the required Stripe agreements.
    76  	AdditionalTOSAcceptances *PersonAdditionalTOSAcceptancesParams `form:"additional_tos_acceptances"`
    77  	// The person's address.
    78  	Address *AddressParams `form:"address"`
    79  	// The Kana variation of the person's address (Japan only).
    80  	AddressKana *PersonAddressKanaParams `form:"address_kana"`
    81  	// The Kanji variation of the person's address (Japan only).
    82  	AddressKanji *PersonAddressKanjiParams `form:"address_kanji"`
    83  	// The person's date of birth.
    84  	DOB *PersonDOBParams `form:"dob"`
    85  	// Documents that may be submitted to satisfy various informational requests.
    86  	Documents *PersonDocumentsParams `form:"documents"`
    87  	// The person's email address.
    88  	Email *string `form:"email"`
    89  	// Specifies which fields in the response should be expanded.
    90  	Expand []*string `form:"expand"`
    91  	// The person's first name.
    92  	FirstName *string `form:"first_name"`
    93  	// The Kana variation of the person's first name (Japan only).
    94  	FirstNameKana *string `form:"first_name_kana"`
    95  	// The Kanji variation of the person's first name (Japan only).
    96  	FirstNameKanji *string `form:"first_name_kanji"`
    97  	// A list of alternate names or aliases that the person is known by.
    98  	FullNameAliases []*string `form:"full_name_aliases"`
    99  	// The person's gender (International regulations require either "male" or "female").
   100  	Gender *string `form:"gender"`
   101  	// The person's ID number, as appropriate for their country. For example, a social security number in the U.S., social insurance number in Canada, etc. Instead of the number itself, you can also provide a [PII token provided by Stripe.js](https://docs.stripe.com/js/tokens/create_token?type=pii).
   102  	IDNumber *string `form:"id_number"`
   103  	// The person's secondary ID number, as appropriate for their country, will be used for enhanced verification checks. In Thailand, this would be the laser code found on the back of an ID card. Instead of the number itself, you can also provide a [PII token provided by Stripe.js](https://docs.stripe.com/js/tokens/create_token?type=pii).
   104  	IDNumberSecondary *string `form:"id_number_secondary"`
   105  	// The person's last name.
   106  	LastName *string `form:"last_name"`
   107  	// The Kana variation of the person's last name (Japan only).
   108  	LastNameKana *string `form:"last_name_kana"`
   109  	// The Kanji variation of the person's last name (Japan only).
   110  	LastNameKanji *string `form:"last_name_kanji"`
   111  	// The person's maiden name.
   112  	MaidenName *string `form:"maiden_name"`
   113  	// Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. Individual keys can be unset by posting an empty value to them. All keys can be unset by posting an empty value to `metadata`.
   114  	Metadata map[string]string `form:"metadata"`
   115  	// The country where the person is a national. Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)), or "XX" if unavailable.
   116  	Nationality *string `form:"nationality"`
   117  	// A [person token](https://docs.stripe.com/connect/account-tokens), used to securely provide details to the person.
   118  	PersonToken *string `form:"person_token"`
   119  	// The person's phone number.
   120  	Phone *string `form:"phone"`
   121  	// Indicates if the person or any of their representatives, family members, or other closely related persons, declares that they hold or have held an important public job or function, in any jurisdiction.
   122  	PoliticalExposure *string `form:"political_exposure"`
   123  	// The person's registered address.
   124  	RegisteredAddress *AddressParams `form:"registered_address"`
   125  	// The relationship that this person has with the account's legal entity.
   126  	Relationship *PersonRelationshipParams `form:"relationship"`
   127  	// The last four digits of the person's Social Security number (U.S. only).
   128  	SSNLast4 *string `form:"ssn_last_4"`
   129  	// The person's verification status.
   130  	Verification *PersonVerificationParams `form:"verification"`
   131  }
   132  
   133  // AddExpand appends a new field to expand.
   134  func (p *PersonParams) AddExpand(f string) {
   135  	p.Expand = append(p.Expand, &f)
   136  }
   137  
   138  // AddMetadata adds a new key-value pair to the Metadata.
   139  func (p *PersonParams) AddMetadata(key string, value string) {
   140  	if p.Metadata == nil {
   141  		p.Metadata = make(map[string]string)
   142  	}
   143  
   144  	p.Metadata[key] = value
   145  }
   146  
   147  // Details on the legal guardian's acceptance of the main Stripe service agreement.
   148  type PersonAdditionalTOSAcceptancesAccountParams struct {
   149  	// The Unix timestamp marking when the account representative accepted the service agreement.
   150  	Date *int64 `form:"date"`
   151  	// The IP address from which the account representative accepted the service agreement.
   152  	IP *string `form:"ip"`
   153  	// The user agent of the browser from which the account representative accepted the service agreement.
   154  	UserAgent *string `form:"user_agent"`
   155  }
   156  
   157  // Details on the legal guardian's acceptance of the required Stripe agreements.
   158  type PersonAdditionalTOSAcceptancesParams struct {
   159  	// Details on the legal guardian's acceptance of the main Stripe service agreement.
   160  	Account *PersonAdditionalTOSAcceptancesAccountParams `form:"account"`
   161  }
   162  
   163  // The Kana variation of the person's address (Japan only).
   164  type PersonAddressKanaParams struct {
   165  	// City or ward.
   166  	City *string `form:"city"`
   167  	// Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
   168  	Country *string `form:"country"`
   169  	// Block or building number.
   170  	Line1 *string `form:"line1"`
   171  	// Building details.
   172  	Line2 *string `form:"line2"`
   173  	// Postal code.
   174  	PostalCode *string `form:"postal_code"`
   175  	// Prefecture.
   176  	State *string `form:"state"`
   177  	// Town or cho-me.
   178  	Town *string `form:"town"`
   179  }
   180  
   181  // The Kanji variation of the person's address (Japan only).
   182  type PersonAddressKanjiParams struct {
   183  	// City or ward.
   184  	City *string `form:"city"`
   185  	// Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
   186  	Country *string `form:"country"`
   187  	// Block or building number.
   188  	Line1 *string `form:"line1"`
   189  	// Building details.
   190  	Line2 *string `form:"line2"`
   191  	// Postal code.
   192  	PostalCode *string `form:"postal_code"`
   193  	// Prefecture.
   194  	State *string `form:"state"`
   195  	// Town or cho-me.
   196  	Town *string `form:"town"`
   197  }
   198  
   199  // The person's date of birth.
   200  type PersonDOBParams struct {
   201  	// The day of birth, between 1 and 31.
   202  	Day *int64 `form:"day"`
   203  	// The month of birth, between 1 and 12.
   204  	Month *int64 `form:"month"`
   205  	// The four-digit year of birth.
   206  	Year *int64 `form:"year"`
   207  }
   208  
   209  // One or more documents that demonstrate proof that this person is authorized to represent the company.
   210  type PersonDocumentsCompanyAuthorizationParams struct {
   211  	// One or more document ids returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `account_requirement`.
   212  	Files []*string `form:"files"`
   213  }
   214  
   215  // One or more documents showing the person's passport page with photo and personal data.
   216  type PersonDocumentsPassportParams struct {
   217  	// One or more document ids returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `account_requirement`.
   218  	Files []*string `form:"files"`
   219  }
   220  
   221  // One or more documents showing the person's visa required for living in the country where they are residing.
   222  type PersonDocumentsVisaParams struct {
   223  	// One or more document ids returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `account_requirement`.
   224  	Files []*string `form:"files"`
   225  }
   226  
   227  // Documents that may be submitted to satisfy various informational requests.
   228  type PersonDocumentsParams struct {
   229  	// One or more documents that demonstrate proof that this person is authorized to represent the company.
   230  	CompanyAuthorization *PersonDocumentsCompanyAuthorizationParams `form:"company_authorization"`
   231  	// One or more documents showing the person's passport page with photo and personal data.
   232  	Passport *PersonDocumentsPassportParams `form:"passport"`
   233  	// One or more documents showing the person's visa required for living in the country where they are residing.
   234  	Visa *PersonDocumentsVisaParams `form:"visa"`
   235  }
   236  
   237  // The relationship that this person has with the account's legal entity.
   238  type PersonRelationshipParams struct {
   239  	// Whether the person is a director of the account's legal entity. Directors are typically members of the governing board of the company, or responsible for ensuring the company meets its regulatory obligations.
   240  	Director *bool `form:"director"`
   241  	// Whether the person has significant responsibility to control, manage, or direct the organization.
   242  	Executive *bool `form:"executive"`
   243  	// Whether the person is the legal guardian of the account's representative.
   244  	LegalGuardian *bool `form:"legal_guardian"`
   245  	// Whether the person is an owner of the account's legal entity.
   246  	Owner *bool `form:"owner"`
   247  	// The percent owned by the person of the account's legal entity.
   248  	PercentOwnership *float64 `form:"percent_ownership"`
   249  	// Whether the person is authorized as the primary representative of the account. This is the person nominated by the business to provide information about themselves, and general information about the account. There can only be one representative at any given time. At the time the account is created, this person should be set to the person responsible for opening the account.
   250  	Representative *bool `form:"representative"`
   251  	// The person's title (e.g., CEO, Support Engineer).
   252  	Title *string `form:"title"`
   253  }
   254  
   255  // A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
   256  type PersonVerificationDocumentParams struct {
   257  	// The back of an ID returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `identity_document`. The uploaded file needs to be a color image (smaller than 8,000px by 8,000px), in JPG, PNG, or PDF format, and less than 10 MB in size.
   258  	Back *string `form:"back"`
   259  	// The front of an ID returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `identity_document`. The uploaded file needs to be a color image (smaller than 8,000px by 8,000px), in JPG, PNG, or PDF format, and less than 10 MB in size.
   260  	Front *string `form:"front"`
   261  }
   262  
   263  // The person's verification status.
   264  type PersonVerificationParams struct {
   265  	// A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
   266  	AdditionalDocument *PersonVerificationDocumentParams `form:"additional_document"`
   267  	// An identifying document, either a passport or local ID card.
   268  	Document *PersonVerificationDocumentParams `form:"document"`
   269  }
   270  
   271  // Filters on the list of people returned based on the person's relationship to the account's company.
   272  type PersonListRelationshipParams struct {
   273  	// A filter on the list of people returned based on whether these people are directors of the account's company.
   274  	Director *bool `form:"director"`
   275  	// A filter on the list of people returned based on whether these people are executives of the account's company.
   276  	Executive *bool `form:"executive"`
   277  	// A filter on the list of people returned based on whether these people are legal guardians of the account's representative.
   278  	LegalGuardian *bool `form:"legal_guardian"`
   279  	// A filter on the list of people returned based on whether these people are owners of the account's company.
   280  	Owner *bool `form:"owner"`
   281  	// A filter on the list of people returned based on whether these people are the representative of the account's company.
   282  	Representative *bool `form:"representative"`
   283  }
   284  
   285  // Returns a list of people associated with the account's legal entity. The people are returned sorted by creation date, with the most recent people appearing first.
   286  type PersonListParams struct {
   287  	ListParams `form:"*"`
   288  	Account    *string `form:"-"` // Included in URL
   289  	// Specifies which fields in the response should be expanded.
   290  	Expand []*string `form:"expand"`
   291  	// Filters on the list of people returned based on the person's relationship to the account's company.
   292  	Relationship *PersonListRelationshipParams `form:"relationship"`
   293  }
   294  
   295  // AddExpand appends a new field to expand.
   296  func (p *PersonListParams) AddExpand(f string) {
   297  	p.Expand = append(p.Expand, &f)
   298  }
   299  
   300  type PersonAdditionalTOSAcceptancesAccount struct {
   301  	// The Unix timestamp marking when the legal guardian accepted the service agreement.
   302  	Date int64 `json:"date"`
   303  	// The IP address from which the legal guardian accepted the service agreement.
   304  	IP string `json:"ip"`
   305  	// The user agent of the browser from which the legal guardian accepted the service agreement.
   306  	UserAgent string `json:"user_agent"`
   307  }
   308  type PersonAdditionalTOSAcceptances struct {
   309  	Account *PersonAdditionalTOSAcceptancesAccount `json:"account"`
   310  }
   311  
   312  // The Kana variation of the person's address (Japan only).
   313  type PersonAddressKana struct {
   314  	// City/Ward.
   315  	City string `json:"city"`
   316  	// Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
   317  	Country string `json:"country"`
   318  	// Block/Building number.
   319  	Line1 string `json:"line1"`
   320  	// Building details.
   321  	Line2 string `json:"line2"`
   322  	// ZIP or postal code.
   323  	PostalCode string `json:"postal_code"`
   324  	// Prefecture.
   325  	State string `json:"state"`
   326  	// Town/cho-me.
   327  	Town string `json:"town"`
   328  }
   329  
   330  // The Kanji variation of the person's address (Japan only).
   331  type PersonAddressKanji struct {
   332  	// City/Ward.
   333  	City string `json:"city"`
   334  	// Two-letter country code ([ISO 3166-1 alpha-2](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2)).
   335  	Country string `json:"country"`
   336  	// Block/Building number.
   337  	Line1 string `json:"line1"`
   338  	// Building details.
   339  	Line2 string `json:"line2"`
   340  	// ZIP or postal code.
   341  	PostalCode string `json:"postal_code"`
   342  	// Prefecture.
   343  	State string `json:"state"`
   344  	// Town/cho-me.
   345  	Town string `json:"town"`
   346  }
   347  type PersonDOB struct {
   348  	// The day of birth, between 1 and 31.
   349  	Day int64 `json:"day"`
   350  	// The month of birth, between 1 and 12.
   351  	Month int64 `json:"month"`
   352  	// The four-digit year of birth.
   353  	Year int64 `json:"year"`
   354  }
   355  
   356  // Fields that are due and can be satisfied by providing the corresponding alternative fields instead.
   357  type PersonFutureRequirementsAlternative struct {
   358  	// Fields that can be provided to satisfy all fields in `original_fields_due`.
   359  	AlternativeFieldsDue []string `json:"alternative_fields_due"`
   360  	// Fields that are due and can be satisfied by providing all fields in `alternative_fields_due`.
   361  	OriginalFieldsDue []string `json:"original_fields_due"`
   362  }
   363  
   364  // Fields that are `currently_due` and need to be collected again because validation or verification failed.
   365  type PersonFutureRequirementsError struct {
   366  	// The code for the type of error.
   367  	Code string `json:"code"`
   368  	// An informative message that indicates the error type and provides additional details about the error.
   369  	Reason string `json:"reason"`
   370  	// The specific user onboarding requirement field (in the requirements hash) that needs to be resolved.
   371  	Requirement string `json:"requirement"`
   372  }
   373  
   374  // Information about the [upcoming new requirements for this person](https://stripe.com/docs/connect/custom-accounts/future-requirements), including what information needs to be collected, and by when.
   375  type PersonFutureRequirements struct {
   376  	// Fields that are due and can be satisfied by providing the corresponding alternative fields instead.
   377  	Alternatives []*PersonFutureRequirementsAlternative `json:"alternatives"`
   378  	// Fields that need to be collected to keep the person's account enabled. If not collected by the account's `future_requirements[current_deadline]`, these fields will transition to the main `requirements` hash, and may immediately become `past_due`, but the account may also be given a grace period depending on the account's enablement state prior to transition.
   379  	CurrentlyDue []string `json:"currently_due"`
   380  	// Fields that are `currently_due` and need to be collected again because validation or verification failed.
   381  	Errors []*PersonFutureRequirementsError `json:"errors"`
   382  	// Fields that need to be collected assuming all volume thresholds are reached. As they become required, they appear in `currently_due` as well, and the account's `future_requirements[current_deadline]` becomes set.
   383  	EventuallyDue []string `json:"eventually_due"`
   384  	// Fields that weren't collected by the account's `requirements.current_deadline`. These fields need to be collected to enable the person's account. New fields will never appear here; `future_requirements.past_due` will always be a subset of `requirements.past_due`.
   385  	PastDue []string `json:"past_due"`
   386  	// Fields that may become required depending on the results of verification or review. Will be an empty array unless an asynchronous verification is pending. If verification fails, these fields move to `eventually_due` or `currently_due`.
   387  	PendingVerification []string `json:"pending_verification"`
   388  }
   389  type PersonRelationship struct {
   390  	// Whether the person is a director of the account's legal entity. Directors are typically members of the governing board of the company, or responsible for ensuring the company meets its regulatory obligations.
   391  	Director bool `json:"director"`
   392  	// Whether the person has significant responsibility to control, manage, or direct the organization.
   393  	Executive bool `json:"executive"`
   394  	// Whether the person is the legal guardian of the account's representative.
   395  	LegalGuardian bool `json:"legal_guardian"`
   396  	// Whether the person is an owner of the account's legal entity.
   397  	Owner bool `json:"owner"`
   398  	// The percent owned by the person of the account's legal entity.
   399  	PercentOwnership float64 `json:"percent_ownership"`
   400  	// Whether the person is authorized as the primary representative of the account. This is the person nominated by the business to provide information about themselves, and general information about the account. There can only be one representative at any given time. At the time the account is created, this person should be set to the person responsible for opening the account.
   401  	Representative bool `json:"representative"`
   402  	// The person's title (e.g., CEO, Support Engineer).
   403  	Title string `json:"title"`
   404  }
   405  
   406  // Fields that are due and can be satisfied by providing the corresponding alternative fields instead.
   407  type PersonRequirementsAlternative struct {
   408  	// Fields that can be provided to satisfy all fields in `original_fields_due`.
   409  	AlternativeFieldsDue []string `json:"alternative_fields_due"`
   410  	// Fields that are due and can be satisfied by providing all fields in `alternative_fields_due`.
   411  	OriginalFieldsDue []string `json:"original_fields_due"`
   412  }
   413  
   414  // Information about the requirements for this person, including what information needs to be collected, and by when.
   415  type PersonRequirements struct {
   416  	// Fields that are due and can be satisfied by providing the corresponding alternative fields instead.
   417  	Alternatives []*PersonRequirementsAlternative `json:"alternatives"`
   418  	// Fields that need to be collected to keep the person's account enabled. If not collected by the account's `current_deadline`, these fields appear in `past_due` as well, and the account is disabled.
   419  	CurrentlyDue []string `json:"currently_due"`
   420  	// Fields that are `currently_due` and need to be collected again because validation or verification failed.
   421  	Errors []*AccountRequirementsError `json:"errors"`
   422  	// Fields that need to be collected assuming all volume thresholds are reached. As they become required, they appear in `currently_due` as well, and the account's `current_deadline` becomes set.
   423  	EventuallyDue []string `json:"eventually_due"`
   424  	// Fields that weren't collected by the account's `current_deadline`. These fields need to be collected to enable the person's account.
   425  	PastDue []string `json:"past_due"`
   426  	// Fields that may become required depending on the results of verification or review. Will be an empty array unless an asynchronous verification is pending. If verification fails, these fields move to `eventually_due`, `currently_due`, or `past_due`.
   427  	PendingVerification []string `json:"pending_verification"`
   428  }
   429  
   430  // A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
   431  type PersonVerificationDocument struct {
   432  	// The back of an ID returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `identity_document`.
   433  	Back *File `json:"back"`
   434  	// A user-displayable string describing the verification state of this document. For example, if a document is uploaded and the picture is too fuzzy, this may say "Identity document is too unclear to read".
   435  	Details string `json:"details"`
   436  	// One of `document_corrupt`, `document_country_not_supported`, `document_expired`, `document_failed_copy`, `document_failed_other`, `document_failed_test_mode`, `document_fraudulent`, `document_failed_greyscale`, `document_incomplete`, `document_invalid`, `document_manipulated`, `document_missing_back`, `document_missing_front`, `document_not_readable`, `document_not_uploaded`, `document_photo_mismatch`, `document_too_large`, or `document_type_not_supported`. A machine-readable code specifying the verification state for this document.
   437  	DetailsCode PersonVerificationDocumentDetailsCode `json:"details_code"`
   438  	// The front of an ID returned by a [file upload](https://stripe.com/docs/api#create_file) with a `purpose` value of `identity_document`.
   439  	Front *File `json:"front"`
   440  }
   441  type PersonVerification struct {
   442  	// A document showing address, either a passport, local ID card, or utility bill from a well-known utility company.
   443  	AdditionalDocument *PersonVerificationDocument `json:"additional_document"`
   444  	// A user-displayable string describing the verification state for the person. For example, this may say "Provided identity information could not be verified".
   445  	Details string `json:"details"`
   446  	// One of `document_address_mismatch`, `document_dob_mismatch`, `document_duplicate_type`, `document_id_number_mismatch`, `document_name_mismatch`, `document_nationality_mismatch`, `failed_keyed_identity`, or `failed_other`. A machine-readable code specifying the verification state for the person.
   447  	DetailsCode PersonVerificationDetailsCode `json:"details_code"`
   448  	Document    *PersonVerificationDocument   `json:"document"`
   449  	// The state of verification for the person. Possible values are `unverified`, `pending`, or `verified`.
   450  	Status PersonVerificationStatus `json:"status"`
   451  }
   452  
   453  // This is an object representing a person associated with a Stripe account.
   454  //
   455  // A platform cannot access a Standard or Express account's persons after the account starts onboarding, such as after generating an account link for the account.
   456  // See the [Standard onboarding](https://stripe.com/docs/connect/standard-accounts) or [Express onboarding documentation](https://stripe.com/docs/connect/express-accounts) for information about platform prefilling and account onboarding steps.
   457  //
   458  // Related guide: [Handling identity verification with the API](https://stripe.com/docs/connect/handling-api-verification#person-information)
   459  type Person struct {
   460  	APIResource
   461  	// The account the person is associated with.
   462  	Account                  string                          `json:"account"`
   463  	AdditionalTOSAcceptances *PersonAdditionalTOSAcceptances `json:"additional_tos_acceptances"`
   464  	Address                  *Address                        `json:"address"`
   465  	// The Kana variation of the person's address (Japan only).
   466  	AddressKana *PersonAddressKana `json:"address_kana"`
   467  	// The Kanji variation of the person's address (Japan only).
   468  	AddressKanji *PersonAddressKanji `json:"address_kanji"`
   469  	// Time at which the object was created. Measured in seconds since the Unix epoch.
   470  	Created int64      `json:"created"`
   471  	Deleted bool       `json:"deleted"`
   472  	DOB     *PersonDOB `json:"dob"`
   473  	// The person's email address.
   474  	Email string `json:"email"`
   475  	// The person's first name.
   476  	FirstName string `json:"first_name"`
   477  	// The Kana variation of the person's first name (Japan only).
   478  	FirstNameKana string `json:"first_name_kana"`
   479  	// The Kanji variation of the person's first name (Japan only).
   480  	FirstNameKanji string `json:"first_name_kanji"`
   481  	// A list of alternate names or aliases that the person is known by.
   482  	FullNameAliases []string `json:"full_name_aliases"`
   483  	// Information about the [upcoming new requirements for this person](https://stripe.com/docs/connect/custom-accounts/future-requirements), including what information needs to be collected, and by when.
   484  	FutureRequirements *PersonFutureRequirements `json:"future_requirements"`
   485  	// The person's gender (International regulations require either "male" or "female").
   486  	Gender string `json:"gender"`
   487  	// Unique identifier for the object.
   488  	ID string `json:"id"`
   489  	// Whether the person's `id_number` was provided. True if either the full ID number was provided or if only the required part of the ID number was provided (ex. last four of an individual's SSN for the US indicated by `ssn_last_4_provided`).
   490  	IDNumberProvided bool `json:"id_number_provided"`
   491  	// Whether the person's `id_number_secondary` was provided.
   492  	IDNumberSecondaryProvided bool `json:"id_number_secondary_provided"`
   493  	// The person's last name.
   494  	LastName string `json:"last_name"`
   495  	// The Kana variation of the person's last name (Japan only).
   496  	LastNameKana string `json:"last_name_kana"`
   497  	// The Kanji variation of the person's last name (Japan only).
   498  	LastNameKanji string `json:"last_name_kanji"`
   499  	// The person's maiden name.
   500  	MaidenName string `json:"maiden_name"`
   501  	// Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.
   502  	Metadata map[string]string `json:"metadata"`
   503  	// The country where the person is a national.
   504  	Nationality string `json:"nationality"`
   505  	// String representing the object's type. Objects of the same type share the same value.
   506  	Object string `json:"object"`
   507  	// The person's phone number.
   508  	Phone string `json:"phone"`
   509  	// Indicates if the person or any of their representatives, family members, or other closely related persons, declares that they hold or have held an important public job or function, in any jurisdiction.
   510  	PoliticalExposure PersonPoliticalExposure `json:"political_exposure"`
   511  	RegisteredAddress *Address                `json:"registered_address"`
   512  	Relationship      *PersonRelationship     `json:"relationship"`
   513  	// Information about the requirements for this person, including what information needs to be collected, and by when.
   514  	Requirements *PersonRequirements `json:"requirements"`
   515  	// Whether the last four digits of the person's Social Security number have been provided (U.S. only).
   516  	SSNLast4Provided bool                `json:"ssn_last_4_provided"`
   517  	Verification     *PersonVerification `json:"verification"`
   518  }
   519  
   520  // PersonList is a list of Persons as retrieved from a list endpoint.
   521  type PersonList struct {
   522  	APIResource
   523  	ListMeta
   524  	Data []*Person `json:"data"`
   525  }