Skip to content

External Accounts Updates#202

Open
AaryamanBhute wants to merge 8 commits intomainfrom
changes-present
Open

External Accounts Updates#202
AaryamanBhute wants to merge 8 commits intomainfrom
changes-present

Conversation

@AaryamanBhute
Copy link
Contributor

No description provided.

@github-actions
Copy link

github-actions bot commented Feb 17, 2026

✱ Stainless preview builds

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

kotlin

feat: External Accounts Updates

openapi

feat(api): add 10 currency accounts, remove 7 legacy types, add originalQuoteId to quotes

python

feat(api): add BRL/DKK/GBP/HKD/IDR/INR/MXN/MYR/PHP/SGD/THB/USD/VND account types, quote field

typescript

feat(api): add BRL/DKK/GBP/HKD/IDR/INR/MXN/MYR/PHP/SGD/THB/USD/VND account types

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

grid-openapi studio · code · diff

Your SDK built successfully.
generate ✅ (prev: generate ❗)

New diagnostics (16 note)
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
grid-python studio · code · diff

Your SDK built successfully.
generate ✅ (prev: generate ❗) → build ✅lint ✅test ✅

pip install https://pkg.stainless.com/s/grid-python/6500d41ad1c1ade353ad6e455f3b58c05dcd18ff/grid-0.0.1-py3-none-any.whl
New diagnostics (13 note)
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
grid-kotlin studio · code · diff

Your SDK built successfully.
generate ✅ (prev: generate ❗) → build ✅lint ✅test ✅

New diagnostics (36 note)
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
grid-typescript studio · code · diff

Your SDK built successfully.
generate ✅ (prev: generate ❗) → build ✅lint ✅test ✅

npm install https://pkg.stainless.com/s/grid-typescript/a460a9ec161c75a02a5e04e81eccb5deab3dd821/dist.tar.gz
New diagnostics (14 note)
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.
💡 Schema/RequiredPropertyNotDefined: This schema marks `accountType` as `required`, but it isn't defined in `properties`, so it will be ignored.

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-02-18 21:25:39 UTC

Co-authored-by: Cursor <cursoragent@cursor.com>
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 17, 2026

Greptile Summary

This PR refactors the external account schema from a payment-method-based model (e.g. US_ACCOUNT, CLABE, PIX, IBAN) to a currency-based model (e.g. USD_ACCOUNT, BRL_ACCOUNT, MXN_ACCOUNT). It adds 13 new currency-specific *ExternalAccountInfo schemas and matching *AccountInfo/*Beneficiary common schemas, while removing the old account-type-specific files. Each currency now has its own account info schema and a per-currency individual beneficiary, paired with the existing BusinessBeneficiary.

Key changes:

  • Removed from ExternalAccountType: US_ACCOUNT, CLABE, PIX, IBAN, UPI, NGN_ACCOUNT, CAD_ACCOUNT
  • Added to ExternalAccountType: BRL_ACCOUNT, DKK_ACCOUNT, HKD_ACCOUNT, IDR_ACCOUNT, INR_ACCOUNT, MXN_ACCOUNT, MYR_ACCOUNT, THB_ACCOUNT, USD_ACCOUNT, VND_ACCOUNT
  • GBP_ACCOUNT, PHP_ACCOUNT, and SGD_ACCOUNT are retained but now point to new *ExternalAccountInfo files with per-currency beneficiary schemas
  • The discriminator mappings across BaseExternalAccountInfo, ExternalAccountInfoOneOf, and ExternalAccountType are consistent with each other

Issues found:

  • Critical: The request body examples in customers_external_accounts.yaml and platform_external_accounts.yaml still use accountType: US_ACCOUNT with accountCategory: CHECKING — both are no longer valid under the new schema (the enum value is removed and the field doesn't exist in UsdAccountInfo)
  • Breaking regression: UsdAccountInfo is missing the accountCategory field (CHECKING/SAVINGS) that was required in the old UsAccountInfo, as well as validation patterns and examples for accountNumber/routingNumber
  • Incorrect field name: IdrAccountInfo uses sortCode, which is a UK banking concept not used in Indonesian banking
  • Inaccurate descriptions: BrlAccountInfo and InrAccountInfo describe beneficiary-owned fields (PIX key, VPA, tax ID) as belonging to "the bank"; HkdAccountInfo has redundant "bank name of the bank" phrasing

Confidence Score: 2/5

  • Not safe to merge — examples in two path files reference a now-invalid account type, and the USD account schema is missing a previously required field.
  • Two request body examples (customers and platform external accounts) use US_ACCOUNT with accountCategory: CHECKING, both of which are removed/absent in the new schema — these examples will fail validation. The new UsdAccountInfo is also missing the accountCategory field that was required in UsAccountInfo, which may be a breaking backend change. These are concrete logic errors that need to be resolved before merging.
  • openapi/paths/customers/customers_external_accounts.yaml, openapi/paths/platform/platform_external_accounts.yaml, and openapi/components/schemas/common/UsdAccountInfo.yaml need immediate attention before this PR can merge safely.

Important Files Changed

Filename Overview
openapi/components/schemas/external_accounts/ExternalAccountType.yaml Replaced old payment-method-based types (US_ACCOUNT, CLABE, PIX, IBAN, UPI, NGN_ACCOUNT, CAD_ACCOUNT) with currency-based types (USD_ACCOUNT, BRL_ACCOUNT, DKK_ACCOUNT, etc.). The enum now consistently uses currency codes as identifiers. Example value updated to GBP_ACCOUNT.
openapi/components/schemas/external_accounts/ExternalAccountInfoOneOf.yaml Updated oneOf list and discriminator mapping to match new currency-based account types. New account types (BRL, DKK, HKD, IDR, INR, MXN, MYR, PHP, SGD, THB, USD, VND) replace old payment-method-based schemas. Mapping is consistent with ExternalAccountType enum.
openapi/components/schemas/external_accounts/BaseExternalAccountInfo.yaml Discriminator mapping updated to reference new currency-specific ExternalAccountInfo files. Mapping is consistent across ExternalAccountType, ExternalAccountInfoOneOf, and BaseExternalAccountInfo.
openapi/components/schemas/common/UsdAccountInfo.yaml New USD account schema replacing US_ACCOUNT type. Missing accountCategory (CHECKING/SAVINGS) field that existed in UsAccountInfo, along with validation patterns and examples for accountNumber and routingNumber. This is a potential regression for API consumers.
openapi/components/schemas/common/IdrAccountInfo.yaml IDR (Indonesian Rupiah) account schema uses a "sortCode" field. Sort codes are a UK banking concept and not used in Indonesia's banking system. This field name appears to be incorrect for IDR/Indonesia.
openapi/components/schemas/common/BrlAccountInfo.yaml New BRL (Brazilian Real) account schema using PIX payment system. Field descriptions use "of the bank" phrasing that is inaccurate (e.g. pixKey, taxId belong to the account holder, not the bank).
openapi/paths/customers/customers_external_accounts.yaml Example still uses "accountType: US_ACCOUNT" with "accountCategory: CHECKING" for creating external accounts, but US_ACCOUNT was removed from ExternalAccountType in this PR and the new UsdAccountInfo lacks the accountCategory field. Example is now invalid.
openapi/components/schemas/common/InrAccountInfo.yaml New INR account schema using VPA (Virtual Payment Address). Field description "The VPA of the bank" is inaccurate - VPA belongs to the account holder, not the bank.
openapi/components/schemas/common/HkdAccountInfo.yaml New HKD account schema. Field descriptions contain redundant phrasing: "The bank name of the bank" and "The account number of the bank". No validation patterns or examples provided.
openapi/paths/platform/platform_external_accounts.yaml Example still references removed US_ACCOUNT type with accountCategory and bankName fields that no longer exist in UsdAccountInfo. Same issue as customers_external_accounts.yaml.

Flowchart

flowchart TD
    A[ExternalAccountCreateRequest] --> B[ExternalAccountInfoOneOf]
    B --> C{accountType discriminator}
    C --> D[BRL_ACCOUNT → BrlExternalAccountInfo]
    C --> E[DKK_ACCOUNT → DkkExternalAccountInfo]
    C --> F[GBP_ACCOUNT → GbpExternalAccountInfo]
    C --> G[HKD_ACCOUNT → HkdExternalAccountInfo]
    C --> H[IDR_ACCOUNT → IdrExternalAccountInfo]
    C --> I[INR_ACCOUNT → InrExternalAccountInfo]
    C --> J[MXN_ACCOUNT → MxnExternalAccountInfo]
    C --> K[MYR_ACCOUNT → MyrExternalAccountInfo]
    C --> L[PHP_ACCOUNT → PhpExternalAccountInfo]
    C --> M[SGD_ACCOUNT → SgdExternalAccountInfo]
    C --> N[THB_ACCOUNT → ThbExternalAccountInfo]
    C --> O[USD_ACCOUNT → UsdExternalAccountInfo]
    C --> P[VND_ACCOUNT → VndExternalAccountInfo]
    C --> Q[SPARK_WALLET / LIGHTNING / etc.]

    D --> R[BaseExternalAccountInfo + BrlAccountInfo]
    O --> S[BaseExternalAccountInfo + UsdAccountInfo]

    R --> T{beneficiary oneOf}
    S --> T
    T --> U[Individual: CurrencyBeneficiary]
    T --> V[Business: BusinessBeneficiary]

    style D fill:#f9f,stroke:#333
    style O fill:#f9f,stroke:#333
    style H fill:#ffa,stroke:#f00
    style S fill:#ffa,stroke:#f00
Loading

Last reviewed commit: 2032fbc

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

54 files reviewed, 7 comments

Edit Code Review Agent Settings | Greptile

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 17, 2026

Additional Comments (2)

openapi/paths/customers/customers_external_accounts.yaml
Stale example using removed account type

This example still uses accountType: US_ACCOUNT with accountCategory: CHECKING and bankName, but this PR removes US_ACCOUNT from the ExternalAccountType enum and replaces it with USD_ACCOUNT. The new UsdAccountInfo schema does not include accountCategory or bankName fields.

This example will now fail validation against the updated schema. It needs to be updated to use the new USD_ACCOUNT type and only include the fields defined in UsdAccountInfo (accountNumber, routingNumber).

                accountType: USD_ACCOUNT
                accountNumber: "12345678901"
                routingNumber: "123456789"
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/paths/customers/customers_external_accounts.yaml
Line: 127:131

Comment:
**Stale example using removed account type**

This example still uses `accountType: US_ACCOUNT` with `accountCategory: CHECKING` and `bankName`, but this PR removes `US_ACCOUNT` from the `ExternalAccountType` enum and replaces it with `USD_ACCOUNT`. The new `UsdAccountInfo` schema does not include `accountCategory` or `bankName` fields.

This example will now fail validation against the updated schema. It needs to be updated to use the new `USD_ACCOUNT` type and only include the fields defined in `UsdAccountInfo` (`accountNumber`, `routingNumber`).

```suggestion
                accountType: USD_ACCOUNT
                accountNumber: "12345678901"
                routingNumber: "123456789"
```

How can I resolve this? If you propose a fix, please make it concise.

openapi/paths/platform/platform_external_accounts.yaml
Stale example using removed account type

Same issue as in customers_external_accounts.yaml: this example uses accountType: US_ACCOUNT with accountCategory: CHECKING and bankName, but US_ACCOUNT is no longer a valid ExternalAccountType value in this PR, and the new UsdAccountInfo schema does not include accountCategory or bankName.

                accountType: USD_ACCOUNT
                accountNumber: "12345678901"
                routingNumber: "123456789"
Prompt To Fix With AI
This is a comment left during a code review.
Path: openapi/paths/platform/platform_external_accounts.yaml
Line: 89:93

Comment:
**Stale example using removed account type**

Same issue as in `customers_external_accounts.yaml`: this example uses `accountType: US_ACCOUNT` with `accountCategory: CHECKING` and `bankName`, but `US_ACCOUNT` is no longer a valid `ExternalAccountType` value in this PR, and the new `UsdAccountInfo` schema does not include `accountCategory` or `bankName`.

```suggestion
                accountType: USD_ACCOUNT
                accountNumber: "12345678901"
                routingNumber: "123456789"
```

How can I resolve this? If you propose a fix, please make it concise.

jklein24 and others added 7 commits February 18, 2026 13:18
)

### TL;DR

Extracted `CounterpartyInformation` into a separate reusable schema
component.

### What changed?

- Created a new schema component `CounterpartyInformation` that was
previously defined inline
- Updated references in the `Transaction` schema to use the new
component via `$ref`
- Applied these changes consistently across both the main OpenAPI file
and the modular component files

### How to test?

1. Validate that the OpenAPI spec still compiles correctly
2. Verify that API documentation renders the `CounterpartyInformation`
schema properly
3. Confirm that any endpoints using transactions with counterparty
information still function as expected

### Why make this change?

This refactoring improves the OpenAPI specification by:
- Promoting reusability of the `CounterpartyInformation` schema
- Making the schema more maintainable by defining it in a single
location
- Following best practices for OpenAPI schema organization
- Ensuring consistency if this schema needs to be referenced from other
components in the future
## Summary
- New documentation page at **Get started > Overview > Building with
AI** (before FAQ)
- Helps developers use AI coding assistants (Claude Code, Cursor,
Windsurf) with the Grid API
- Covers: skill installation, credential setup, example prompts by use
case, CLI command reference, llms.txt discovery, and tips for best
results
- Uses custom FeatureCard components with new Central Icons
(magnifying-glass, prompt, arrow-path-right, bug, console-sparkle)

## Test plan
- [x] Page renders at `/platform-overview/building-with-ai`
- [x] Appears in sidebar under Overview, before FAQ
- [x] Sidebar icon (console-sparkle) renders correctly
- [x] FeatureCards display with colored icons
- [x] Code blocks, tables, and Tip component render properly
- [x] Internal links (`/llms.txt`, `/llms-full.txt`) work

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Jeremy Klein <jklein24@gmail.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
more leftover from removing the retry quotes api
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Feb 18, 2026

Too many files changed for review. (118 files found, 100 file limit)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

Comments