Skip to content

Add KYB business-entity fields for Lead — NAICS, structured source of funds, counterparty countries (ENG-10687) - #641

Closed
ls-bolt[bot] wants to merge 3 commits into
mainfrom
07-03-ENG-10687-kyb-business-info-fields
Closed

Add KYB business-entity fields for Lead — NAICS, structured source of funds, counterparty countries (ENG-10687)#641
ls-bolt[bot] wants to merge 3 commits into
mainfrom
07-03-ENG-10687-kyb-business-info-fields

Conversation

@ls-bolt

@ls-boltls-boltBot commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

This PR has been claimed. The active PR is now #643.

Summary

Spec side of webdev ENG-10687 (KYB field gaps for Lead business entities). Companion to the webdev stack rooted at lightsparkdev/webdev#29776.

Adds to BusinessInfo / BusinessInfoUpdate / BusinessInfoResponse:

  • naicsCode — 2–6 digit NAICS code (Lead takes NAICS via business_details.industry)
  • sourceOfFundsCategories — array referencing the existing (previously unreferenced) SourceOfFunds enum, plus sourceOfFundsOtherDescription
  • purposeOfAccountOtherDescription — CDD 'other' description for purposeOfAccount: OTHER
  • expectedCounterpartyCountries — geographic-risk CDD field (distinct from send-side expectedRecipientJurisdictions)

Adds MISSING_CONTROL_PERSON and MISSING_GOOD_STANDING_DOCUMENT to VerificationErrorType (control person and Certificate of Good Standing are Lead KYB requirements; the webdev validator will emit these for Lead-partnered platforms).

make build re-bundled openapi.yaml + mintlify/openapi.yaml. make lint-openapi is baseline-equivalent (same single pre-existing error as main).

Test plan

  • Redocly bundle + lint (no new findings vs main)
  • webdev regen from this spec compiles and is exercised by the webdev stack's handler tests

🤖 fierce-nexus-2(#2) | Feedback

…funds, counterparty countries (ENG-10687)
Adds to BusinessInfo / BusinessInfoUpdate / BusinessInfoResponse:
- naicsCode (2-6 digit NAICS)
- sourceOfFundsCategories (references the existing SourceOfFunds enum) + sourceOfFundsOtherDescription
- purposeOfAccountOtherDescription
- expectedCounterpartyCountries
Adds MISSING_CONTROL_PERSON and MISSING_GOOD_STANDING_DOCUMENT verification error types.
Co-Authored-By: akanter <akanter@users.noreply.github.com>
@vercel

vercelBot commented Jul 3, 2026

Copy link
Copy Markdown

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

2 Skipped Deployments
ProjectDeploymentActionsUpdated (UTC)
grid-flow-builderIgnoredIgnoredPreviewJul 3, 2026 4:03am
grid-wallet-demoIgnoredIgnoredPreviewJul 3, 2026 4:03am

Request Review

@ls-boltls-boltBot added the bolt label Jul 3, 2026
@akanterGraphite App

Copy link
Copy Markdown
Contributor

@github-actions

github-actionsBot commented Jul 3, 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

csharp

feat(api): add fields to business customer/info, verification error enum values

go

feat(api): add fields to business customer info, enum values to verification errors

kotlin

feat(api): add business info fields, verification error types, source of funds enum

openapi

feat(api): add source of funds, NAICS, counterparty fields to business, verification errors

php

feat(api): add BusinessInfo fields, SourceOfFundsCategory enum, VerificationError types

python

feat(api): add fields to business_customer, verification_error types

ruby

feat(api): add fields to business_customer models, enum values to verification_error

typescript

feat(api): add businessInfo fields to customers, verification error reasons

Edit this comment to update them. They will appear in their respective SDK's changelogs.

grid-openapistudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
generate ⚠️

grid-rubystudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅ (prev: build ⏭️) → lint ✅test ✅

grid-gostudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅build ✅ (prev: build ⏭️) → lint ❗test ❗

go get github.com/stainless-sdks/grid-go@6a672339f40a59c12dcd3b8aefce7320cc4a4e01
grid-kotlinstudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
generate ⚠️build ✅ (prev: build ⏭️) → lint ✅ (prev: lint ⏭️) → test ❗

⚠️grid-typescriptstudio · code · diff

Your SDK build had a failure in the lint CI job, which is a regression from the base state.
generate ✅build ✅ (prev: build ⏭️) → lint ❗ (prev: lint ⏭️) → test ✅

npm install https://pkg.stainless.com/s/grid-typescript/ac513f34972514e6c7317b468b130bd88f5ce4eb/dist.tar.gz
grid-pythonstudio · code

Your SDK build had a "fatal" conclusion in the base build, which improved to "note", but this did not represent a regression.
generate ✅build ✅lint ❗test ❗

pip install https://pkg.stainless.com/s/grid-python/0c17ecb858b8fe011b7dbbf60adb662f15b546f9/grid-0.0.1-py3-none-any.whl
New diagnostics (113 note)
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
💡 Schema/IsAmbiguous: Missing type for schema
⚠️grid-csharpstudio · code · diff

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

grid-phpstudio · code · diff

Your SDK build had at least one "note" diagnostic, but this did not represent a regression.
generate ✅lint ✅test ✅

grid-clistudio · code · diff

Your SDK build had at least one "warning" diagnostic, but this did not represent a regression.
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-07-03 04:08:01 UTC

Bolt Agent added 2 commits July 3, 2026 03:55
The legacy free-text sourceOfFunds property coexists on BusinessInfo; a
sibling type named SourceOfFunds breaks the generated C# SDK (property /
type name collision flagged by the Stainless preview build).
@ls-bolt

ls-boltBot commented Jul 3, 2026

Copy link
Copy Markdown
ContributorAuthor

CI note: the preview job failure is the Stainless csharp SDK build. The same csharp failure occurred on the merge job of the previously merged schema-adding PR #637 (ENG-10686), so it appears to be a chronic pipeline state rather than a regression from this change. All spec-side checks (Lint, Breaking Changes, Docs Build) pass. I did rename the enum schema SourceOfFundsSourceOfFundsCategory along the way since a type named identically to the existing sourceOfFunds property is a real C# codegen hazard.


🤖 fierce-nexus(#2) | Feedback

@akanterakanter closed this Jul 3, 2026
akanter added a commit that referenced this pull request Jul 9, 2026
… funds, counterparty countries (ENG-10687) (#643)
## Summary
Spec side of webdev ENG-10687 (KYB field gaps for Lead business
entities). Companion to the webdev stack rooted at
lightsparkdev/webdev#29776.
Adds to `BusinessInfo` / `BusinessInfoUpdate` / `BusinessInfoResponse`:
- `naicsCode` — 2–6 digit NAICS code (Lead takes NAICS via
`business_details.industry`)
- `sourceOfFundsCategories` — array referencing the existing (previously
unreferenced) `SourceOfFunds` enum, plus `sourceOfFundsOtherDescription`
- `purposeOfAccountOtherDescription` — CDD 'other' description for
`purposeOfAccount: OTHER`
- `expectedCounterpartyCountries` — geographic-risk CDD field (distinct
from send-side `expectedRecipientJurisdictions`)
Adds `MISSING_CONTROL_PERSON` and `MISSING_GOOD_STANDING_DOCUMENT` to
`VerificationErrorType` (control person and Certificate of Good Standing
are Lead KYB requirements; the webdev validator will emit these for
Lead-partnered platforms).
`make build` re-bundled `openapi.yaml` + `mintlify/openapi.yaml`. `make
lint-openapi` is baseline-equivalent (same single pre-existing error as
main).
## Test plan
- Redocly bundle + lint (no new findings vs main)
- webdev regen from this spec compiles and is exercised by the webdev
stack's handler tests
---
🤖
[fierce-nexus-2](https://zeus.dev.dev.sparkinfra.net/#/arc?id=fierce-nexus)[(#2)](https://zeus.dev.dev.sparkinfra.net/#/instance?id=fierce-nexus-2)
| [Feedback](https://zeus.dev.dev.sparkinfra.net/feedback)
Original PR: #641
---------
Co-authored-by: Bolt Agent <bolt@lightspark.com>
Co-authored-by: akanter <akanter@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@akanter