# Required verification information Learn what required verification information you need to collect for each country when using Connect. Onboarding connected accounts to a *Connect* platform requires collecting and verifying certain information for each account. The required information depends on various factors, such as the country and business type of your connected accounts. Learn about the information required from your accounts using the form below. For connected accounts that use a Stripe Dashboard, including Standard and Express accounts, Stripe collects the required information through the account’s Dashboard. (If you have information about a connected account, you can speed up onboarding by adding it to the `Account` object instead of waiting for Stripe to collect it.) For connected accounts without access to a Stripe Dashboard, including [Custom accounts](https://docs.stripe.com/connect/custom/onboarding.md), your [account onboarding flow](https://docs.stripe.com/connect/onboarding.md) must identify and collect the required information. Verification requirements differ based on: * The origin country of the connected accounts * The [service agreement type](https://docs.stripe.com/connect/service-agreement-types.md) applicable to the connected accounts * The [capabilities](https://docs.stripe.com/connect/account-capabilities.md) requested for the connected accounts #### Processing live charges and receiving payouts In the UAE, company documents such as the [Trade License](https://docs.stripe.com/api/accounts/create.md#create_account-documents-company_license) and [Proof of Bank Account](https://docs.stripe.com/api/accounts/create.md#create_account-documents-bank_account_ownership_verification) as well as relevant identity documents must be verified before a connected account can start processing live charges and receiving *payouts*. For all businesses except sole establishments and free zone establishments, the [Memorandum of Association](https://docs.stripe.com/api/accounts/create.md#create_account-documents-company_memorandum_of_association) must be verified as well. #### Uploading identity documents For the company representative, beneficial owners and executives, we require the following identity documents for verification: * Passport: all individuals * Emirates ID: UAE nationals & UAE residents * Residence visa: foreign nationals who are resident in the UAE The Emirates ID can be provided in the parameter called [verification.document](https://docs.stripe.com/api/persons/create.md#create_person-verification-document). Passports and residence visas should be provided under a separate parameter called [documents](https://docs.stripe.com/api/persons/create.md#create_person-documents). #### Keeping up to date with expired verification documents In the UAE, Stripe is required to keep up to date with a company’s [Trade License](https://docs.stripe.com/api/accounts/update.md#update_account-documents-company_license) in addition to the primary identity document of the company’s representative, beneficial owners and executives. The primary identity document is either the Emirates ID for UAE nationals and residents, otherwise it is an individual’s [Passport](https://docs.stripe.com/api/persons/update.md#update_person-documents-passport). Companies will have up to 28 days after the expiry date of these documents to provide an updated version. Expired documents will appear under [company requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-currently_due) or [individual requirements](https://docs.stripe.com/api/persons/object.md#person_object-requirements-currently_due) and marked as currently due for two weeks before capabilities become disabled. #### Ultimate Beneficial Owners Stripe is required to verify all the [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) of a business. These are the individuals who own 25% or more of the primary business. If a [holding company](https://support.stripe.com/questions/beneficial-ownership-by-a-trust-holding-company-or-other-legal-entity) has 25% or more ownership of the business, then the Memorandum of Association of this holding company as well that of the primary business must be uploaded. These documents must show the persons where [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) is set to true. #### Additional information on the company representative This connected account needs to be activated by a person, known as the company representative, with significant responsibility to control, manage, or direct the organization and is authorized by the organization to agree to Stripe’s terms. The representative must either be [an owner or an executive](https://support.stripe.com/questions/beneficial-owner-and-director-definitions), which you specify by setting [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) to `true` or [relationship.executive](https://docs.stripe.com/api/persons/object.md#person_object-relationship-executive) to `true`. For a sole establishment or free zone establishment, the account must be activated by the owner of the business. #### VAT Information Stripe does not charge UAE VAT on Stripe fees to customers located in the UAE, where a valid UAE VAT ID has been provided. Local UAE VAT self-assessment obligations may be triggered upon receipt of a monthly *invoice* from Stripe. Stripe does charge UAE VAT at 5% on Stripe fees to customers located in the UAE, where a valid UAE VAT ID hasn’t been provided. #### Power of Attorney If the company representative does not appear on the company’s Trade License or the Memorandum of Association, then you must upload a [Power of Attorney](https://docs.stripe.com/api/persons/update.md#update_person-documents-company_authorization) that shows that the company representative has the authority to act on behalf of the company or a notarized letter of authorization. #### Supported business structures In the UAE, the only possible business type is `company` and the following [business structures](https://docs.stripe.com/connect/identity-verification.md#business-structure) are accepted: * `sole_establishment` * `free_zone_establishment` * `llc` * `free_zone_llc` #### Additional information on the account If Stripe is unable to verify the company, or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a [proof-of-entity document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable *payouts*. Collect it using the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) arguments. #### Additional information on the individual Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe is unable to verify the individual or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments. #### Additional information on the representative A person known as a *representative* must activate this connected account. This person must be a [beneficial owner](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) who is authorized to sign for the company. Indicate this relationship to Stripe by setting [relationship.executive](https://docs.stripe.com/api/persons/object.md#person_object-relationship-executive) to `true`, or, if the representative owns 25% or more of the company, by setting [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) to `true`. Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe is unable to verify the representative or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Optionally, you can collect the representative’s ownership information using [relationship.representative](https://docs.stripe.com/api/persons/object.md#person_object-relationship-representative) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership). #### Additional information on directors For companies (excluding partnerships), you must collect information on all [directors](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Directors are members of the governing board of the company. When you have finished collecting the required information from all directors, or if your company does not have any directors, you must inform Stripe by setting [company.directors_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-directors_provided) to `true`. If there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on beneficial owners (for both executives and owners) You must collect information on all [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Beneficial owners are persons who exercise significant management control over the company (executives) or who own 25% or more of the company (owners). When you have finished collecting the required information from all beneficial owners, you must inform Stripe by setting both [company.owners_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-owners_provided) and [company.executives_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-executives_provided) to `true`. Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe is unable to verify a beneficial owner or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Optionally, you can collect ownership information on each person who owns 25% or more of the company using [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership). #### Additional information on the account If Stripe can’t verify the company, or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a [proof-of-entity document](https://docs.stripe.com/connect/handling-api-verification.md?country=CA&document-type=entity#acceptable-verification-documents) to enable *payouts*. Collect it using the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) arguments. #### Additional information on the representative If Stripe can’t verify the representative, they need to provide proof of liveness, which entails taking a selfie and uploading an [ID document](https://docs.stripe.com/connect/handling-api-verification.md?country=CA&document-type=identity#acceptable-verification-documents) using [Stripe Identity](https://docs.stripe.com/identity.md). Your platform needs to integrate with [Connect Onboarding](https://stripe.com/connect/onboarding) to satisfy this requirement. Alternatively, you can provide a scan of an ID document and a scan of an address document. To collect an ID document, use the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) fields. To collect an address document, use the [verification.additional_document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-front) and [verification.additional_document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-back) fields. You can’t provide the same document for both identity and address verification. #### Additional information on the individual Individuals that Stripe can’t verify must provide proof of liveness, which entails taking a selfie and uploading an [ID document](https://docs.stripe.com/connect/handling-api-verification.md?country=CA&document-type=identity#acceptable-verification-documents) using [Stripe Identity](https://docs.stripe.com/identity.md). Your platform needs to integrate with [Connect Onboarding](https://stripe.com/connect/onboarding) to allow such individuals to complete this requirement. Alternatively, your platform can collect scans of an individual’s ID and address documents and [upload them](https://docs.stripe.com/api/files/create.md) to Stripe. After uploading, submit the individual’s ID document with the [individual.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-individual-verification-document-back) fields and the address document with the [individual.verification.additional_document.front](https://docs.stripe.com/api/accounts/object.md#account_object-individual-verification-additional_document-front) and [individual.verification.additional_document.back](https://docs.stripe.com/api/accounts/object.md#account_object-individual-verification-additional_document-back) fields. You can’t provide the same document for both identity and address verification. #### Additional information on owners You must collect information on all [owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Owners are any individual who owns 25% or more of the company (_owners_). When you finish collecting the required information from all owners, set [company.owners_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-owners_provided) to `true`. This lets Stripe know that you have completed this requirement. Optionally, you can collect ownership information on each person who owns 25% or more of the company with [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership). #### Additional information on directors You must collect information on all [directors](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). We check the [director](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) information you supply against the registry and results in one of these outcomes: - The business is found in the registry, and the information matches. The account fully onboards, and requires no additional action. - The business is found in the registry, but the director information doesn’t match. You must upload a [proof of registration document](https://docs.stripe.com/connect/handling-api-verification.md?country=CA&document-type=relationship#acceptable-verification-documents) using the [documents.proof_of_registration.files](https://docs.stripe.com/api/accounts/create.md#create_account-documents-proof_of_registration-files) field. Pass the file in the `file` parameter and set the `purpose` parameter to `account_requirement`. ```bash curl https://files.stripe.com/v1/files \ -u <>: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -F "purpose"="account_requirement" \ -F "file"="@/path/to/a/file" ``` ```ruby <> Stripe::File.create({ purpose: 'account_requirement', file: File.new('/path/to/a/file.jpg'), }, { stripe_account: '{{CONNECTED_STRIPE_ACCOUNT_ID}}', }) ``` ```python <> with open("/path/to/a/file.jpg", "rb") as fp: stripe.File.create( purpose='account_requirement', file=fp, stripe_account='{{CONNECTED_STRIPE_ACCOUNT_ID}}', ) ``` ```php <> \Stripe\File::create([ 'purpose' => 'account_requirement', 'file' => fopen('/path/to/a/file.jpg', 'r'), ], [ 'stripe_account' => '{{CONNECTED_STRIPE_ACCOUNT_ID}}', ]); ``` ```java <> FileCreateParams params = FileCreateParams.builder() .setPurpose(FileCreateParams.Purpose.account_requirement) .setFile(new java.io.File("/path/to/a/file.jpg")) .build(); RequestOptions requestOptions = RequestOptions.builder() .setStripeAccount("{{CONNECTED_STRIPE_ACCOUNT_ID}}") .build(); File file = File.create(params); ``` ```javascript <> const fs = require('fs'); const file = await stripe.files.create({ purpose: 'account_requirement', file: { data: fs.readFileSync('/path/to/a/file.jpg'), name: 'file_name.jpg', type: 'application/octet-stream', }, }, { stripeAccount: '{{CONNECTED_STRIPE_ACCOUNT_ID}}', }); ``` ```go <> fp, _ := os.Open("/path/to/a/success.png") params := &stripe.FileParams{ FileReader: fp, Filename: stripe.String("success.png"), Purpose: stripe.String(string(stripe.FileUploadPurposeAccountRequirement)), } params.SetStripeAccount("{{CONNECTED_STRIPE_ACCOUNT_ID}}") f, _ := file.New(params) ``` ```dotnet <> var filename = "/path/to/a/success.png"; using (FileStream stream = System.IO.File.Open(filename, FileMode.Open)) { var options = new FileCreateOptions { File = stream, Purpose = FilePurpose.AccountRequirement, }; var service = new FileService(); var upload = service.Create(options); } ``` This request uploads the file and returns a token: ```json { "id": "file_5dtoJkOhAxrMWb", "created": 1403047735, "size": 4908 } ``` You can then use the token’s `id` value to attach the file to a connected account for identity verification. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Documents = new AccountDocumentsOptions { ProofOfRegistration = new AccountDocumentsProofOfRegistrationOptions { Files = new List { "file_5dtoJkOhAxrMWb" }, }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Documents: &stripe.AccountDocumentsParams{ ProofOfRegistration: &stripe.AccountDocumentsProofOfRegistrationParams{ Files: []*string{stripe.String("file_5dtoJkOhAxrMWb")}, }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setDocuments( AccountUpdateParams.Documents.builder() .setProofOfRegistration( AccountUpdateParams.Documents.ProofOfRegistration.builder() .addFile("file_5dtoJkOhAxrMWb") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { documents: { proof_of_registration: { files: ['file_5dtoJkOhAxrMWb'], }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", documents={"proof_of_registration": {"files": ["file_5dtoJkOhAxrMWb"]}}, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', ['documents' => ['proof_of_registration' => ['files' => ['file_5dtoJkOhAxrMWb']]]] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', {documents: {proof_of_registration: {files: ['file_5dtoJkOhAxrMWb']}}}, ) ``` #### Additional information on registration statuses If Stripe can’t verify the registration status of the charity, you need to collect a [proof-of-entity document](https://docs.stripe.com/connect/handling-api-verification.md?country=CA&document-type=entity#acceptable-verification-documents) to enable *payouts*. Collect this with the [documents.company_registration_verification.files](https://docs.stripe.com/api/accounts/update.md#update_account-documents-company_registration_verification-files) field. ### Universal Beneficial Ownership Verification After supplying the beneficial owner information, it is checked against the National Registry of Businesses (NRB). Depending on the results of this check, there are three outcomes: * The business is found in the NRB, and the information matches. The account is fully onboarded, and no additional action is required. * The business is found in the NRB, but the information doesn’t match. The account is fully onboarded, and no additional action is required. A discrepancy report is sent to the NRB. * The business isn’t found in the NRB. An attestation consisting of an IP address, date, and user agent of the person submitting the information must be provided. The person is attesting that the business is registered with the NRB, and the information given to Stripe matches. In the case where the business isn’t found in the NRB, attesting that the beneficial ownership information is complete and correct is accomplished by providing the [company.ownership_declaration.date](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-date) and [company.ownership_declaration.ip](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-ip) arguments. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Company = new AccountCompanyOptions { OwnershipDeclaration = new AccountCompanyOwnershipDeclarationOptions { Date = DateTimeOffset.FromUnixTimeSeconds(1609798905).UtcDateTime, Ip = "8.8.8.8", UserAgent = "Mozilla/5.0", }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Company: &stripe.AccountCompanyParams{ OwnershipDeclaration: &stripe.AccountCompanyOwnershipDeclarationParams{ Date: stripe.Int64(1609798905), IP: stripe.String("8.8.8.8"), UserAgent: stripe.String("Mozilla/5.0"), }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setCompany( AccountUpdateParams.Company.builder() .setOwnershipDeclaration( AccountUpdateParams.Company.OwnershipDeclaration.builder() .setDate(1609798905L) .setIp("8.8.8.8") .setUserAgent("Mozilla/5.0") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", company={ "ownership_declaration": {"date": 1609798905, "ip": "8.8.8.8", "user_agent": "Mozilla/5.0"}, }, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', [ 'company' => [ 'ownership_declaration' => [ 'date' => 1609798905, 'ip' => '8.8.8.8', 'user_agent' => 'Mozilla/5.0', ], ], ] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, }, ) ``` ### Universal Beneficial Ownership Verification After supplying the beneficial owner information, it is checked against the National Registry of Businesses (NRB). Depending on the results of this check, there are three outcomes: * The business is found in the NRB, and the information matches. The account is fully onboarded, and no additional action is required. * The business is found in the NRB, but the information doesn’t match. The account is fully onboarded, and no additional action is required. A discrepancy report is sent to the NRB. * The business isn’t found in the NRB. An attestation consisting of an IP address, date, and user agent of the person submitting the information must be provided. The person is attesting that the business is registered with the NRB, and the information given to Stripe matches. In the case where the business isn’t found in the NRB, attesting that the beneficial ownership information is complete and correct is accomplished by providing the [company.ownership_declaration.date](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-date) and [company.ownership_declaration.ip](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-ip) arguments. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Company = new AccountCompanyOptions { OwnershipDeclaration = new AccountCompanyOwnershipDeclarationOptions { Date = DateTimeOffset.FromUnixTimeSeconds(1609798905).UtcDateTime, Ip = "8.8.8.8", UserAgent = "Mozilla/5.0", }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Company: &stripe.AccountCompanyParams{ OwnershipDeclaration: &stripe.AccountCompanyOwnershipDeclarationParams{ Date: stripe.Int64(1609798905), IP: stripe.String("8.8.8.8"), UserAgent: stripe.String("Mozilla/5.0"), }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setCompany( AccountUpdateParams.Company.builder() .setOwnershipDeclaration( AccountUpdateParams.Company.OwnershipDeclaration.builder() .setDate(1609798905L) .setIp("8.8.8.8") .setUserAgent("Mozilla/5.0") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", company={ "ownership_declaration": {"date": 1609798905, "ip": "8.8.8.8", "user_agent": "Mozilla/5.0"}, }, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', [ 'company' => [ 'ownership_declaration' => [ 'date' => 1609798905, 'ip' => '8.8.8.8', 'user_agent' => 'Mozilla/5.0', ], ], ] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, }, ) ``` #### Additional information on the account If Stripe is unable to verify the company, or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a [proof-of-entity document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable *payouts*. Collect it using the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) arguments. #### Additional information on the individual Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents), an address document, or both to enable payouts. That can happen if Stripe can’t verify the individual or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). In some cases, depending on various calculated risk factors, Stripe can use Simplified Due Diligence and request only one document for verification at a later time. Collect ID information using the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments, and address information using the [verification.additional_document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-front) and [verification.additional_document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-back) arguments. #### Additional information on the representative A person known as a representative must activate this connected account. The representative must be a [beneficial owner](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) who is authorized to sign for the company. Indicate this relationship to Stripe by setting [relationship.executive](https://docs.stripe.com/api/persons/object.md#person_object-relationship-executive) to `true`, or, if the representative owns 25% or more of the company, by setting [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) to `true`. You might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) and an [address document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe can’t verify the representative’s provided information or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). In some cases, depending on various calculated risk factors, Stripe can use Simplified Due Diligence and request only one document for verification at a later time. Additionally, for partnerships you must provide a [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership) value. You can collect ID information with the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on directors For companies, excluding partnerships, you must collect information on all [directors](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Directors are members of the governing board of the company. When you have finished collecting the required information from all directors, or if your company does not have any directors, you must inform Stripe by setting [company.directors_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-directors_provided) to `true`. You might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) and an [address document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe can’t verify the director’s provided information or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). In some cases, depending on various calculated risk factors, Stripe can use Simplified Due Diligence and request only one document for verification at a later time. You can collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments, and address information using the [verification.additional_document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-front) and [verification.additional_document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-back) arguments. #### Additional information on beneficial owners (for both executives and owners) You must collect information on all [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Beneficial owners are persons who exercise significant management control over the company (executives) or who own 25% or more of the company (owners). When you have finished collecting the required information from all beneficial owners, you must inform Stripe by setting both [company.owners_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-owners_provided) and [company.executives_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-executives_provided) to `true`. You might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) and an [address document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe can’t verify the beneficial owner’s provided information or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). In some cases, depending on various calculated risk factors, Stripe can use Simplified Due Diligence and request only one document for verification at a later time. You can collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments, and address information using the [verification.additional_document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-front) and [verification.additional_document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-additional_document-back) arguments. Optionally, you can collect ownership information on each person who owns 25% or more of the company with [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership). Additionally, for partnerships you need to provide a [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership) value for any owners added to the account. ### Universal Beneficial Ownership Verification After supplying the beneficial owner information, it is checked against the National Registry of Businesses (NRB). Depending on the results of this check, there are three outcomes: * The business is found in the NRB, and the information matches. The account is fully onboarded, and no additional action is required. * The business is found in the NRB, but the information doesn’t match. The account is fully onboarded, and no additional action is required. A discrepancy report is sent to the NRB. * The business isn’t found in the NRB. An attestation consisting of an IP address, date, and user agent of the person submitting the information must be provided. The person is attesting that the business is registered with the NRB, and the information given to Stripe matches. In the case where the business isn’t found in the NRB, attesting that the beneficial ownership information is complete and correct is accomplished by providing the [company.ownership_declaration.date](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-date) and [company.ownership_declaration.ip](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-ip) arguments. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Company = new AccountCompanyOptions { OwnershipDeclaration = new AccountCompanyOwnershipDeclarationOptions { Date = DateTimeOffset.FromUnixTimeSeconds(1609798905).UtcDateTime, Ip = "8.8.8.8", UserAgent = "Mozilla/5.0", }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Company: &stripe.AccountCompanyParams{ OwnershipDeclaration: &stripe.AccountCompanyOwnershipDeclarationParams{ Date: stripe.Int64(1609798905), IP: stripe.String("8.8.8.8"), UserAgent: stripe.String("Mozilla/5.0"), }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setCompany( AccountUpdateParams.Company.builder() .setOwnershipDeclaration( AccountUpdateParams.Company.OwnershipDeclaration.builder() .setDate(1609798905L) .setIp("8.8.8.8") .setUserAgent("Mozilla/5.0") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", company={ "ownership_declaration": {"date": 1609798905, "ip": "8.8.8.8", "user_agent": "Mozilla/5.0"}, }, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', [ 'company' => [ 'ownership_declaration' => [ 'date' => 1609798905, 'ip' => '8.8.8.8', 'user_agent' => 'Mozilla/5.0', ], ], ] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, }, ) ``` #### Additional information on the representative If Stripe is unable to verify the representative, you need to provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). This can be collected with the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on the owner If Stripe is unable to verify the owner, you need to provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). This can be collected with the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on the individual If Stripe is unable to verify the individual, you need to provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). This can be collected with the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments. ### Universal Beneficial Ownership Verification After supplying the beneficial owner information, it is checked against the National Registry of Businesses (NRB). Depending on the results of this check, there are three outcomes: * The business is found in the NRB, and the information matches. The account is fully onboarded, and no additional action is required. * The business is found in the NRB, but the information doesn’t match. The account is fully onboarded, no additional action is required. A discrepancy report is sent to the NRB. * The business is not found in the NRB. A proof of registration document (screenshot of the registration or copy of the confirmation email) is required to be uploaded. ### Uploading proof of registration In the case the business is not found in the NRB, a screenshot of the beneficial owner information from the NRB must be uploaded using the [documents.proof_of_registration.files](https://docs.stripe.com/api/accounts/create.md#create_account-documents-proof_of_registration-files) argument. Pass the file in the `file` parameter and set the `purpose` parameter to `account_requirement`: ```bash curl https://files.stripe.com/v1/files \ -u <>: \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \ -F "purpose"="account_requirement" \ -F "file"="@/path/to/a/file" ``` ```ruby <> Stripe::File.create({ purpose: 'account_requirement', file: File.new('/path/to/a/file.jpg'), }, { stripe_account: '{{CONNECTED_STRIPE_ACCOUNT_ID}}', }) ``` ```python <> with open("/path/to/a/file.jpg", "rb") as fp: stripe.File.create( purpose='account_requirement', file=fp, stripe_account='{{CONNECTED_STRIPE_ACCOUNT_ID}}', ) ``` ```php <> \Stripe\File::create([ 'purpose' => 'account_requirement', 'file' => fopen('/path/to/a/file.jpg', 'r'), ], [ 'stripe_account' => '{{CONNECTED_STRIPE_ACCOUNT_ID}}', ]); ``` ```java <> FileCreateParams params = FileCreateParams.builder() .setPurpose(FileCreateParams.Purpose.account_requirement) .setFile(new java.io.File("/path/to/a/file.jpg")) .build(); RequestOptions requestOptions = RequestOptions.builder() .setStripeAccount("{{CONNECTED_STRIPE_ACCOUNT_ID}}") .build(); File file = File.create(params); ``` ```javascript <> const fs = require('fs'); const file = await stripe.files.create({ purpose: 'account_requirement', file: { data: fs.readFileSync('/path/to/a/file.jpg'), name: 'file_name.jpg', type: 'application/octet-stream', }, }, { stripeAccount: '{{CONNECTED_STRIPE_ACCOUNT_ID}}', }); ``` ```go <> fp, _ := os.Open("/path/to/a/success.png") params := &stripe.FileParams{ FileReader: fp, Filename: stripe.String("success.png"), Purpose: stripe.String(string(stripe.FileUploadPurposeAccountRequirement)), } params.SetStripeAccount("{{CONNECTED_STRIPE_ACCOUNT_ID}}") f, _ := file.New(params) ``` ```dotnet <> var filename = "/path/to/a/success.png"; using (FileStream stream = System.IO.File.Open(filename, FileMode.Open)) { var options = new FileCreateOptions { File = stream, Purpose = FilePurpose.AccountRequirement, }; var service = new FileService(); var upload = service.Create(options); } ``` This request uploads the file and returns a token: ```json { "id": "file_5dtoJkOhAxrMWb", "created": 1403047735, "size": 4908 } ``` You may then use the token’s `id` value to attach the file to a connected account for identity verification. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Documents = new AccountDocumentsOptions { ProofOfRegistration = new AccountDocumentsProofOfRegistrationOptions { Files = new List { "file_5dtoJkOhAxrMWb" }, }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Documents: &stripe.AccountDocumentsParams{ ProofOfRegistration: &stripe.AccountDocumentsProofOfRegistrationParams{ Files: []*string{stripe.String("file_5dtoJkOhAxrMWb")}, }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setDocuments( AccountUpdateParams.Documents.builder() .setProofOfRegistration( AccountUpdateParams.Documents.ProofOfRegistration.builder() .addFile("file_5dtoJkOhAxrMWb") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { documents: { proof_of_registration: { files: ['file_5dtoJkOhAxrMWb'], }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", documents={"proof_of_registration": {"files": ["file_5dtoJkOhAxrMWb"]}}, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', ['documents' => ['proof_of_registration' => ['files' => ['file_5dtoJkOhAxrMWb']]]] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', {documents: {proof_of_registration: {files: ['file_5dtoJkOhAxrMWb']}}}, ) ``` #### Additional information on bank accounts We’ll verify that the legal owner of each payout bank account [matches that of the Stripe account](https://support.stripe.com/questions/bank-account-ownership-verification). If Stripe can’t verify the owner of the bank account, we’ll transition the status of the ExternalAccount to `verification_failed`. You’ll need to collect a scan of a cancelled check or bank statement to prove the legal owner of the bank account. Collect this information with the [documents.bank_account_ownership_verification.files](https://docs.stripe.com/api/accounts/update.md#update_account-external_account-documents-bank_account_ownership_verification) argument. #### Provide ID document for the representative You must provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) for the representative. To collect this scan, use the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Identity verification documents must be issued in Japan and show the representative’s residency status. #### Provide ID document for the individual You must collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) for an individual. To collect this scan, use the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments. Identity verification documents must be issued in Japan and show the individual’s residency status. #### Special considerations Collecting information for Japanese accounts is unique in that both *kana* and *kanji* language variations are required for a number of parameters: * `first_name_kana` * `first_name_kanji` * `last_name_kana` * `last_name_kanji` * `name_kana` * `name_kanji` * `address_kana` * `address_kanji` You need to submit information for these parameters instead of their counterparts (that is, instead of `first_name`, `last_name`, and so forth). It might seem counterintuitive to provide two arguments that represent the same onboarding requirement, but Stripe can’t verify a Japanese account until we’ve received information for both language variations. These variations may be composed of full- or half-width hiragana, katakana, or Latin characters, with kanji-specific API parameters also allowing for kanji characters. #### Japanese addresses Both kana and kanji language variations apply to Japanese address requirements as well. `postal_code` is always required when providing a Japanese address of either language variation. Stripe validates submitted addresses, and for a valid `postal_code`, we attempt to automatically fill attributes for matching `state`, `city`, and `town` for *both* `address_kana` and `address_kanji`. Requests with address details that are incompatible with the provided `postal_code` fail. `line2` should contain the building name in addition to the room number if applicable. This attribute can be omitted when the address does not contain building details. Here’s an example representation of a Japanese address, with explanations for how each part maps to its corresponding Stripe API attribute: ```json // 〒150-0001 東京都渋谷区神宮前1-5-8 神宮前タワービルディング22F { "country": "JP", "legal_entity": { "address_kana": { "country": "JP", // 2-letter country code "postal_code": "1500001", // Zip/Postal Code "state": "トウキヨウト", // Prefecture "city": "シブヤ", // City/Ward "town": "ジングウマエ 1-", // Town/cho-me "line1": "5-8", // Block/Building number "line2": "ジングウマエタワービルディング22F", // Building details (optional) }, "address_kanji": { "country": "JP", // 2-letter country code "postal_code": "1500001", // Zip/Postal Code "state": "東京都", // Prefecture "city": "渋谷区", // City/Ward "town": "神宮前 1丁目", // Town/cho-me (no kanji numerals) "line1": "5-8", // Block/Building number "line2": "神宮前タワービルディング22F", // Building details (optional) } } } ``` #### Statement descriptors Statement descriptors explain charges or payments and include information that banks and card networks require to help customers understand their statements. We recommend setting the [static](https://docs.stripe.com/get-started/account/statement-descriptors.md#static) components of statement descriptors in all three supported scripts (kanji, kana, and Latin characters) for Japanese connected accounts. | | PARAMETER | | ----------------------------------- | -------------------------------------------------------- | | Statement descriptor | settings.payments.statement_descriptor | | Statement descriptor (kanji) | settings.payments.statement_descriptor_kanji | | Statement descriptor (kana) | settings.payments.statement_descriptor_kana | | Statement descriptor prefix | settings.card_payments.statement_descriptor_prefix | | Statement descriptor prefix (kanji) | settings.card_payments.statement_descriptor_prefix_kanji | | Statement descriptor prefix (kana) | settings.card_payments.statement_descriptor_prefix_kana | You can set these fields with [API](https://docs.stripe.com/api/accounts/create.md#create_account-settings-payments-statement_descriptor). ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountCreateOptions { Type = "custom", Country = "JP", BusinessType = "company", Capabilities = new AccountCapabilitiesOptions { CardPayments = new AccountCapabilitiesCardPaymentsOptions { Requested = true }, Transfers = new AccountCapabilitiesTransfersOptions { Requested = true }, }, Settings = new AccountSettingsOptions { Payments = new AccountSettingsPaymentsOptions { StatementDescriptor = "example descriptor", StatementDescriptorKanji = "漢字明細", StatementDescriptorKana = "カナメイサイ", }, }, }; var service = new AccountService(); Account account = service.Create(options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Type: stripe.String(string(stripe.AccountTypeCustom)), Country: stripe.String("JP"), BusinessType: stripe.String(string(stripe.AccountBusinessTypeCompany)), Capabilities: &stripe.AccountCapabilitiesParams{ CardPayments: &stripe.AccountCapabilitiesCardPaymentsParams{Requested: stripe.Bool(true)}, Transfers: &stripe.AccountCapabilitiesTransfersParams{Requested: stripe.Bool(true)}, }, Settings: &stripe.AccountSettingsParams{ Payments: &stripe.AccountSettingsPaymentsParams{ StatementDescriptor: stripe.String("example descriptor"), StatementDescriptorKanji: stripe.String("漢字明細"), StatementDescriptorKana: stripe.String("カナメイサイ"), }, }, }; result, err := account.New(params); ``` ```java Stripe.apiKey = "<>"; AccountCreateParams params = AccountCreateParams.builder() .setType(AccountCreateParams.Type.CUSTOM) .setCountry("JP") .setBusinessType(AccountCreateParams.BusinessType.COMPANY) .setCapabilities( AccountCreateParams.Capabilities.builder() .setCardPayments( AccountCreateParams.Capabilities.CardPayments.builder().setRequested(true).build() ) .setTransfers( AccountCreateParams.Capabilities.Transfers.builder().setRequested(true).build() ) .build() ) .setSettings( AccountCreateParams.Settings.builder() .setPayments( AccountCreateParams.Settings.Payments.builder() .setStatementDescriptor("example descriptor") .setStatementDescriptorKanji("漢字明細") .setStatementDescriptorKana("カナメイサイ") .build() ) .build() ) .build(); Account account = Account.create(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.create({ type: 'custom', country: 'JP', business_type: 'company', capabilities: { card_payments: { requested: true, }, transfers: { requested: true, }, }, settings: { payments: { statement_descriptor: 'example descriptor', statement_descriptor_kanji: '漢字明細', statement_descriptor_kana: 'カナメイサイ', }, }, }); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.create( type="custom", country="JP", business_type="company", capabilities={"card_payments": {"requested": True}, "transfers": {"requested": True}}, settings={ "payments": { "statement_descriptor": "example descriptor", "statement_descriptor_kanji": "漢字明細", "statement_descriptor_kana": "カナメイサイ", }, }, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->create([ 'type' => 'custom', 'country' => 'JP', 'business_type' => 'company', 'capabilities' => [ 'card_payments' => ['requested' => true], 'transfers' => ['requested' => true], ], 'settings' => [ 'payments' => [ 'statement_descriptor' => 'example descriptor', 'statement_descriptor_kanji' => '漢字明細', 'statement_descriptor_kana' => 'カナメイサイ', ], ], ]); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.create({ type: 'custom', country: 'JP', business_type: 'company', capabilities: { card_payments: {requested: true}, transfers: {requested: true}, }, settings: { payments: { statement_descriptor: 'example descriptor', statement_descriptor_kanji: '漢字明細', statement_descriptor_kana: 'カナメイサイ', }, }, }) ``` See [Japanese statement descriptors](https://docs.stripe.com/get-started/account/statement-descriptors.md#set-japanese-statement-descriptors) for more details. ### Universal Beneficial Ownership Verification After supplying the beneficial owner information, it is checked against the National Registry of Businesses (NRB). Depending on the results of this check, there are three outcomes: * The business is found in the NRB, and the information matches. The account is fully onboarded, and no additional action is required. * The business is found in the NRB, but the information doesn’t match. The account is fully onboarded, and no additional action is required. A discrepancy report is sent to the NRB. * The business isn’t found in the NRB. An attestation consisting of an IP address, date, and user agent of the person submitting the information must be provided. The person is attesting that the business is registered with the NRB, and the information given to Stripe matches. In the case where the business isn’t found in the NRB, attesting that the beneficial ownership information is complete and correct is accomplished by providing the [company.ownership_declaration.date](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-date) and [company.ownership_declaration.ip](https://docs.stripe.com/api/accounts/object.md#account_object-company-ownership_declaration-ip) arguments. ```dotnet StripeConfiguration.ApiKey = "<>"; var options = new AccountUpdateOptions { Company = new AccountCompanyOptions { OwnershipDeclaration = new AccountCompanyOwnershipDeclarationOptions { Date = DateTimeOffset.FromUnixTimeSeconds(1609798905).UtcDateTime, Ip = "8.8.8.8", UserAgent = "Mozilla/5.0", }, }, }; var service = new AccountService(); Account account = service.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", options); ``` ```go stripe.Key = "<>" params := &stripe.AccountParams{ Company: &stripe.AccountCompanyParams{ OwnershipDeclaration: &stripe.AccountCompanyOwnershipDeclarationParams{ Date: stripe.Int64(1609798905), IP: stripe.String("8.8.8.8"), UserAgent: stripe.String("Mozilla/5.0"), }, }, }; result, err := account.Update("{{CONNECTED_STRIPE_ACCOUNT_ID}}", params); ``` ```java Stripe.apiKey = "<>"; Account resource = Account.retrieve("{{CONNECTED_STRIPE_ACCOUNT_ID}}"); AccountUpdateParams params = AccountUpdateParams.builder() .setCompany( AccountUpdateParams.Company.builder() .setOwnershipDeclaration( AccountUpdateParams.Company.OwnershipDeclaration.builder() .setDate(1609798905L) .setIp("8.8.8.8") .setUserAgent("Mozilla/5.0") .build() ) .build() ) .build(); Account account = resource.update(params); ``` ```node const stripe = require('stripe')('<>'); const account = await stripe.accounts.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, } ); ``` ```python import stripe stripe.api_key = "<>" account = stripe.Account.modify( "{{CONNECTED_STRIPE_ACCOUNT_ID}}", company={ "ownership_declaration": {"date": 1609798905, "ip": "8.8.8.8", "user_agent": "Mozilla/5.0"}, }, ) ``` ```php $stripe = new \Stripe\StripeClient('<>'); $account = $stripe->accounts->update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', [ 'company' => [ 'ownership_declaration' => [ 'date' => 1609798905, 'ip' => '8.8.8.8', 'user_agent' => 'Mozilla/5.0', ], ], ] ); ``` ```ruby Stripe.api_key = '<>' account = Stripe::Account.update( '{{CONNECTED_STRIPE_ACCOUNT_ID}}', { company: { ownership_declaration: { date: 1609798905, ip: '8.8.8.8', user_agent: 'Mozilla/5.0', }, }, }, ) ``` #### Additional information on the account If Stripe is unable to verify the business entity, the entity doesn’t have a `company.tax_id`, or there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you need to collect a proof of entity document to enable *payouts*. Collect it using the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) arguments. #### Companies with the card_payments capability `company` refers to these types of entities: * Sociedad Anónima (S.A.) * Sociedad de Responsabilidad Limitada (S. de R.L.) * Sociedad Anónima Promotora de Inversión (S.A.P.I.) * Sociedad por Acciones Simplificada (S.A.S.) #### Additional information on the individual If the individual fails verification, doesn’t have an `individual.id_number`, or there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), then an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) scan is required to enable payouts. You can collect that information using the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments. #### Additional information on the representative A person known as a representative must activate this connected account. The representative must be an authorized signatory with legal powers to represent the company as set forth under the relevant corporate documents, and must be authorized to agree to Stripe’s terms. If Stripe is unable to verify the representative, the representative doesn’t have a [representative.id_number](https://docs.stripe.com/api/persons/update.md#update_person-id_number), or there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on owners You must collect information on all [owners](https://support.stripe.com/questions/beneficial-owner-and-director-definition) with more than 25% ownership of the company. When you have finished collecting the required owner information, you must inform Stripe by setting [company.owners_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-owners_provided) to `true`. If Stripe is unable to verify an owner, an owner doesn’t have an [owners.id_number](https://docs.stripe.com/api/persons/update.md#update_person-id_number), or there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Optionally, you can collect ownership information on each person using the [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership) arguments. #### Additional information on the account If Stripe is unable to verify the company, or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a [proof-of-entity document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable *payouts*. Collect it using the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) arguments. #### Additional information on the individual Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents), an address document, or both to enable payouts. That can happen if Stripe is unable to verify the individual or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) arguments. #### Additional information on the representative A person known as a representative must activate this connected account. The representative must be a [beneficial owner](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) who is authorized to sign for the company. Indicate that relationship to Stripe by setting [relationship.executive](https://docs.stripe.com/api/persons/object.md#person_object-relationship-executive) to `true`, or, if the representative owns 25% or more of the company, by setting [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) to `true`. Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe is unable to verify the representative or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Optionally, you can collect the representative’s ownership information using the [relationship.representative](https://docs.stripe.com/api/persons/object.md#person_object-relationship-representative) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership) arguments. #### Additional information on directors For companies (excluding partnerships), you must collect information on all [directors](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Directors are members of the governing board of the company. When you have finished collecting the required information from all directors, or if your company does not have any directors, you must notify Stripe by setting [company.directors_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-directors_provided) to `true`. If there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns), you must collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. #### Additional information on beneficial owners (for both executives and owners) You must collect information on all [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). Beneficial owners are persons who exercise significant management control over the company (executives) or who own 25% or more of the company (owners). When you have finished collecting the required information from all beneficial owners, you must notify Stripe by setting both [company.owners_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-owners_provided) and [company.executives_provided](https://docs.stripe.com/api/accounts/object.md#account_object-company-executives_provided) to `true`. Depending on the situation, you might need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) to enable payouts. That can happen if Stripe is unable to verify a beneficial owner or if there are possible concerns about [sanctions](https://docs.stripe.com/connect/risk-management/best-practices.md#sanctions-concerns). Collect ID information using the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) arguments. Optionally, you can collect ownership information on each person who owns 25% or more of the company using the [relationship.owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [relationship.percent_ownership](https://docs.stripe.com/api/persons/object.md#person_object-relationship-percent_ownership) arguments. #### Business representative verification Stripe requires the account representative to undergo enhanced identity verification and address verification. ##### Enhanced identity verification Singapore requires using [Singpass MyInfo](https://www.singpass.gov.sg/main/individuals/) for enhanced identity verification of representatives for all business types. If users don’t have access to MyInfo, they must verify liveness using [Stripe Identity](https://docs.stripe.com/identity.md). Successful completion of enhanced identity verification using either SingPass MyInfo or Stripe Identity requires integrating with Connect Onboarding or Embedded Onboarding. If you’re using the Stripe API to onboard connected accounts, you must update your forms to collect the new required verification information from your users, and redirect them to Connect Onboarding at the final stage to complete the enhanced identity verification. ##### Address verification Verification of the business representative’s address is required for all businesses. If Stripe can’t verify the address, you must collect a [proof of address document](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=address). #### Proof of authority verification Stripe needs to verify that the [account representative has sufficient authority](https://support.stripe.com/questions/representative-authority-verification) to open an account on behalf of the legal entity. If we can’t verify this programmatically, Stripe returns the [verification_failed_representative_authority](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors-code) error code. You must change the representative to a person with sufficient authority. Alternatively, if a person with sufficient authority can’t be the business representative, you can add them as a person with the [authorizer](https://docs.stripe.com/api/persons/update.md#update_person-relationship-authorizer) position. The business must then provide a [Letter of Authorization](https://b.stripecdn.com/content/Letter_of_authorization_for_Stripe_Singapore.pdf) signed by the [authorizer](https://docs.stripe.com/api/persons/update.md#update_person-relationship-authorizer), which permits the business representative to manage the account. You must provide this as the representative’s [company_authorization](https://docs.stripe.com/api/persons/update.md#update_person-documents-company_authorization). You must add the [first name](https://docs.stripe.com/api/persons/object.md#person_object-first_name) and [last name](https://docs.stripe.com/api/persons/object.md#person_object-last_name) of the authorizer to the account, along with a copy of their [ID Document](https://docs.stripe.com/api/persons/update.md#update_person-verification-document). Stripe currently only accepts the [Letter of Authorization](https://b.stripecdn.com/content/Letter_of_authorization_for_Stripe_Singapore.pdf) template provided. Additionally, the Letter of Authorization requirement can expose document-related errors such as `verification_document_name_mismatch`, or `verification_document_type_not_supported`. Make sure you can handle [Document Verification Errors](https://docs.stripe.com/connect/handling-api-verification.md#handle-document-verification-problems) and the [New verification error codes](#new-verification-error-codes). #### Proof of authority verification Stripe needs to verify that the [account representative has sufficient authority](https://support.stripe.com/questions/representative-authority-verification) to open an account on behalf of the legal entity. If we can’t verify this programmatically, Stripe returns the [verification_failed_representative_authority](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors-code) error code. You must change the representative to a person with sufficient authority. Alternatively, if a person with sufficient authority can’t be the business representative, you can add them as a person with the [authorizer](https://docs.stripe.com/api/persons/update.md#update_person-relationship-authorizer) position. The business must then provide a [Letter of Authorization](https://b.stripecdn.com/content/Letter_of_authorization_for_Stripe_Singapore.pdf) signed by the [authorizer](https://docs.stripe.com/api/persons/update.md#update_person-relationship-authorizer), which permits the business representative to manage the account. You must provide this as the representative’s [company_authorization](https://docs.stripe.com/api/persons/update.md#update_person-documents-company_authorization). You must add the [first name](https://docs.stripe.com/api/persons/object.md#person_object-first_name) and [last name](https://docs.stripe.com/api/persons/object.md#person_object-last_name) of the authorizer to the account, along with a copy of their [ID Document](https://docs.stripe.com/api/persons/update.md#update_person-verification-document). Stripe currently only accepts the [Letter of Authorization](https://b.stripecdn.com/content/Letter_of_authorization_for_Stripe_Singapore.pdf) template provided. Additionally, the Letter of Authorization requirement can expose document-related errors such as `verification_document_name_mismatch`, or `verification_document_type_not_supported`. Make sure you can handle [Document Verification Errors](https://docs.stripe.com/connect/handling-api-verification.md#handle-document-verification-problems) and the [New verification error codes](#new-verification-error-codes). #### Legal entity verification Stripe requires the verification of business name, UEN and legal entity type. If we can’t verify the existence of the company, you must collect a company document. Stripe also needs to check that the business type and business structure matches the local government records. When a mismatch in [business type](https://docs.stripe.com/api/accounts/object.md#account_object-business_type) or [business structure](https://docs.stripe.com/api/accounts/object.md#account_object-company-structure) occurs, it generates a `verification_legal_entity_structure_mismatch` error, and you need to update the business type or structure, or provide a company document to verify the legal entity. UEN information might be verified with the data made available at https://data.gov.sg under the terms of the [Singapore Open Data License version 1.0](https://data.gov.sg/open-data-licence). #### Legal entity verification Stripe requires the verification of business name, UEN and legal entity type. If we can’t verify the existence of the company, you must collect a company document. Stripe also needs to check that the business type and business structure matches the local government records. When a mismatch in [business type](https://docs.stripe.com/api/accounts/object.md#account_object-business_type) or [business structure](https://docs.stripe.com/api/accounts/object.md#account_object-company-structure) occurs, it generates a `verification_legal_entity_structure_mismatch` error, and you need to update the business type or structure, or provide a company document to verify the legal entity. UEN information might be verified with the data made available at https://data.gov.sg under the terms of the [Singapore Open Data License version 1.0](https://data.gov.sg/open-data-licence). #### Ultimate beneficial ownership verification The ultimate beneficial ownership verification requirements depend on the user’s business type. ##### Private Companies Stripe defines and attempts to identify any individual with 25% or more ownership as the ultimate beneficial owner (UBO). We recommend using [Stripe-hosted](https://docs.stripe.com/connect/hosted-onboarding.md) or [Embedded Onboarding](https://docs.stripe.com/connect/embedded-onboarding.md) to allow your users to preview and confirm the owners. Alternatively, you can collect and add all UBOs to the account using the [owner](https://docs.stripe.com/api/persons/object.md) position in the API. If Stripe can’t determine these individuals, a company must submit a [proof of ultimate beneficial ownership document](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) to attest to their ownership structure. This must include proof of ownership documents for any holding companies owning 25% or more shares of the connected account. Stripe-hosted or embedded onboarding automatically seeks to collect these documents, or you can collect and submit them using the v1/accounts API. You must add all UBOs listed on the proof of ultimate beneficial ownership to the account. Connected accounts can submit a single [ultimate beneficial owner attestation](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) as an alternative to one document for the business and another for each holding company with significant ownership. If the company has no owners with 25% or more ownership, all directors listed on government records (and available for preview on Stripe-hosted or embedded onboarding) are considered to be the UBOs and you must add them to the account. ##### Partnerships Partnerships must verify the relationship between the business and all partners, managers and any other individual with 25% or more ownership. You must add these persons to the account with the [owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) position in the API. ##### Exemptions In certain situations, a business entity might not need to declare its ownership. To qualify for an exemption, you must provide a legitimate reason in the [company.ownership_exemption_reason](https://docs.stripe.com/api/accounts/update.md#update_account-company-ownership_exemption_reason) field. Valid reasons for exemption include: * `qualified_entity_exceeds_ownership_threshold`: If a government, publicly listed company, or financial institution owns at least 75% of the business, the business is exempt from providing ownership details. * `qualifies_as_financial_institution`: Businesses that are financial institutions regulated by the [Monetary Authority of Singapore](https://eservices.mas.gov.sg/fid/institution?sector=Banking&category=Finance%20Company) are exempt from sharing ownership details. After submitting an exemption reason, we’ll review the business entity’s details. During this review, the requirement moves to [requirements.pending_verification](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-pending_verification). If Stripe determines that the business entity doesn’t qualify for the exemption, we display an error message, and the ownership requirement will remain: ``` { "id": "<>", "requirements": { "past_due": [ "documents.proof_of_ultimate_beneficial_ownership.files", ], "alternatives": [ { "original_fields_due": [ "documents.proof_of_ultimate_beneficial_ownership.files", ], "alternative_fields_due": [ "company.ownership_exemption_reason", ] } ], "errors": [ { "code": "verification_rejected_ownership_exemption_reason", "reason": "The ownership exemption reason was rejected.", "requirement": "company.ownership_exemption_reason" } ], ... }, ... } ``` ##### Integration details You must add UBOs and directors to the account with the [owner](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) or [director](https://docs.stripe.com/api/persons/object.md#person_object-relationship-director) position in the API. Private companies, private partnerships, and non-profits require proof of beneficial ownership. When we can’t successfully verify the UBO, you need to collect an [ID Document](https://docs.stripe.com/api/persons/update.md#update_person-verification-document) for the unverified UBO. If Stripe determines that the account is missing owners, directors, or documentation of holding companies, the `documents.proof_of_ultimate_beneficial_ownership.files` field will be returned in [requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements). You can find a complete list of acceptable documents at [Acceptable Verification Documents](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship). Additionally, you could be asked to attest that the list of directors is current and correct by setting the `company.directorship_declaration.ip`, `company.directorship_declaration.date`, and optionally the `company.directorship_declaration.user_agent` fields in the API. If a discrepancy in your list of directors is detected, Stripe might request a new declaration by returning the `company.directorship_declaration.ip`, `company.directorship_declaration.date` requirements in the requirements field. Both Stripe-hosted and embedded onboarding display a list of missing [owners](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [directors](https://docs.stripe.com/api/persons/object.md#person_object-relationship-director), which allows the user to add them to their account by clicking on them. Adding the suggested individuals fulfills the UBO requirement for companies without any holding companies in their ownership structure. For companies with holding companies, Stripe attempts to verify its owners. If we can’t, the user receives a prompt to upload either an [ultimate beneficial owner attestation document](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) or relevant [ownership documents](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) to determine the account’s ultimate beneficial owners. (This also applies to other business types, such as non-profits.) Accounts with missing beneficial owners have a `verification_missing_owners` error code in the errors hash of [requirements](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-errors). Similarly, accounts with missing directors have a `verification_document_directors_mismatch` error code. Lastly, accounts where Stripe requires additional information regarding their ownership have a `verification_requires_additional_proof_of_registration` error code. ``` { "id": "<>", "requirements": { "past_due": [ "documents.proof_of_ultimate_beneficial_ownership.files", ], "errors": [ { "code": "verification_missing_owners", "requirement": "documents.proof_of_ultimate_beneficial_ownership.files", "reason": "..." }, ... ], ... }, ... } ``` #### Ultimate beneficial ownership verification In the case of non-profits, all key executives and directors are considered UBOs. This includes: * President (including assistant or deputy) * Executive director (including assistant or deputy) * CEO (including assistant or deputy) * Treasurer (including assistant or deputy) * Secretary or general secretary (including assistant or deputy) * Chairman (including assistant or deputy) * Trustee Stripe attempts to identify all directors and key executives of charities registered in Singapore, which you can preview and confirm in Stripe-hosted or embedded onboarding. All other non-profits must provide a [proof of ultimate beneficial ownership document](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) and you must add the listed individuals to the account with the [director](https://docs.stripe.com/api/persons/object.md#person_object-relationship-director) position in the API. ##### Integration details You must add all UBOs of non-profits to the account with [director](https://docs.stripe.com/api/persons/object.md#person_object-relationship-director) position in the API. When we can’t successfully verify the UBO, you need to collect an [ID Document](https://docs.stripe.com/api/persons/update.md#update_person-verification-document) for the unverified UBO. If Stripe determines that the account is missing owners, directors, or documentation of holding companies, the `documents.proof_of_ultimate_beneficial_ownership.files` field [becomes due](https://docs.stripe.com/api/accounts/object.md#account_object-requirements). You can find a complete list of acceptable documents for Singapore at [Acceptable Verification Documents](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship). Stripe-hosted and embedded onboarding display a list of missing [owners](https://docs.stripe.com/api/persons/object.md#person_object-relationship-owner) and [directors](https://docs.stripe.com/api/persons/object.md#person_object-relationship-director), which allows the user to add them to the account by clicking on them. Adding the suggested individuals fulfills the UBO requirement for companies without any holding companies in their ownership structure. For companies with holding companies, Stripe attempts to verify its owners. If we can’t, the user receives a prompt to upload either an [ultimate beneficial owner attestation document](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) or relevant [ownership documents](https://docs.stripe.com/acceptable-verification-documents.md?country=SG&document-type=relationship) to determine the account’s ultimate beneficial owners. (This also applies to other business types, such as non-profits.) Non-profits with missing beneficial owners have a `verification_document_directors_mismatch` error code. ``` { "id": "<>", "requirements": { "past_due": [ "documents.proof_of_ultimate_beneficial_ownership.files", ], "errors": [ { "code": "verification_document_directors_mismatch", "requirement": "documents.proof_of_ultimate_beneficial_ownership.files", "reason": "..." }, ... ], ... }, ... } ``` #### Closure of unverified accounts As required under [Singapore’s Payment Services Act](https://stripe.com/guides/sg-payment-services-act-2019), we’re permanently closing Singapore accounts that remain unverified for over 120 business days. These are accounts whose charges or payouts have already been suspended, so this closure affects only inactive accounts. To help you identify affected accounts, we upload monthly reports titled “Unverified account list” to your Dashboard under the [Compliance and documents section](https://dashboard.stripe.com/settings/documents), where you can find the list of impacted accounts and their requirement deadlines. Any accounts closed in the last month are in the report titled “Closed unverified account list.” We’ll close any account that hasn’t been verified by its designated deadline. The account owner needs to provide the missing verification information before the deadline to keep the account open. If the information is provided after the deadline has passed, we’ll release any remaining balance to the account holder’s bank account, but we won’t be able to reactivate their Stripe account. Stripe sends emails to Standard and Express accounts that remain unverified for too long, to inform them of the impending closure and to remind them to update their account details. Stripe won’t communicate with Custom connected accounts directly. That means you, as the platform, can contact them to avoid account closures. Accounts that are closed under this process have their [disabled_reason](https://docs.stripe.com/api/accounts/object.md#account_object-requirements-disabled_reason) set to `rejected.other`. #### Additional identity verification To comply with regulatory requirements in Thailand, we require additional identity verification for certain connected accounts. This entails taking a selfie and uploading an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) using [Stripe Identity](https://docs.stripe.com/identity.md). Your platform needs to integrate with [Connect Onboarding](https://stripe.com/connect/onboarding) to satisfy this identity verification requirement. Additional identity verification applies to the representatives and beneficial owners of connected accounts belonging to individuals, sole proprietors and unregistered partnerships. If you don’t integrate with [Connect Onboarding](https://stripe.com/connect/onboarding), you won’t be able to onboard connected accounts subject to additional identity verification. #### Registered address requirement The registered address requirement refers to the Household Registration address. Please provide an address as per the ‘Tabien Bann’ or Household Registration book, also known as the Blue book for Thai nationals, or Yellow book for non-Thai nationals. To collect a Household Registration address, use the [registered_address](https://docs.stripe.com/api/persons/object.md#person_object-registered_address) parameter. If the user is neither a Thai national nor resident of Thailand, collect their current residential address with the same parameter instead. #### ID number requirement The ID number requirement refers to the 13-digit code found on the front of a Thai ID card, and secondary ID number requirement refers to the laser code found at the back of a Thai ID card. To collect a Thai ID number use the [id_number](https://docs.stripe.com/api/persons/create.md#create_person-id_number) parameter, and to collect a laser code use the [id_number_secondary](https://docs.stripe.com/api/persons/create.md#create_person-id_number_secondary) parameter. These requirements are only applicable to Thai nationals, so leave the parameters empty if the user isn’t a Thai national. #### Additional information on the individual If Stripe is unable to verify the individual or if they’re not a Thai national, you need to collect a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). To collect an ID document, use the [individual.verification.document.front](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-front) and [individual.verification.document.back](https://docs.stripe.com/api/accounts/update.md#update_account-individual-verification-document-back) parameters. #### Additional information on the representative If Stripe is unable to verify the account representative or if they’re not a Thai national, you need to provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). To collect an ID document, use the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) parameters. #### Additional information on beneficial owners Accounts belonging to companies and registered partnerships are required to provide information on all beneficial owners. A beneficial owner is defined as any individual who owns 25% or more shares of the business. If there is no such person, then any individual who exercises significant control over the company is considered a beneficial owner. Otherwise, please provide information on any individual holding the position of senior management. If Stripe is unable to verify a beneficial owner or if they’re not a Thai national, you need to provide a scan of an [ID document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents). To collect an ID document, use the [verification.document.front](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-front) and [verification.document.back](https://docs.stripe.com/api/persons/object.md#person_object-verification-document-back) parameters. #### Additional information on the company If Stripe is unable to verify the company, you need to provide a scan of a [company verification document](https://docs.stripe.com/connect/handling-api-verification.md#acceptable-verification-documents) issued less than 6 months ago. To collect the company verification document scan, use the [company.verification.document.front](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-front) and [company.verification.document.back](https://docs.stripe.com/api/accounts/object.md#account_object-company-verification-document-back) parameters on the Account object. #### Additional tax information #### Additional information on the account #### Additional information on the individual #### Additional information on the representative #### Additional information for minors #### Additional information on owners #### Supported business structures #### Supported business structures #### Supported business structures #### Supported business structures #### Tax reporting information #### Threshold information #### Threshold information #### Payments threshold information #### Support phone number