Skip to content

Commit 5dd160b

Browse files
claude[bot]github-actions[bot]claude
authored
chore: Sync docs and samples with recent schema changes (#314)
## Summary - Add 12 missing account types to Grid Visualizer data (AED_ACCOUNT, BWP_ACCOUNT, XAF_ACCOUNT, BDT_ACCOUNT, COP_ACCOUNT, EGP_ACCOUNT, GHS_ACCOUNT, GTQ_ACCOUNT, HTG_ACCOUNT, JMD_ACCOUNT, PKR_ACCOUNT, ETHEREUM_WALLET) - Add UNSUPPORTED and CHECKED_BY_RECEIVING_FI beneficiary verification statuses to sandbox documentation with test suffixes 106/107 - Fix missing imports in Kotlin sample app ExternalAccounts.kt for buildAccountInfo helper function ## Changes by Area ### Grid Visualizer (`components/grid-visualizer/src/data/account-types.ts`) Added 12 account types that were present in the OpenAPI ExternalAccountType enum but missing from the visualizer data: - ETHEREUM_WALLET (crypto) - AED_ACCOUNT, EGP_ACCOUNT (MENA region) - BWP_ACCOUNT, XAF_ACCOUNT (Africa mobile money) - BDT_ACCOUNT, PKR_ACCOUNT (South Asia) - COP_ACCOUNT (Latin America) - GHS_ACCOUNT, GTQ_ACCOUNT, HTG_ACCOUNT, JMD_ACCOUNT (emerging markets) ### Mintlify Docs (`mintlify/snippets/sandbox-beneficiary-verification.mdx`) Added two verification statuses that were in the BeneficiaryVerificationStatus enum but missing from the sandbox testing documentation: - `106` → UNSUPPORTED (payment rail doesn't support name verification) - `107` → CHECKED_BY_RECEIVING_FI (deferred to receiving FI, e.g., ACH) ### Kotlin Sample (`samples/kotlin/.../ExternalAccounts.kt`) Added missing imports required by the buildAccountInfo helper function: - UsdBeneficiary, UsdExternalAccountInfo - BrlBeneficiary, BrlExternalAccountInfo - MxnBeneficiary, MxnExternalAccountInfo - GbpBeneficiary, GbpExternalAccountInfo - ExternalAccountInfoOneOf ## Test plan - [ ] Verify Grid Visualizer builds successfully with `npm run build` in `components/grid-visualizer` - [ ] Verify OpenAPI lint passes with `make lint-openapi` - [ ] Verify Kotlin sample compiles with `./gradlew build` in `samples/kotlin` 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
1 parent 1fdceed commit 5dd160b

3 files changed

Lines changed: 123 additions & 0 deletions

File tree

components/grid-visualizer/src/data/account-types.ts

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,4 +277,116 @@ export const accountTypeSpecs: Record<string, AccountTypeSpec> = {
277277
],
278278
beneficiaryRequired: false,
279279
},
280+
ETHEREUM_WALLET: {
281+
accountType: 'ETHEREUM_WALLET',
282+
fields: [
283+
{ name: 'address', example: '0xAbCDEF1234567890aBCdEf1234567890ABcDef12' },
284+
],
285+
beneficiaryRequired: false,
286+
},
287+
AED_ACCOUNT: {
288+
accountType: 'AED_ACCOUNT',
289+
fields: [
290+
{ name: 'iban', example: 'AE070331234567890123456', description: 'UAE IBAN (23 characters)' },
291+
{ name: 'swiftCode', example: 'EBILAEAD', description: 'Optional' },
292+
],
293+
paymentRails: ['BANK_TRANSFER'],
294+
beneficiaryRequired: true,
295+
},
296+
BWP_ACCOUNT: {
297+
accountType: 'BWP_ACCOUNT',
298+
fields: [
299+
{ name: 'phoneNumber', example: '+26771234567' },
300+
{ name: 'provider', example: 'Orange', description: 'Mobile money provider' },
301+
],
302+
paymentRails: ['MOBILE_MONEY'],
303+
beneficiaryRequired: true,
304+
},
305+
XAF_ACCOUNT: {
306+
accountType: 'XAF_ACCOUNT',
307+
fields: [
308+
{ name: 'phoneNumber', example: '+237671234567' },
309+
{ name: 'provider', example: 'MTN', description: 'Mobile money provider' },
310+
{ name: 'region', example: 'CM', description: 'Country code (CM or CG)' },
311+
],
312+
paymentRails: ['MOBILE_MONEY'],
313+
beneficiaryRequired: true,
314+
},
315+
BDT_ACCOUNT: {
316+
accountType: 'BDT_ACCOUNT',
317+
fields: [
318+
{ name: 'accountNumber', example: '1234567890123' },
319+
{ name: 'branchCode', example: '12345', description: '5-digit branch code' },
320+
{ name: 'phoneNumber', example: '+8801712345678' },
321+
{ name: 'swiftCode', example: 'BABORUMMYYY', description: 'Optional' },
322+
],
323+
paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'],
324+
beneficiaryRequired: true,
325+
},
326+
COP_ACCOUNT: {
327+
accountType: 'COP_ACCOUNT',
328+
fields: [
329+
{ name: 'accountNumber', example: '1234567890' },
330+
{ name: 'bankAccountType', example: 'SAVINGS', description: 'CHECKING or SAVINGS' },
331+
{ name: 'phoneNumber', example: '+573001234567' },
332+
],
333+
paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'],
334+
beneficiaryRequired: true,
335+
},
336+
EGP_ACCOUNT: {
337+
accountType: 'EGP_ACCOUNT',
338+
fields: [
339+
{ name: 'accountNumber', example: '1234567890123456' },
340+
{ name: 'iban', example: 'EG380019000500000000263180002', description: 'Optional' },
341+
{ name: 'swiftCode', example: 'NBEGEGCX', description: 'Optional' },
342+
],
343+
paymentRails: ['BANK_TRANSFER'],
344+
beneficiaryRequired: true,
345+
},
346+
GHS_ACCOUNT: {
347+
accountType: 'GHS_ACCOUNT',
348+
fields: [
349+
{ name: 'accountNumber', example: '1234567890' },
350+
{ name: 'phoneNumber', example: '+233241234567' },
351+
],
352+
paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'],
353+
beneficiaryRequired: true,
354+
},
355+
GTQ_ACCOUNT: {
356+
accountType: 'GTQ_ACCOUNT',
357+
fields: [
358+
{ name: 'accountNumber', example: '1234567890' },
359+
{ name: 'phoneNumber', example: '+50212345678' },
360+
],
361+
paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'],
362+
beneficiaryRequired: true,
363+
},
364+
HTG_ACCOUNT: {
365+
accountType: 'HTG_ACCOUNT',
366+
fields: [
367+
{ name: 'phoneNumber', example: '+50934567890' },
368+
],
369+
paymentRails: ['MOBILE_MONEY'],
370+
beneficiaryRequired: true,
371+
},
372+
JMD_ACCOUNT: {
373+
accountType: 'JMD_ACCOUNT',
374+
fields: [
375+
{ name: 'accountNumber', example: '1234567890' },
376+
{ name: 'branchCode', example: '12345', description: '5-digit branch code' },
377+
{ name: 'bankAccountType', example: 'CHECKING', description: 'CHECKING or SAVINGS' },
378+
],
379+
paymentRails: ['BANK_TRANSFER'],
380+
beneficiaryRequired: true,
381+
},
382+
PKR_ACCOUNT: {
383+
accountType: 'PKR_ACCOUNT',
384+
fields: [
385+
{ name: 'accountNumber', example: '1234567890123456' },
386+
{ name: 'phoneNumber', example: '+923001234567' },
387+
{ name: 'iban', example: 'PK36SCBL0000001123456702', description: 'Optional' },
388+
],
389+
paymentRails: ['BANK_TRANSFER', 'MOBILE_MONEY'],
390+
beneficiaryRequired: true,
391+
},
280392
};

mintlify/snippets/sandbox-beneficiary-verification.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@ For account types that support beneficiary name verification, you can simulate d
66
| **103** | `PARTIAL_MATCH` | Account is valid, name is a fuzzy match |
77
| **104** | `PENDING` | Verification still in progress |
88
| **105** | _(error)_ | Returns `400` — invalid account |
9+
| **106** | `UNSUPPORTED` | Payment rail does not support name verification |
10+
| **107** | `CHECKED_BY_RECEIVING_FI` | Verification deferred to receiving financial institution (e.g., ACH) |
911
| **109** | _(error)_ | Returns `500` — simulated API error |
1012
| **Any other** | `MATCHED` | Account is valid, name matches exactly |

samples/kotlin/src/main/kotlin/com/grid/sample/routes/ExternalAccounts.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,19 @@ package com.grid.sample.routes
22

33
import com.fasterxml.jackson.databind.JsonNode
44
import com.lightspark.grid.models.customers.externalaccounts.Address
5+
import com.lightspark.grid.models.customers.externalaccounts.BrlBeneficiary
6+
import com.lightspark.grid.models.customers.externalaccounts.BrlExternalAccountInfo
57
import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountCreate
68
import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountCreateParams
9+
import com.lightspark.grid.models.customers.externalaccounts.ExternalAccountInfoOneOf
10+
import com.lightspark.grid.models.customers.externalaccounts.GbpBeneficiary
11+
import com.lightspark.grid.models.customers.externalaccounts.GbpExternalAccountInfo
712
import com.lightspark.grid.models.customers.externalaccounts.InrBeneficiary
813
import com.lightspark.grid.models.customers.externalaccounts.InrExternalAccountInfo
14+
import com.lightspark.grid.models.customers.externalaccounts.MxnBeneficiary
15+
import com.lightspark.grid.models.customers.externalaccounts.MxnExternalAccountInfo
16+
import com.lightspark.grid.models.customers.externalaccounts.UsdBeneficiary
17+
import com.lightspark.grid.models.customers.externalaccounts.UsdExternalAccountInfo
918
import com.lightspark.grid.models.platform.externalaccounts.InrAccountInfo
1019
import com.grid.sample.GridClientBuilder
1120
import com.grid.sample.JsonUtils

0 commit comments

Comments
 (0)