From 381a3d03047b784ababd207d0e073535a0baca74 Mon Sep 17 00:00:00 2001 From: "claude[bot]" <41898282+claude[bot]@users.noreply.github.com> Date: Wed, 1 Apr 2026 08:36:11 +0000 Subject: [PATCH] chore: Sync docs and samples with schema changes Update documentation and sample code to match recent OpenAPI schema changes: - Add 12 missing account types to Grid Visualizer (AED, BWP, XAF, BDT, COP, EGP, GHS, GTQ, HTG, JMD, PKR accounts and ETHEREUM_WALLET) - Add UNSUPPORTED and CHECKED_BY_RECEIVING_FI verification statuses to sandbox documentation with test suffixes 106/107 - Fix missing imports in Kotlin sample app for USD, BRL, MXN, GBP account types and ExternalAccountInfoOneOf Co-Authored-By: Claude Opus 4.5 --- .../grid-visualizer/src/data/account-types.ts | 112 ++++++++++++++++++ .../sandbox-beneficiary-verification.mdx | 2 + .../grid/sample/routes/ExternalAccounts.kt | 9 ++ 3 files changed, 123 insertions(+) diff --git a/components/grid-visualizer/src/data/account-types.ts b/components/grid-visualizer/src/data/account-types.ts index 82983eea..0b5bcbf2 100644 --- a/components/grid-visualizer/src/data/account-types.ts +++ b/components/grid-visualizer/src/data/account-types.ts @@ -277,4 +277,116 @@ export const accountTypeSpecs: Record = { ], beneficiaryRequired: false, }, + ETHEREUM_WALLET: { + accountType: 'ETHEREUM_WALLET', + fields: [ + { name: 'address', example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12' }, + ], + beneficiaryRequired: false, + }, + AED_ACCOUNT: { + accountType: 'AED_ACCOUNT', + fields: [ + { name: 'iban', example: 'AE070331234567890123456', description: 'UAE IBAN (23 characters)' }, + { name: 'swiftCode', example: 'EBILAEAD', description: 'Optional' }, + ], + paymentRails: ['BANK_TRANSFER'], + beneficiaryRequired: true, + }, + BWP_ACCOUNT: { + accountType: 'BWP_ACCOUNT', + fields: [ + { name: 'phoneNumber', example: '+26771234567' }, + { name: 'provider', example: 'Orange', description: 'Mobile money provider' }, + ], + paymentRails: ['MOBILE_MONEY'], + beneficiaryRequired: true, + }, + XAF_ACCOUNT: { + accountType: 'XAF_ACCOUNT', + fields: [ + { name: 'phoneNumber', example: '+237671234567' }, + { name: 'provider', example: 'MTN', description: 'Mobile money provider' }, + { name: 'region', example: 'CM', description: 'Country code (CM or CG)' }, + ], + paymentRails: ['MOBILE_MONEY'], + beneficiaryRequired: true, + }, + BDT_ACCOUNT: { + accountType: 'BDT_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890123' }, + { name: 'branchCode', example: '12345', description: '5-digit branch code' }, + { name: 'phoneNumber', example: '+8801712345678' }, + { name: 'swiftCode', example: 'BABORUMMYYY', description: 'Optional' }, + ], + paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'], + beneficiaryRequired: true, + }, + COP_ACCOUNT: { + accountType: 'COP_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890' }, + { name: 'bankAccountType', example: 'SAVINGS', description: 'CHECKING or SAVINGS' }, + { name: 'phoneNumber', example: '+573001234567' }, + ], + paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'], + beneficiaryRequired: true, + }, + EGP_ACCOUNT: { + accountType: 'EGP_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890123456' }, + { name: 'iban', example: 'EG380019000500000000263180002', description: 'Optional' }, + { name: 'swiftCode', example: 'NBEGEGCX', description: 'Optional' }, + ], + paymentRails: ['BANK_TRANSFER'], + beneficiaryRequired: true, + }, + GHS_ACCOUNT: { + accountType: 'GHS_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890' }, + { name: 'phoneNumber', example: '+233241234567' }, + ], + paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'], + beneficiaryRequired: true, + }, + GTQ_ACCOUNT: { + accountType: 'GTQ_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890' }, + { name: 'phoneNumber', example: '+50212345678' }, + ], + paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'], + beneficiaryRequired: true, + }, + HTG_ACCOUNT: { + accountType: 'HTG_ACCOUNT', + fields: [ + { name: 'phoneNumber', example: '+50934567890' }, + ], + paymentRails: ['MOBILE_MONEY'], + beneficiaryRequired: true, + }, + JMD_ACCOUNT: { + accountType: 'JMD_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890' }, + { name: 'branchCode', example: '12345', description: '5-digit branch code' }, + { name: 'bankAccountType', example: 'CHECKING', description: 'CHECKING or SAVINGS' }, + ], + paymentRails: ['BANK_TRANSFER'], + beneficiaryRequired: true, + }, + PKR_ACCOUNT: { + accountType: 'PKR_ACCOUNT', + fields: [ + { name: 'accountNumber', example: '1234567890123456' }, + { name: 'phoneNumber', example: '+923001234567' }, + { name: 'iban', example: 'PK36SCBL0000001123456702', description: 'Optional' }, + ], + paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'], + beneficiaryRequired: true, + }, }; diff --git a/mintlify/snippets/sandbox-beneficiary-verification.mdx b/mintlify/snippets/sandbox-beneficiary-verification.mdx index a75fc3cf..2efcf958 100644 --- a/mintlify/snippets/sandbox-beneficiary-verification.mdx +++ b/mintlify/snippets/sandbox-beneficiary-verification.mdx @@ -6,5 +6,7 @@ For account types that support beneficiary name verification, you can simulate d | **103** | `PARTIAL_MATCH` | Account is valid, name is a fuzzy match | | **104** | `PENDING` | Verification still in progress | | **105** | _(error)_ | Returns `400` — invalid account | +| **106** | `UNSUPPORTED` | Payment rail does not support name verification | +| **107** | `CHECKED_BY_RECEIVING_FI` | Verification deferred to receiving financial institution (e.g., ACH) | | **109** | _(error)_ | Returns `500` — simulated API error | | **Any other** | `MATCHED` | Account is valid, name matches exactly | diff --git a/samples/kotlin/src/main/kotlin/com/grid/sample/routes/ExternalAccounts.kt b/samples/kotlin/src/main/kotlin/com/grid/sample/routes/ExternalAccounts.kt index 2dedbff6..486692ef 100644 --- a/samples/kotlin/src/main/kotlin/com/grid/sample/routes/ExternalAccounts.kt +++ b/samples/kotlin/src/main/kotlin/com/grid/sample/routes/ExternalAccounts.kt @@ -2,10 +2,19 @@ package com.grid.sample.routes import com.fasterxml.jackson.databind.JsonNode import com.lightspark.grid.models.customers.externalaccounts.Address +import com.lightspark.grid.models.customers.externalaccounts.BrlBeneficiary +import com.lightspark.grid.models.customers.externalaccounts.BrlExternalAccountInfo import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountCreate import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountCreateParams +import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountInfoOneOf +import com.lightspark.grid.models.customers.externalaccounts.GbpBeneficiary +import com.lightspark.grid.models.customers.externalaccounts.GbpExternalAccountInfo import com.lightspark.grid.models.customers.externalaccounts.InrBeneficiary import com.lightspark.grid.models.customers.externalaccounts.InrExternalAccountInfo +import com.lightspark.grid.models.customers.externalaccounts.MxnBeneficiary +import com.lightspark.grid.models.customers.externalaccounts.MxnExternalAccountInfo +import com.lightspark.grid.models.customers.externalaccounts.UsdBeneficiary +import com.lightspark.grid.models.customers.externalaccounts.UsdExternalAccountInfo import com.lightspark.grid.models.platform.externalaccounts.InrAccountInfo import com.grid.sample.GridClientBuilder import com.grid.sample.JsonUtils