Skip to content

docs(kyc): cover business customers in the hosted KYC/KYB link flow - #831

Merged
JasonCWang merged 1 commit into
mainfrom
docs/kyc-kyb-verification-options
Aug 20, 2026
Merged

docs(kyc): cover business customers in the hosted KYC/KYB link flow#831
JasonCWang merged 1 commit into
mainfrom
docs/kyc-kyb-verification-options

Conversation

@JasonCWang

@JasonCWang JasonCWang commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

What

Extends the existing unregulated-platform KYC/KYB content in Configuring customers so the hosted link flow covers business customers, not just individuals.

The hosted flow was documented only for INDIVIDUAL. Nothing told integrators that the same endpoint runs KYB for business customers, or what a business needs to supply before the link is generated — so that had to be walked through by hand.

This extends the guide that already covers both onboarding paths rather than adding a separate page:

  • Both customer types. POST /customers/{customerId}/kyc-link serves both, and customerType selects the flow — INDIVIDUAL tracked on kycStatus, BUSINESS on kybStatus. There is no dedicated KYB link endpoint. Says what the KYB applicant completes in the flow: company details, formation and ownership documents, control person, and beneficial owners at 25% or more.
  • Creation split into tabs. Individual keeps the existing example; business gains the fields POST /customers actually requires (legalName, country, taxId, incorporatedOn) plus the three groups that are optional to the schema but required in practice — contact channels, currency-driven via providerRequiredCustomerFields, and everything the review needs.
  • Prefill. Business information is prefilled into the hosted flow, so it should be supplied before the link is generated.
  • End-to-end steps generalized to cover both customer types, including correcting the places that referred to kycStatus for business customers.

The 003 suffix

A business registrationNumber not ending in 001, 002, or 003 auto-approves the customer on the spot in sandbox. The hosted flow then has nothing left to verify, so it asks for no documents and no beneficial owners — which looks exactly like a broken KYB flow. 003 avoids the auto-decision so document and UBO collection actually run.

The suffix table moved into a shared snippet, so the sandbox testing page and this guide can't drift apart.

Also

Broadens the kyc-link endpoint description to cover the KYB case and name the direct API alternative, rather than describing only individual identity verification.

Verification

  • make build + make lint — spec valid, 0 errors. Bundle diff is scoped to this one endpoint.
  • Rendered locally against Mintlify 4.2.284; heading anchor confirmed as #hosted-kyc-and-kyb-link-flow and the sandbox page's cross-link resolves to it.
  • mint broken-links reports nothing from any changed file.

Docs-only — no schema or behavior changes.

🤖 Generated with Claude Code

@mintlify

mintlify Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Preview deployment for your docs. Learn more about Mintlify Previews.

Project Status Preview Updated (UTC)
Grid 🟢 Ready View Preview Aug 13, 2026, 10:55 PM

@vercel

vercel Bot commented Aug 13, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

2 Skipped Deployments
Project Deployment Actions Updated (UTC)
grid-flow-builder Ignored Ignored Preview Aug 19, 2026 6:52pm
grid-wallet-demo Ignored Ignored Preview Aug 19, 2026 6:52pm

Request Review

@github-actions

github-actions Bot commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

✱ Stainless preview builds for grid

This PR will update the grid SDKs with the following commit messages.

cli

chore(internal): regenerate SDK with no functional changes

go

docs(api): expand customer verification flow documentation

kotlin

docs(api): update createKycLink documentation in customers

openapi

docs(api): update customer KYC link endpoint description for KYB support

php

docs(api): update createKYCLink documentation for customers

python

docs(api): expand customers verification link documentation

ruby

docs(api): expand customers verification link documentation

typescript

docs(api): update create_kyc_link documentation to include KYB support
⚠️ grid-openapi studio · code

Your SDK build had at least one "warning" diagnostic.
generate ⚠️

⚠️ grid-ruby studio · code

Your SDK build had at least one "warning" diagnostic.
generate ⚠️build ✅lint ✅test ✅

⚠️ grid-go studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ⚠️build ✅lint ❗test ❗

go get github.com/stainless-sdks/grid-go@422d3711de6c85992a87d96fc6ac0b4e009b8faf
⚠️ grid-kotlin studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
generate ⚠️build ✅lint ✅test ❗

⚠️ grid-typescript studio · conflict

Your SDK build had at least one warning diagnostic.

⚠️ grid-python studio · code

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ⚠️build ✅lint ❗test ❗

pip install https://pkg.stainless.com/s/grid-python/095c75daa613f8dfe32c0bdc0962b1dea80f213d/grid-0.0.1-py3-none-any.whl
⚠️ grid-php studio · code

Your SDK build had at least one "warning" diagnostic.
generate ⚠️lint ✅test ✅

⚠️ grid-cli studio · code

Your SDK build had a failure in the test CI job, which is a regression from the base state.
generate ⚠️build ⏭️lint ⏭️test ❗


This comment is auto-generated by GitHub Actions and is automatically kept up to date as you push.
If you push custom code to the preview branch, re-run this workflow to update the comment.
Last updated: 2026-08-20 00:47:11 UTC

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

⚠️ Breaking OpenAPI changes detected

oasdiff reports 283 error / 167 warning changes to openapi.yaml.
This PR will need approval from an API reviewer before merge.

Errors (283)

  • GET /agents/approvals — removed the required property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/approvals — removed the required property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/actions — removed the required property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/actions — removed the required property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/actions/{actionId} — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/actions/{actionId} — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/internal-accounts — removed the required property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/me/quotes — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • GET /agents/me/quotes/{quoteId} — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/me/quotes/{quoteId}/execute — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/me/quotes/{quoteId}/execute — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/transactions — removed the required property data/items/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /agents/me/transactions/{transactionId} — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/me/transfer-in — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /agents/me/transfer-in — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /agents/me/transfer-out — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /agents/me/transfer-out — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/approve — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/approve — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/reject — removed the required property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /agents/{agentId}/actions/{actionId}/reject — removed the required property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /customers — added subschema #3 to the oneOf[subschema #1: Individual Customer Create Request]/ request property allOf list [request-property-all-of-added].
  • POST /customers/external-accounts/{externalAccountId}/challenge — api path removed without deprecation [api-path-removed-without-deprecation].
  • POST /customers/external-accounts/{externalAccountId}/verify — api path removed without deprecation [api-path-removed-without-deprecation].
  • GET /customers/internal-accounts — removed the required property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • PATCH /internal-accounts/{id} — removed the required property fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /platform/external-accounts/{externalAccountId}/challenge — api path removed without deprecation [api-path-removed-without-deprecation].
  • POST /platform/external-accounts/{externalAccountId}/verify — api path removed without deprecation [api-path-removed-without-deprecation].
  • GET /platform/internal-accounts — removed the required property data/items/fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /quotes — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /quotes — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 202 status [response-required-property-removed].
  • GET /quotes/{quoteId} — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /quotes/{quoteId}/authorize — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /quotes/{quoteId}/execute — removed the required property paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /sandbox/internal-accounts/{accountId}/fund — removed the required property fundingPaymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /sandbox/send — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /transactions — removed the required property data/items/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • GET /transactions/{transactionId} — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /transactions/{transactionId}/cancel — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /transactions/{transactionId}/confirm — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 200 status [response-required-property-removed].
  • POST /transfer-in — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST /transfer-out — removed the required property oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/accountHolderName from the response with the 201 status [response-required-property-removed].
  • POST webhook:agent-action — the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/reference became required [request-property-became-required].
  • POST webhook:agent-action — the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/reference became required [request-property-became-required].
  • POST webhook:agent-action — removed the enum value COLLECTION_FAILED of the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #1: Incoming Transaction]/allOf[subschema #2]/failureReason [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value COMPLIANCE_REJECTED of the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #1: Incoming Transaction]/allOf[subschema #2]/failureReason [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value EXTERNAL_ACCOUNT.STATUS_UPDATED of the request property allOf[#/components/schemas/BaseWebhook]/type [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value INTERNAL_ACCOUNT.FUNDING_INSTRUCTIONS_UPDATED of the request property allOf[#/components/schemas/BaseWebhook]/type [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value OUTGOING_PAYMENT.PENDING_AUTHORIZATION of the request property allOf[#/components/schemas/BaseWebhook]/type [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #10: HKD Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #11: IDR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #12: MYR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #13: PHP Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #14: SGD Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #15: THB Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #16: VND Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #17: AED Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #18: KES Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #19: MWK Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #20: RWF Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #21: TZS Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #22: UGX Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #23: XOF Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #24: ZAR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #25: ZMW Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #26: BWP Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #27: XAF Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #28: BDT Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #29: ARS Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #2: BRL Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #30: COP Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #31: EGP Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #32: GHS Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #33: GTQ Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #34: HTG Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #35: JMD Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #36: PKR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #37: SLV Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #39: CNY Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #3: MXN Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #40: Spark Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #41: Lightning Invoice]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #42: Solana Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #43: Tron Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #44: Plasma Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #45: Polygon Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #46: Base Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #47: Ethereum Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #48: Bitcoin L1 Deposit Address]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #49: Embedded Wallet]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #4: DKK Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #5: EUR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #6: INR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #7: NGN Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #8: CAD Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #9: GBP Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #10: HKD Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • POST webhook:agent-action — removed the enum value SWIFT_ACCOUNT of the request property allOf[subschema #2]/data/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #11: IDR Account]/allOf[#/components/schemas/BasePaymentAccountInfo]/accountType [request-property-enum-value-removed].
  • …and 183 more errors.

Warnings (167)

Show sample
  • GET /agents/approvals — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #1: Incoming Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/approvals — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #1: Incoming Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions — removed the optional property data/items/transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property quote/allOf[#/components/schemas/Quote]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #1: Incoming Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[#/components/schemas/Transaction]/pendingReason from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #1: USD Bank Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • GET /agents/me/actions/{actionId} — removed the optional property transaction/allOf[#/components/schemas/TransactionOneOf]/oneOf[subschema #2: Outgoing Transaction]/allOf[subschema #2]/paymentInstructions/items/accountOrWalletInfo/oneOf[subschema #38: SWIFT Account]/allOf[subschema #3]/bankAddress from the response with the 200 status [response-optional-property-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #39: Base Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #40: Ethereum L1 Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #42: Polygon Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #43: Plasma Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #44: Solana Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #45: Spark Wallet]/ request property allOf list [request-property-all-of-removed].
  • POST /agents/me/external-accounts — removed #/components/schemas/WalletBeneficiaryFields from the allOf[subschema #1]/accountInfo/oneOf[subschema #46: Tron Wallet]/ request property allOf list [request-property-all-of-removed].
  • …and 142 more warnings.

Detected by oasdiff. Full report: job summary or the oasdiff-report artifact.

@greptile-apps

greptile-apps Bot commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

Extends the hosted verification documentation and endpoint description to cover business KYB alongside individual KYC.

  • Adds business customer creation, prefill, status-tracking, and hosted-flow guidance.
  • Centralizes sandbox KYB suffix behavior in a shared snippet.
  • Regenerates the root and Mintlify OpenAPI bundles from the updated source path.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
mintlify/snippets/kyc/kyc-unregulated.mdx Generalizes the hosted onboarding guide for individual KYC and business KYB, including creation examples, status handling, and sandbox advice.
mintlify/snippets/kyc/kyb-sandbox-suffixes.mdx Introduces reusable documentation for deterministic business-verification sandbox suffixes.
mintlify/snippets/sandbox-verification.mdx Replaces duplicated KYB suffix content with the shared snippet and links to the hosted-flow guide.
openapi/paths/customers/customers_{customerId}_kyc-link.yaml Broadens the hosted-link endpoint description to document business KYB behavior and the direct API alternative.
openapi.yaml Regenerates the bundled OpenAPI output with the updated hosted-link description.
mintlify/openapi.yaml Regenerates the Mintlify OpenAPI bundle with the updated hosted-link description.

Reviews (2): Last reviewed commit: "docs(kyc): cover business customers in t..." | Re-trigger Greptile

|--------|---------|
| `UNVERIFIED` | Created, not yet submitted. Generating a link does not move it off this value |
| `PENDING` | Submitted; review under way |
| `APPROVED` | Passed — unlock funding and money movement |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Approval omits the consent gate

When an unregulated platform has not recorded End User Terms consent, this row incorrectly presents KYC/KYB approval as sufficient to unlock funding and money movement, causing customer-scoped transactions to be rejected despite the documented guidance.

Suggested change
| `APPROVED` | Passed — unlock funding and money movement |
| `APPROVED` | Passed verification. For unregulated platforms, record End User Terms consent before enabling funding and money movement |

Knowledge Base Used: Customers and KYC

Prompt To Fix With AI
This is a comment left during a code review.
Path: mintlify/snippets/kyc/verification-options.mdx
Line: 90

Comment:
**Approval omits the consent gate**

When an unregulated platform has not recorded End User Terms consent, this row incorrectly presents KYC/KYB approval as sufficient to unlock funding and money movement, causing customer-scoped transactions to be rejected despite the documented guidance.

```suggestion
| `APPROVED` | Passed verification. For unregulated platforms, record End User Terms consent before enabling funding and money movement |
```

**Knowledge Base Used:** [Customers and KYC](https://app.greptile.com/lightspark/-/custom-context/knowledge-base/lightsparkdev/grid-api/-/docs/customers-and-kyc.md)

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

The hosted link flow was documented only for individual customers, so
nothing told integrators that the same endpoint runs KYB for business
customers, or what a business needs to supply before the link is
generated. That had to be explained by hand.

Extend the existing unregulated-platform KYC/KYB content in Configuring
customers rather than adding a separate page, since that guide already
covers both onboarding paths:

- State that POST /customers/{customerId}/kyc-link serves both customer
  types and that customerType selects the flow — INDIVIDUAL tracked on
  kycStatus, BUSINESS on kybStatus — and what the KYB applicant
  completes in the hosted flow.
- Split customer creation into individual and business tabs, with the
  fields POST /customers actually requires for a business customer and
  the three groups that are optional to the schema but required in
  practice (contact channels, currency-driven, review-driven).
- Note that business information is prefilled into the hosted flow, so
  it should be supplied before the link is generated.
- Generalize the end-to-end steps to cover both customer types, and
  correct the places that referred to kycStatus for business customers.

Document the 003 sandbox suffix: a business registration number not
ending in 001, 002, or 003 auto-approves the customer on the spot,
leaving the hosted flow nothing to verify, so it requests no documents
and no beneficial owners. That reads as a broken KYB flow but isn't.
The suffix table moves into a shared snippet so the sandbox testing page
and this guide stay in sync.

Also broaden the kyc-link endpoint description to cover the KYB case and
point at the direct API alternative.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@JasonCWang
JasonCWang force-pushed the docs/kyc-kyb-verification-options branch from c61a67f to d3ffbab Compare August 19, 2026 18:52
@JasonCWang JasonCWang changed the title docs(kyc): add a KYC/KYB verification page covering both onboarding paths docs(kyc): cover business customers in the hosted KYC/KYB link flow Aug 19, 2026
@JasonCWang
JasonCWang marked this pull request as draft August 19, 2026 18:52
@JasonCWang
JasonCWang marked this pull request as ready for review August 19, 2026 20:06
@JasonCWang
JasonCWang enabled auto-merge (squash) August 19, 2026 20:31
@JasonCWang
JasonCWang merged commit 25116a3 into main Aug 20, 2026
10 checks passed
@JasonCWang
JasonCWang deleted the docs/kyc-kyb-verification-options branch August 20, 2026 00:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Introduces a breaking change to the OpenAPI spec

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants