connect-required-verification-information
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseInstructions
操作说明
The human-accessible version of this documentation allows the user to select connected account fields and regions using a form, and then makes API requests to fetch and display the requirements a connected account with the selected configuration and region must provide. Follow these instructions to fetch the same information.
本文档的人工可读版本允许用户通过表单选择关联账户字段和地区,然后发起API请求来获取并显示所选配置和地区的关联账户必须提供的要求。请按照以下说明获取相同信息。
Interaction contract
交互约定
Terminology used in this document:
- : a setup input such as
field,platformCountry, oraccountCountrycapabilities - : a presented selectable option for a field
option - : the option the user selects, or the free-response value the user provides for a field
value
Every time you ask the user to provide a value for a field:
- use a multiple-choice question; never stop at a plain free-form prompt or wait for raw chat input
- if you need free user input, instruct the user to use the question’s free-response field
- for long option lists, explicitly say that any value from the full validated list is still accepted through the free-response field
- if the user already provided a valid answer in an earlier message, use that instead of asking again
本文档中使用的术语:
- :配置输入项,例如
field、platformCountry或accountCountrycapabilities - :某个字段提供的可选选项
option - :用户选择的选项,或用户为某个字段提供的自由响应值
value
每次要求用户提供某个字段的值时:
- 使用选择题形式;绝不要停留在纯自由输入提示或等待原始聊天输入
- 如果需要用户自由输入,指导用户使用问题的自由响应字段
- 对于较长的选项列表,明确说明完整验证列表中的任何值仍可通过自由响应字段提交
- 如果用户在之前的消息中已提供有效答案,直接使用该答案而不是再次询问
Hard rules
硬性规则
You must follow these rules:
- Ask for a field only after all of its prerequisite fields are satisfied.
- Collect setup fields progressively as the flow advances.
- Ask for one field at a time, or one group of fields only when they are dependency-free at that point in the flow.
- For example, ask for and
platformCountryseparately: the platform country determines which account countries are valid, so asking both together can produce invalid combinations. But you may ask foraccountCountry,dashboardType, andtosTypetogether in one group because their valid options are already known from the same response.legalEntityType
- For example, ask for
- If there is ever a conflict between the user’s request and the validated setup, inform the user of the conflict and ask them to revise their setup choices using the Interaction contract. Keep the validated setup aligned with what the user requested without silently dropping the conflict.
- Follow the Interaction contract for every user question.
- When the number of available options exceeds four, always print the full validated reference list before asking the multiple-choice question so the user can see the full option space.
- When printing countries, always print the full country name followed by its code in parentheses, for example, .
Germany (DE) - In the multiple-choice question, include a small set of suggested options so the user can move forward with immediate clarity. The reference list above remains the authoritative full set.
- Leave the descriptions for the country suggested options blank.
- When printing countries, always print the full country name followed by its code in parentheses, for example,
- For any field with four or fewer valid options, show every valid option directly in the multiple-choice question. Do not print a separate reference list first.
- Every list of selectable options shown to the user must be pre-validated against all currently known constraints before you display it.
- Never display an option as selectable if you already know it will be removed, rejected, or auto-adjusted later in the flow.
- Present options that stay valid through the current flow.
- Ask about after
capabilities,platformCountry, and the downstream validity constraints for that setup are resolved.accountCountry - Only ask about when it is present in the public
orrProgramreturned for the validated setup.programs - If the map for the chosen
businessStructureis empty or contains exactly one keylegalEntityType, skipnil. Otherwise, ask forbusinessStructureand always allow abusinessStructureoption or leave unselected as a suggested option in the multiple-choice question.none - If the user decides to change an earlier choice like , you must invalidate and re-check all downstream fields before continuing.
platformCountry - Keep the dependency chain implicit. Share the information the user needs to make progress and keep the experience simple.
- Use external-facing language when talking to the user. See below to translate the internal API terminology.
您必须遵循以下规则:
- 仅在所有前置字段都已满足后,才询问该字段。
- 随着流程推进逐步收集配置字段。
- 一次询问一个字段,或者仅在某一阶段无依赖关系的一组字段。
- 例如,分开询问和
platformCountry:平台国家决定了哪些账户国家是有效的,因此同时询问两者可能会产生无效组合。但您可以在同一组中询问accountCountry、dashboardType和tosType,因为它们的有效选项已从同一响应中获知。legalEntityType
- 例如,分开询问
- 如果用户的请求与已验证的配置存在冲突,请告知用户冲突情况,并要求他们使用交互约定修改配置选择。保持已验证的配置与用户请求一致,不要静默忽略冲突。
- 对每个用户问题都遵循交互约定。
- 当可用选项数量超过四个时,必须在提出选择题之前打印完整的验证参考列表,以便用户查看所有选项范围。
- 打印国家时,始终打印完整的国家名称及其代码(括号内),例如。
Germany (DE) - 在选择题中,包含一小部分建议选项,以便用户可以立即明确地继续操作。上方的参考列表仍是权威的完整集合。
- 国家建议选项的描述留空。
- 打印国家时,始终打印完整的国家名称及其代码(括号内),例如
- 对于任何有四个或更少有效选项的字段,直接在选择题中显示所有有效选项。不要先打印单独的参考列表。
- 向用户显示的所有可选选项列表必须在显示前根据当前已知的所有约束条件预先验证。
- 如果您已知某个选项在后续流程中会被移除、拒绝或自动调整,绝不要将其显示为可选选项。
- 展示在当前流程中始终有效的选项。
- 在解决、
platformCountry以及该配置的下游有效性约束后,再询问accountCountry。capabilities - 仅当已验证配置返回的公开中包含
programs时,才询问该字段。orrProgram - 如果所选对应的
legalEntityType映射为空或仅包含一个键businessStructure,则跳过nil。否则,询问businessStructure,并在选择题中始终提供businessStructure选项或未选中的建议选项。none - 如果用户决定更改早期选择(如),您必须在继续之前作废并重新检查所有下游字段。
platformCountry - 保持依赖链隐含。向用户提供推进流程所需的信息,保持体验简洁。
- 与用户交流时使用对外的语言。请参考下文将内部API术语转换为对外语言。
Internal fields -> External language
内部字段 -> 对外语言
| Internal field | External language |
|---|---|
| Accounts API version |
| Platform country |
| Account country |
| Dashboard type |
| Service agreement |
| Business type |
| Business structure |
| Capabilities |
| Requirements update |
| Europe |
| 内部字段 | 对外语言 |
|---|---|
| Accounts API版本 |
| 平台国家 |
| 账户所属国家 |
| 控制台类型 |
| 服务协议 |
| 业务类型 |
| 业务结构 |
| 功能 |
| 要求更新 |
| 欧洲 |
Dependency chain
依赖链
You must follow this dependency chain exactly:
mermaid
flowchart TD
apiVersion["apiVersion"] --> capabilities
platformCountry --> accountCountry["accountCountry"]
accountCountry --> dashboardType["dashboardType"]
accountCountry --> tosType["tosType"]
accountCountry --> legalEntityType["legalEntityType"]
legalEntityType --> businessStructure["businessStructure (optional)"]
accountCountry --> capabilities["capabilities"]
accountCountry --> orrProgram["orrProgram (only if returned)"]
tosType --> capabilities
apiVersion --> capabilities
dashboardType --> finalRequest["final requirements request"]
apiVersion --> finalRequest
platformCountry --> finalRequest
accountCountry --> finalRequest
tosType --> finalRequest
legalEntityType --> finalRequest
businessStructure --> finalRequest
capabilities --> finalRequest
orrProgram --> finalRequestInterpret the diagram literally:
- Ask for a node only after all of its incoming dependencies are resolved.
- Always ask the user for first. Recommend
apiVersionby default.v2
您必须严格遵循以下依赖链:
mermaid
flowchart TD
apiVersion["apiVersion"] --> capabilities
platformCountry --> accountCountry["accountCountry"]
accountCountry --> dashboardType["dashboardType"]
accountCountry --> tosType["tosType"]
accountCountry --> legalEntityType["legalEntityType"]
legalEntityType --> businessStructure["businessStructure (optional)"]
accountCountry --> capabilities["capabilities"]
accountCountry --> orrProgram["orrProgram (only if returned)"]
tosType --> capabilities
apiVersion --> capabilities
dashboardType --> finalRequest["final requirements request"]
apiVersion --> finalRequest
platformCountry --> finalRequest
accountCountry --> finalRequest
tosType --> finalRequest
legalEntityType --> finalRequest
businessStructure --> finalRequest
capabilities --> finalRequest
orrProgram --> finalRequest按字面意思解读该图:
- 仅在所有传入依赖项都已解决后,才询问该节点。
- 始终首先询问用户。默认推荐
apiVersion。v2
Inputs you eventually need
最终需要的输入
By the time you make the final requirements request, you must have validated values for all of the following fields:
- :
apiVersionorv1v2 platformCountryaccountCountrydashboardTypetosTypelegalEntityType- : at least one capability must be selected
capabilities
You also must have asked for the following optional fields, if they’re applicable:
- : ask only when
businessStructureis notlegalEntityTypeindividual - : ask only when present in the public
orrProgramlist for that validated setupprograms
在发起最终要求请求时,您必须已获取以下所有字段的验证值:
- :
apiVersion或v1v2 platformCountryaccountCountrydashboardTypetosTypelegalEntityType- :必须选择至少一个功能
capabilities
您还必须询问以下可选字段(如果适用):
- :仅当
businessStructure不是legalEntityType时询问individual - :仅当该已验证配置的公开
orrProgram列表中包含该字段时询问programs
Resolve capabilities
解析功能
Use this algorithm whenever you build or validate the capability list:
- Start from .
country_map[accountCountry].capabilities - Apply rules:
tosType- if , force
tosType=recipientand remove all other capabilities excepttransfers, which may be available in rare casescrypto_transfers - if and
apiVersion=v1is selected, also includecrypto_transferstransfers
- if
- If , drop any capability not present in
apiVersion=v2.get-v2-supported-v1-capabilities - Show the user the filtered capability list. When the user explicitly asks about a filtered-out capability, clearly explain that the asked-for capability is unavailable for the current setup.
- If the filtered list is empty, tell the user that no capabilities are supported for the current setup and ask them to revise earlier setup choices using the Interaction contract before making the final requirements request.
- When asking about , print the full filtered list first, then ask a multiple-choice question that includes the most likely choice or choices based on prior user context.
capabilities - If the user asks for a capability outside the filtered list, explain why it is unavailable for the current setup.
- Keep the user’s requested capability visible in the conversation and explain the incompatibility directly. For example, if the user asks for , but also selected
paypal_paymentsaccounts, explain thatv2is unavailable forpaypal_paymentsaccounts, and offer them the choice of switching tov2apiVersionand choosingv1, or remaining withpaypal_paymentsapiVersionand choosing a different capability.v2
每当构建或验证功能列表时,请使用以下算法:
- 从开始。
country_map[accountCountry].capabilities - 应用规则:
tosType- 如果,强制选择
tosType=recipient并移除所有其他功能(transfers除外,在极少数情况下可能可用)crypto_transfers - 如果且选择了
apiVersion=v1,则同时包含crypto_transferstransfers
- 如果
- 如果,移除所有不在
apiVersion=v2中的功能。get-v2-supported-v1-capabilities - 向用户显示过滤后的功能列表。当用户明确询问被过滤掉的功能时,清楚地解释该功能在当前配置下不可用。
- 如果过滤后的列表为空,请告知用户当前配置不支持任何功能,并要求他们在发起最终要求请求前使用交互约定修改早期配置选择。
- 询问时,先打印完整的过滤列表,然后根据用户之前的上下文提出包含最可能选择的选择题。
capabilities - 如果用户询问过滤列表之外的功能,解释该功能在当前配置下不可用的原因。
- 保持用户请求的功能在对话中可见,并直接解释不兼容性。例如,如果用户询问,但同时选择了
paypal_payments账户,解释v2在paypal_payments账户中不可用,并提供选择:切换到v2apiVersion并选择v1,或者保持paypal_paymentsapiVersion并选择其他功能。v2
Agent flow
代理流程
When the user asks what verification information they need, use this flow:
- Ask for . Recommend
apiVersion.v2 - Fetch and use the public supported list to ask for
https://docs.stripe.com/_endpoint/get-platform-countries.platformCountry - Fetch if
https://docs.stripe.com/_endpoint/get-v2-supported-v1-capabilities.apiVersion=v2 - Fetch with the chosen
https://docs.stripe.com/_endpoint/get-requirement-selections-for-platform-country?platformCountry=....platformCountry - Ask for from the returned
accountCountrykeys.country_map - After is validated, ask for:
accountCountrydashboardTypetosTypelegalEntityType
- After is chosen, ask for
legalEntityTypeif the validated structure map exposes it.businessStructure - Resolve and ask for using Resolve capabilities.
capabilities - Ask for only if the validated setup exposes one or more public programs.
orrProgram - If the user’s requested setup doesn’t match the valid options, tell them exactly which parts are invalid or auto-adjusted, then ask the correcting follow-up using the Interaction contract. Keep the mismatch visible, keep the setup grounded in the user’s request, and continue with a structured follow-up question.
- Only after the setup is valid, call with one top-level setup key
https://docs.stripe.com/_endpoint/get-requirements-for-setups, includingaccount-setup-A[...],account-setup-A[apiVersion],account-setup-A[platformCountry],account-setup-A[accountCountry],account-setup-A[dashboardType],account-setup-A[tosType], optionalaccount-setup-A[legalEntityType], one or moreaccount-setup-A[businessStructure], and optionalaccount-setup-A[capabilities][i].account-setup-A[orrProgram] - At the end, you must call and
https://docs.stripe.com/_endpoint/get-website-requirements-for-capabilities?capabilities[i]=...with the final validated capabilities to check for additional information.https://docs.stripe.com/_endpoint/get-mcc-restrictions-for-capabilities?capabilities[i]=...
If you are asked to compare two setups or are asked what is needed to update from X to Y, you must follow the validation flow for setup A with a top-level key and then follow the flow again for setup B with a second top-level key before calling the diffable requirements request.
account-setup-A[...]account-setup-B[...]Treat transport or build failures as retryable helper failures, and reserve unsupported-setup conclusions for successful prerequisite fetches and business validation results.
当用户询问需要哪些验证信息时,请使用以下流程:
- 询问。推荐
apiVersion。v2 - 调用,使用返回的公开支持列表询问
https://docs.stripe.com/_endpoint/get-platform-countries。platformCountry - 如果,调用
apiVersion=v2。https://docs.stripe.com/_endpoint/get-v2-supported-v1-capabilities - 使用所选的调用
platformCountry。https://docs.stripe.com/_endpoint/get-requirement-selections-for-platform-country?platformCountry=... - 从返回的键中询问
country_map。accountCountry - 在验证通过后,询问:
accountCountrydashboardTypetosTypelegalEntityType
- 在选择后,如果已验证的结构映射中包含
legalEntityType,则询问该字段。businessStructure - 使用解析功能解析并询问。
capabilities - 仅当已验证配置公开一个或多个公开程序时,询问。
orrProgram - 如果用户请求的配置与有效选项不匹配,请准确告知哪些部分无效或已自动调整,然后使用交互约定提出纠正性跟进问题。保持不匹配情况可见,确保配置符合用户请求,并继续提出结构化的跟进问题。
- 仅当配置有效后,调用,传入顶级配置键
https://docs.stripe.com/_endpoint/get-requirements-for-setups,包括account-setup-A[...]、account-setup-A[apiVersion]、account-setup-A[platformCountry]、account-setup-A[accountCountry]、account-setup-A[dashboardType]、account-setup-A[tosType]、可选的account-setup-A[legalEntityType]、一个或多个account-setup-A[businessStructure]以及可选的account-setup-A[capabilities][i]。account-setup-A[orrProgram] - 最后,必须调用和
https://docs.stripe.com/_endpoint/get-website-requirements-for-capabilities?capabilities[i]=...,传入最终验证后的功能以检查额外信息。https://docs.stripe.com/_endpoint/get-mcc-restrictions-for-capabilities?capabilities[i]=...
如果您被要求对比两个配置,或者被询问从X更新到Y需要什么,您必须先为配置A遵循验证流程(使用顶级键),然后为配置B再次遵循流程(使用第二个顶级键),再调用可对比的要求请求。
account-setup-A[...]account-setup-B[...]将传输或构建失败视为可重试的辅助失败,仅在成功完成前置请求和业务验证后才得出不支持配置的结论。
curl examples
curl示例
In these examples, set the docs host to the public site:
bash
DOCS_HOST="https://docs.stripe.com"在这些示例中,将文档主机设置为公开站点:
bash
DOCS_HOST="https://docs.stripe.com"Naive user: “What do I need to verify for a Stripe connected account?”
新手用户:“我需要为Stripe关联账户提供哪些验证信息?”
Ask for . Recommend .
apiVersionv2Fetch the public platform-country list:
bash
curl --get "$DOCS_HOST/_endpoint/get-platform-countries"Ask the user which value they want to use. Then, fetch the allowed options for that platform country. This request tells you what is valid next, and you must use it before choosing downstream fields. For example, if the user chose :
platformCountryUSbash
curl --get "$DOCS_HOST/_endpoint/get-requirement-selections-for-platform-country" \
--data-urlencode "platformCountry=US"After that response returns, collect setup choices as described in the Agent flow section.
询问。推荐。
apiVersionv2获取公开的平台国家列表:
bash
curl --get "$DOCS_HOST/_endpoint/get-platform-countries"询问用户要使用的值。然后,获取该平台国家的允许选项。此请求会告知您下一步的有效选项,您必须在选择下游字段前使用该请求。例如,如果用户选择:
platformCountryUSbash
curl --get "$DOCS_HOST/_endpoint/get-requirement-selections-for-platform-country" \
--data-urlencode "platformCountry=US"在收到该响应后,按照代理流程部分的描述收集配置选择。
Smart user: “I have a CA platform, and I want to onboard a FR company connected account to use card payments”
资深用户:“我有一个加拿大平台,想开户一个法国公司关联账户以使用卡支付功能”
Ask for . Recommend .
apiVersionv2bash
undefined询问。推荐。
apiVersionv2bash
undefinedStep 1: verify the platform country is valid
步骤1:验证平台国家是否有效
curl --get "$DOCS_HOST/_endpoint/get-platform-countries"
curl --get "$DOCS_HOST/_endpoint/get-platform-countries"
Step 2: fetch all public options for that platform country
步骤2:获取该平台国家的所有公开选项
curl --get "$DOCS_HOST/_endpoint/get-requirement-selections-for-platform-country"
--data-urlencode "platformCountry=CA"
--data-urlencode "platformCountry=CA"
From that second response, first verify that FR is a valid account country, then read:
- `country_map.FR.dashboard_types`
- `country_map.FR.tos_types`
- `country_map.FR.entity_type_structures`
- `country_map.FR.capabilities`
- `country_map.FR.programs`
Then, confirm the user’s requested setup actually matches those available options.
If the user wants `apiVersion=v2`, first fetch and apply the v2 capability filter to compare against the user’s requested capabilities:
```bash
curl --get "$DOCS_HOST/_endpoint/get-v2-supported-v1-capabilities"Only when the user’s requested setup actually matches those available options, then call the requirements endpoint.
The requirements endpoint expects nested query-string fields, not a JSON body:
bash
curl --get "$DOCS_HOST/_endpoint/get-requirements-for-setups" \
--data-urlencode "account-setup-A[apiVersion]=v2" \
--data-urlencode "account-setup-A[platformCountry]=CA" \
--data-urlencode "account-setup-A[accountCountry]=FR" \
--data-urlencode "account-setup-A[dashboardType]=none" \
--data-urlencode "account-setup-A[tosType]=full" \
--data-urlencode "account-setup-A[legalEntityType]=company" \
--data-urlencode "account-setup-A[businessStructure]=corporation" \
--data-urlencode "account-setup-A[capabilities][0]=card_payments"Optionally, since is present for this configuration, you can ask the user if they would like to choose a requirements update and add to the request.
.programs--data-urlencode "account-setup-A[orrProgram]=eu-2025"Use this response to present the requirements to the user as explained in the Construct the result section.
Fetch the optional supplemental tables for the selected capabilities:
bash
curl --get "$DOCS_HOST/_endpoint/get-website-requirements-for-capabilities" \
--data-urlencode "capabilities[0]=card_payments"bash
curl --get "$DOCS_HOST/_endpoint/get-mcc-restrictions-for-capabilities" \
--data-urlencode "capabilities[0]=card_payments"curl --get "$DOCS_HOST/_endpoint/get-requirement-selections-for-platform-country"
--data-urlencode "platformCountry=CA"
--data-urlencode "platformCountry=CA"
从第二个响应中,首先验证法国是否为有效的账户国家,然后读取:
- `country_map.FR.dashboard_types`
- `country_map.FR.tos_types`
- `country_map.FR.entity_type_structures`
- `country_map.FR.capabilities`
- `country_map.FR.programs`
然后,确认用户请求的配置是否与这些可用选项匹配。
如果用户想要`apiVersion=v2`,先获取并应用v2功能过滤器,以对比用户请求的功能:
```bash
curl --get "$DOCS_HOST/_endpoint/get-v2-supported-v1-capabilities"仅当用户请求的配置与这些可用选项匹配后,才调用要求端点。
要求端点期望嵌套的查询字符串字段,而非JSON请求体:
bash
curl --get "$DOCS_HOST/_endpoint/get-requirements-for-setups" \
--data-urlencode "account-setup-A[apiVersion]=v2" \
--data-urlencode "account-setup-A[platformCountry]=CA" \
--data-urlencode "account-setup-A[accountCountry]=FR" \
--data-urlencode "account-setup-A[dashboardType]=none" \
--data-urlencode "account-setup-A[tosType]=full" \
--data-urlencode "account-setup-A[legalEntityType]=company" \
--data-urlencode "account-setup-A[businessStructure]=corporation" \
--data-urlencode "account-setup-A[capabilities][0]=card_payments"可选地,由于此配置中存在,您可以询问用户是否要选择要求更新,并在请求中添加。
.programs--data-urlencode "account-setup-A[orrProgram]=eu-2025"使用此响应按照构建结果部分的说明向用户展示要求。
获取所选功能的可选补充表格:
bash
curl --get "$DOCS_HOST/_endpoint/get-website-requirements-for-capabilities" \
--data-urlencode "capabilities[0]=card_payments"bash
curl --get "$DOCS_HOST/_endpoint/get-mcc-restrictions-for-capabilities" \
--data-urlencode "capabilities[0]=card_payments"Read the API responses
读取API响应
Use to choose your initial :
get-platform-countriesplatformCountry- is the public list of available
platform_countriesoptionsplatformCountry - is the page’s default starting country
default_country
Use to validate the setup before you call the main requirements endpoint:
get-requirement-selections-for-platform-country- is the source of truth for which field values are valid for that
country_mapvalueplatformCountry - the keys of are the allowed
country_mapoptionsaccountCountry - constrains
country_map[ACCOUNT_COUNTRY].dashboard_typesdashboardType - constrains
country_map[ACCOUNT_COUNTRY].tos_typestosType - constrains
country_map[ACCOUNT_COUNTRY].entity_type_structuresand optionallegalEntityTypebusinessStructure - constrains capability choices
country_map[ACCOUNT_COUNTRY].capabilities - lists the only public ORR programs you may pass as
country_map[ACCOUNT_COUNTRY].programsorrProgram - should be ignored
external_country_map
Apply these dependency rules before making the final request:
- if you change , re-check all downstream selections
accountCountry - if you change , re-check
legalEntityTypeand all downstream selectionsbusinessStructure - if you change ,
accountCountry, ortosType, re-run Resolve capabilitiesapiVersion
Use as your main source of requirement data:
get-requirements-for-setups- contains the successful result for each requested setup key
requirements - means the setup was invalid and must be corrected before you interpret the response
validation_errors - means the endpoint failed unexpectedly while building the summary; you must treat this as retryable rather than as a business conclusion
build_errors
Within each successful setup result:
- is the requirement data for a single raw field, including enforcement limits, alternatives, display metadata, and related annotations used by the docs renderer
requirements[field_name] - contains human-readable labels and validation guidance for that requirement
extras - contains top-level requirement tags returned alongside the requirements data
requirement_tags - contains grouped requirement data returned alongside the requirements data
requirement_groups
Check the supplemental endpoints to see if there are any additional capability-specific restrictions to present to the user.
- from the website endpoint is a separate website requirements table that explains requirements the connected account’s website must meet to support the selected capability. These should be presented to the user as a separate table.
requirements_by_capability - from the MCC endpoint is a separate MCC restrictions table that explains requirements the connected account’s MCC must meet to support the selected capability. If this endpoint returns any restrictions, ask the user what kind of business they are running to determine whether their business type is prohibited or restricted from using the specific capability.
restrictions_by_capability - Empty maps are valid results for many standard capabilities and are not necessarily errors.
使用选择初始的:
get-platform-countriesplatformCountry- 是可用
platform_countries选项的公开列表platformCountry - 是页面的默认起始国家
default_country
使用在调用主要求端点前验证配置:
get-requirement-selections-for-platform-country- 是该
country_map值对应的字段值有效性的权威来源platformCountry - 的键是允许的
country_map选项accountCountry - 限制
country_map[ACCOUNT_COUNTRY].dashboard_typesdashboardType - 限制
country_map[ACCOUNT_COUNTRY].tos_typestosType - 限制
country_map[ACCOUNT_COUNTRY].entity_type_structures和可选的legalEntityTypebusinessStructure - 限制功能选择
country_map[ACCOUNT_COUNTRY].capabilities - 列出了可作为
country_map[ACCOUNT_COUNTRY].programs传递的唯一公开ORR程序orrProgram - 应被忽略
external_country_map
在发起最终请求前应用以下依赖规则:
- 如果更改,重新检查所有下游选择
accountCountry - 如果更改,重新检查
legalEntityType和所有下游选择businessStructure - 如果更改、
accountCountry或tosType,重新运行解析功能apiVersion
使用作为要求数据的主要来源:
get-requirements-for-setups- 包含每个请求配置键的成功结果
requirements - 表示配置无效,必须先纠正才能解释响应
validation_errors - 表示端点在构建摘要时意外失败;您必须将其视为可重试而非业务结论
build_errors
在每个成功的配置结果中:
- 是单个原始字段的要求数据,包括执行限制、替代方案、显示元数据和文档渲染器使用的相关注释
requirements[field_name] - 包含该要求的可读标签和验证指导
extras - 包含与要求数据一起返回的顶级要求标签
requirement_tags - 包含与要求数据一起返回的分组要求数据
requirement_groups
检查补充端点,查看是否有任何特定于功能的额外限制需要向用户展示。
- 网站端点返回的是一个独立的网站要求表格,解释了关联账户的网站必须满足哪些要求才能支持所选功能。这些应作为独立表格展示给用户。
requirements_by_capability - MCC端点返回的是一个独立的MCC限制表格,解释了关联账户的MCC必须满足哪些要求才能支持所选功能。如果该端点返回任何限制,请询问用户其业务类型,以确定其业务类型是否被禁止或限制使用特定功能。
restrictions_by_capability - 对于许多标准功能,空映射是有效的结果,不一定表示错误。
Construct the result
构建结果
Transform the API response into one or more human-readable tables in your own reply to the user, followed by any additional explanatory notes. These are output tables that you construct from the response data, not references to pre-existing tables on the human docs page.
将API响应转换为一个或多个可读表格,包含在您给用户的回复中,后面附上任何额外的解释说明。这些是您根据响应数据构建的输出表格,而非引用人工文档页面上已有的表格。
How to construct the tables:
如何构建表格:
- Split each raw field key into a section using its prefix:
- ->
company.*company - ->
documents.*documents - ->
individual.*individual - ->
representative.*representative - ->
directors.*directors - ->
owners.*owners - ->
executives.*executives - anything else ->
account
- Render one table per non-empty section. Do not merge multiple sections into one table.
- For each table:
- use the capitalized section name as the table heading, for example ,
Account,Company,Representative, orDirectorsOwners - Include the following columns:
- Heading: blank
- Content: Row display name, for example “Name”, “Date of birth”, or “Address”
- Heading:
Requirement- Content: a bulleted list of displayed fields
- Render one bullet per displayed field
- Render each field in code format
- If a field has alternatives, keep them in the same bullet and render them as a set of options, for example
field_a` or `field_b
- Heading:
Verification- Content: a bulleted list built from
extras[].value - Render each entry as one list item
extras[].value - If is empty, leave the entry blank
extras
- Content: a bulleted list built from
- Heading:
Enforcement action- Content: human-readable enforcement text built from both sets of limit fields
- First use the unverified limit fields to generate the message(s):
if not providedcapability_limit_amountcapability_limit_timepayment_limit_amountpayment_limit_timepayout_limit_amountpayout_limit_time
- Then use the verified limit fields to generate the message(s):
if not verifiedverified_capability_limit_amountverified_capability_limit_timeverified_payment_limit_amountverified_payment_limit_timeverified_payout_limit_amountverified_payout_limit_time
- If any limit amount or limit time is , treat that impact as immediate
<= 0 - If both a time limit and an amount limit exist for the same impact, join them with
or - Group impacts with identical thresholds into a single sentence, for example
Capability, payments, and payouts will be paused immediately if not provided. - If both and
if not providedtext exist, render theif not verifiedsentence(s) first and then theif not providedsentence(s); prefix the firstif not verifiedsentence withif not verifiedAlso, - If neither set of limits is present, render
—
- Heading: blank
- use the capitalized section name as the table heading, for example
- If two sections share the same row-definition family, they still remain separate tables. For example, and
representativeboth use theownersrow-definition family, but they render as separatepersonandRepresentativetables because they are different sections.Owners - Assign each section to one of the row-definition families listed below in the step. The row-definition family only controls how rows are matched and labeled inside that section’s table:
Row definitions- ->
accountaccount - ->
companyentity - ->
documentsentity - ->
individualperson - ->
representativeperson - ->
ownersperson - ->
executivesperson - ->
directorsperson
- For every non-section, strip the section prefix before matching row rules. For example, match
accountasrepresentative.first_nameandfirst_nameascompany.address.city.address.city - Use the row definitions below for that section’s row-definition family. Create a row only when at least one field in that section matches the row.
- Row definitions:
account: Merchant category code: URL: Product description: Support phone: Statement descriptors:
/business_profile.mcc//business_profile.(url|requirement)//business_profile.product_description//business_profile.support_phone//settings.payments.statement_descriptor/- /settings.card_payments.statement_descriptor/ Konbini support email address: Konbini support phone number:
/settings.konbini_payments.support_email/Konbini support hours:/settings.konbini_payments.support_phone/Terms of service:/settings.konbini_payments.support_hours/Issuing terms of service:/^tos_acceptance\./Estimated worker count:/settings\.card_issuing\.tos_acceptance\./Annual revenue:/business_profile\.estimated_worker_count/External account:/business_profile\.annual_revenue/Legal guardian:/external_account//legal_guardian\./
entity: Company name: Company name (kana): Company name (kanji): Company address: Company address (kana): Company address (kanji): Company phone: Company tax ID: Company registration number: Company ID number: Trade license: Memorandum of Association: Proof of bank account: Directors provided: Owners provided: Executives provided:
/name$//name_kana//name_kanji//address\..*//address_kana//address_kanji//phone//tax_id//registration_number//id_number//company_license//company_memorandum_of_association//bank_account_ownership_verification//directors_provided//owners_provided//executives_provided/person: Name: Name (kana): Name (kanji): Aliases: Date of birth: Address: Address (kana): Address (kanji): Registered address: Email: Phone: Gender: Political Exposure: Tax information: or Secondary ID number: Job title: Relationship with legal entity: Nationality: Passport: Proof of liveness:
/(first|last)_name//(first|last)_name_kana//(first|last)_name_kanji//full_name_aliases//dob\.//^address\.//address_kana//address_kanji//registered_address//email//phone//gender//political_exposure//ssn_last_4$//id_number$//(id_number_secondary)//(relationship\.title)//relationship\.(?!title)//nationality//passport//proof_of_liveness/- For , replace each displayed field with
apiVersion=v2and usev2_field_name.v2_alternatives - If and a requirement doesn’t expose
apiVersion=v2, omit that field from the rendered table. If that removes every field from a row group, omit the row. If a section becomes empty, omit that section table.v2_field_name
- 根据前缀将每个原始字段键拆分为不同部分:
- ->
company.*company - ->
documents.*documents - ->
individual.*individual - ->
representative.*representative - ->
directors.*directors - ->
owners.*owners - ->
executives.*executives - 其他 ->
account
- 每个非空部分渲染一个表格。不要将多个部分合并到一个表格中。
- 对于每个表格:
- 使用大写的部分名称作为表格标题,例如、
Account、Company、Representative或DirectorsOwners - 包含以下列:
- 标题:空白
- 内容:行显示名称,例如“姓名”、“出生日期”或“地址”
- 标题:
Requirement- 内容:显示字段的项目符号列表
- 每个显示字段对应一个项目符号
- 每个字段使用代码格式渲染
- 如果字段有替代方案,将它们放在同一个项目符号中,并渲染为选项集合,例如
field_a`或`field_b
- 标题:
Verification- 内容:从构建的项目符号列表
extras[].value - 每个条目对应一个列表项
extras[].value - 如果为空,留空该条目
extras
- 内容:从
- 标题:
Enforcement action- 内容:从两组限制字段构建的可读执行文本
- 首先使用未验证限制字段生成“如果未提供”的消息:
capability_limit_amountcapability_limit_timepayment_limit_amountpayment_limit_timepayout_limit_amountpayout_limit_time
- 然后使用已验证限制字段生成“如果未验证”的消息:
verified_capability_limit_amountverified_capability_limit_timeverified_payment_limit_amountverified_payment_limit_timeverified_payout_limit_amountverified_payout_limit_time
- 如果任何限制金额或限制时间,则视为立即生效
<= 0 - 如果同一影响同时存在时间限制和金额限制,使用连接
或 - 将具有相同阈值的影响分组为一个句子,例如“如果未提供,功能、支付和提现将立即暂停。”
- 如果同时存在“如果未提供”和“如果未验证”的文本,先渲染“如果未提供”的句子,然后渲染“如果未验证”的句子;第一个“如果未验证”的句子前加上“此外,”
- 如果两组限制都不存在,渲染
—
- 标题:空白
- 使用大写的部分名称作为表格标题,例如
- 如果两个部分属于同一行定义系列,它们仍需作为单独的表格。例如,和
representative都使用owners行定义系列,但它们分别渲染为person和Representative表格,因为它们是不同的部分。Owners - 将每个部分分配到以下“行定义”步骤中列出的行定义系列之一。行定义系列仅控制该部分表格内的行匹配和标签方式:
- ->
accountaccount - ->
companyentity - ->
documentsentity - ->
individualperson - ->
representativeperson - ->
ownersperson - ->
executivesperson - ->
directorsperson
- 对于所有非部分,在匹配行规则前去掉部分前缀。例如,将
account匹配为representative.first_name,将first_name匹配为company.address.city。address.city - 使用该部分行定义系列的以下行定义。仅当该部分中至少有一个字段匹配该行时,才创建该行。
- 行定义:
account: 商户类别代码: URL: 产品描述: 支持电话: 对账单描述符:
/business_profile.mcc//business_profile.(url|requirement)//business_profile.product_description//business_profile.support_phone//settings.payments.statement_descriptor/- /settings.card_payments.statement_descriptor/ 便利店支持电子邮件地址: 便利店支持电话号码:
/settings.konbini_payments.support_email/便利店支持时间:/settings.konbini_payments.support_phone/服务条款:/settings.konbini_payments.support_hours/发卡服务条款:/^tos_acceptance\./预计员工人数:/settings\.card_issuing\.tos_acceptance\./年收入:/business_profile\.estimated_worker_count/外部账户:/business_profile\.annual_revenue/法定监护人:/external_account//legal_guardian\./
entity: 公司名称: 公司名称(假名): 公司名称(汉字): 公司地址: 公司地址(假名): 公司地址(汉字): 公司电话: 公司税号: 公司注册号: 公司ID号: 营业执照: 公司章程: 银行账户证明: 提供董事信息: 提供所有者信息: 提供高管信息:
/name$//name_kana//name_kanji//address\..*//address_kana//address_kanji//phone//tax_id//registration_number//id_number//company_license//company_memorandum_of_association//bank_account_ownership_verification//directors_provided//owners_provided//executives_provided/person: 姓名: 姓名(假名): 姓名(汉字): 别名: 出生日期: 地址: 地址(假名): 地址(汉字): 注册地址: 电子邮件: 电话: 性别: 政治关联: 税务信息: 或 次要ID号: 职位: 与法律实体的关系: 国籍: 护照: 活体证明:
/(first|last)_name//(first|last)_name_kana//(first|last)_name_kanji//full_name_aliases//dob\.//^address\.//address_kana//address_kanji//registered_address//email//phone//gender//political_exposure//ssn_last_4$//id_number$//(id_number_secondary)//(relationship\.title)//relationship\.(?!title)//nationality//passport//proof_of_liveness/- 对于,将每个显示字段替换为
apiVersion=v2并使用v2_field_name。v2_alternatives - 如果且某个要求未公开
apiVersion=v2,则从渲染表格中省略该字段。如果这移除了行组中的所有字段,则省略该行。如果某个部分变为空,则省略该部分表格。v2_field_name
How to construct the JSON-style summary:
如何构建JSON格式摘要:
- if the user asks for a JSON summary of required items, return a JSON object in this exact shape. Each array holds zero or more field names:
json
{ "requirements": { "currently_due": [ "configuration.merchant.mcc", "company.name", "representative.first_name" ], "eventually_due": [ "business_profile.url" ] } }
Do not use ellipses () or placeholder strings in the output — list every field name explicitly.
...- this shape is a derived summary for comparison and display. It is not a raw Accounts API response.
- If , inform the user that this JSON is for information only, and doesn’t match the shape of a real API response.
apiVersion=v2 - derive each field’s due bucket from the requirement’s limit fields in the response:
get-requirements-for-setups- treat a field as when any unverified limit amount or time is
currently_due, or any verified limit amount or time is<= 0<= 0 - otherwise treat it as
eventually_due
- treat a field as
- populate and
requirements.currently_duefrom those derived bucketsrequirements.eventually_due - do not add a separate bucket. Regulatory or ORR-driven future changes are modeled through
future_requirementssetup selection and A/B setup comparison, not through a third due arrayorrProgram - for , use the raw requirement field names in both arrays
apiVersion=v1 - for , use
apiVersion=v2values in both arraysv2_field_name - If , omit fields that have no
apiVersion=v2v2_field_name - the JSON diff view compares requirement names only; it doesn’t diff verification text, thresholds, or supplemental metadata
- 如果用户要求所需项目的JSON摘要,返回以下精确格式的JSON对象。每个数组包含零个或多个字段名称:
json
{ "requirements": { "currently_due": [ "configuration.merchant.mcc", "company.name", "representative.first_name" ], "eventually_due": [ "business_profile.url" ] } }
输出中不要使用省略号()或占位符字符串——明确列出每个字段名称。
...- 此格式是用于对比和显示的派生摘要。它不是原始Accounts API响应。
- 如果,告知用户此JSON仅用于参考,与真实API响应的格式不匹配。
apiVersion=v2 - 根据响应中的要求限制字段,将每个字段分配到相应的到期类别:
get-requirements-for-setups- 当任何未验证限制金额或时间,或任何已验证限制金额或时间
<= 0时,将字段视为<= 0currently_due - 否则视为
eventually_due
- 当任何未验证限制金额或时间
- 从这些派生类别中填充和
requirements.currently_duerequirements.eventually_due - 不要添加单独的类别。监管或ORR驱动的未来变更通过
future_requirements配置选择和A/B配置对比建模,而非通过第三个到期数组orrProgram - 对于,在两个数组中使用原始要求字段名称
apiVersion=v1 - 对于,在两个数组中使用
apiVersion=v2值v2_field_name - 如果,省略没有
apiVersion=v2的字段v2_field_name - JSON差异视图仅对比要求名称;不对比验证文本、阈值或补充元数据
How to respond to users
如何回复用户
When you return results to the user:
- restate the exact validated setup you queried, including ,
apiVersion,platformCountry,accountCountry,dashboardType,tosType, optionallegalEntityType, selectedbusinessStructure, and optionalcapabilitiesorrProgram - always provide the user with a link containing the exact URL query parameters you used so they can view the requirements themselves and verify your conclusions
- for example: ->
https://docs.stripe.com/_endpoint/get-requirements-for-setups?account-setup-A[platformCountry]=CA&account-setup-A[accountCountry]=FR&account-setup-A[dashboardType]=full&account-setup-A[tosType]=full&account-setup-A[legalEntityType]=individual&account-setup-A[capabilities][0]=card_payments&account-setup-A[orrProgram]=eu-2025https://docs.stripe.com/connect/required-verification-information?accountSetupKeys=account-setup-A&account-setup-A%5BapiVersion%5D=v2&account-setup-A%5BplatformCountry%5D=CA&account-setup-A%5BaccountCountry%5D=FR&account-setup-A%5BdashboardType%5D=full&account-setup-A%5BtosType%5D=full&account-setup-A%5BlegalEntityType%5D=individual&account-setup-A%5BbusinessStructure%5D=undefined&account-setup-A%5Bcapabilities%5D=card_payments&account-setup-A%5BorrProgram%5D=eu-2025 - when comparing two setups, include in the page URL only if you validated and queried setup B
account-setup-B
- for example:
- if any requested choice had to be changed because of selector dependencies, say so explicitly before presenting the requirements
- present currently due requirements separately from eventually due requirements, and label them clearly
- explain verification bullets using as the source of truth
extras[].value - mention when a requirement was omitted because it matched none of the table row definitions in this document
- mention when website or MCC endpoints returned no supplemental data, so the user doesn’t mistake that for a fetch failure
- if you receive , ask the user to correct the setup inputs using the Interaction contract instead of guessing
validation_errors - if you receive , retry the request; if the error persists, tell the user the helper endpoint failed unexpectedly
build_errors
向用户返回结果时:
- 重述您查询的精确验证配置,包括、
apiVersion、platformCountry、accountCountry、dashboardType、tosType、可选的legalEntityType、所选的businessStructure以及可选的capabilitiesorrProgram - 始终向用户提供包含您使用的精确URL查询参数的链接,以便他们可以自行查看要求并验证您的结论
- 示例:->
https://docs.stripe.com/_endpoint/get-requirements-for-setups?account-setup-A[platformCountry]=CA&account-setup-A[accountCountry]=FR&account-setup-A[dashboardType]=full&account-setup-A[tosType]=full&account-setup-A[legalEntityType]=individual&account-setup-A[capabilities][0]=card_payments&account-setup-A[orrProgram]=eu-2025https://docs.stripe.com/connect/required-verification-information?accountSetupKeys=account-setup-A&account-setup-A%5BapiVersion%5D=v2&account-setup-A%5BplatformCountry%5D=CA&account-setup-A%5BaccountCountry%5D=FR&account-setup-A%5BdashboardType%5D=full&account-setup-A%5BtosType%5D=full&account-setup-A%5BlegalEntityType%5D=individual&account-setup-A%5BbusinessStructure%5D=undefined&account-setup-A%5Bcapabilities%5D=card_payments&account-setup-A%5BorrProgram%5D=eu-2025 - 对比两个配置时,仅当您验证并查询了配置B,才在页面URL中包含
account-setup-B
- 示例:
- 如果任何请求的选择因选择器依赖关系而被更改,请在展示要求前明确说明
- 将当前到期的要求与最终到期的要求分开展示,并清晰标注
- 使用作为权威来源解释验证项目符号
extras[].value - 提及因不符合本文档中的表格行定义而被省略的要求
- 提及网站或MCC端点未返回补充数据,以免用户误以为是获取失败
- 如果收到,请要求用户使用交互约定纠正配置输入,而非猜测
validation_errors - 如果收到,重试请求;如果错误持续,告知用户辅助端点意外失败
build_errors