Skip to content

Add EXTERNAL_ACCOUNT.ACCOUNT_INFO_UPDATED webhook - #1100

Merged
AaryamanBhute merged 3 commits into
mainfrom
external-account-account-info-updated
Oct 15, 2026
Merged

AaryamanBhute merged 3 commits into
mainfrom
external-account-account-info-updated

Conversation

@AaryamanBhute

@AaryamanBhute AaryamanBhute commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds EXTERNAL_ACCOUNT.ACCOUNT_INFO_UPDATED. Grid sends it when it corrects an external account's accountInfo in place.

Today the only source is an ACH notification of change (NOC): the receiving bank returns corrected details, such as a new routing number, account number or bank account type. Grid now applies the correction to the account. Platforms that store account details need to hear about it, and EXTERNAL_ACCOUNT.STATUS_UPDATED only fires on a status change.

Changes

  • New value in WebhookType and in ExternalAccountStatusWebhook.type. With two values, that type enum is now its own schema, ExternalAccountStatusWebhookEventType, like the other webhook event types. The payload is the full ExternalAccount, the same as the status event. This follows the existing pattern where INTERNAL_ACCOUNT.FUNDING_INSTRUCTIONS_UPDATED shares the internal-account webhook.
  • external-account-status.yaml: describes the event and adds a corrected-routing-number example. Because deliveries can arrive out of order and the account carries no version field, the description tells platforms to fetch the current account before replacing stored details.
  • Changelog entry under October 2026.

Open question

The event name. I chose ACCOUNT_INFO_UPDATED so it matches the accountInfo field that changes. DETAILS_UPDATED or a generic UPDATED would also work. Happy to rename before this merges.

Test plan

  • make build
  • redocly lint (spectral not installed locally; CI covers it)

🤖 Generated with Claude Code

@mintlify

mintlify Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

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

Project Status Preview Updated
Grid 🟢 Ready View Preview Oct 15, 2026, 6:01 PM

@vercel

vercel Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

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

3 Skipped Deployments
Project Deployment Actions Updated
grid-cards-demo Ignored Ignored Preview Oct 15, 2026 6:00pm UTC
grid-flow-builder Ignored Ignored Preview Oct 15, 2026 6:00pm UTC
grid-wallet-demo Ignored Ignored Preview Oct 15, 2026 6:00pm UTC

Request Review

@greptile-apps

greptile-apps Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Critical impact] The PR appears safe to merge; no outstanding findings remain.

Summary

Adds EXTERNAL_ACCOUNT.ACCOUNT_INFO_UPDATED to the external-account webhook contract, with an example and guidance for reconciling out-of-order deliveries.

  • Extracts the external-account event types into a shared schema and updates both bundled OpenAPI files.
  • Documents the ACH notification-of-change use case in the webhook description and changelog.

Reviews (5) · Last reviewed commit: "Name the external account webhook event ..." · Reviewed by Greptile

Comment thread openapi/webhooks/external-account-status.yaml
Comment thread openapi/webhooks/external-account-status.yaml Outdated
@ls-bolt

ls-bolt Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

📌 Bolt Status

2026-09-30 19:52:58 UTC — ⚡ Agent dazzling-torrent-nt(#1) started
2026-10-02 22:45:14 UTC — ⚡ Agent dazzling-torrent-nt-2(#2) started
2026-10-15 17:52:18 UTC — ⚡ Agent dazzling-torrent-nt-3(#3) started


Feedback

Copy link
Copy Markdown
Contributor Author

@bolt fix CI and respond to comments

@ls-bolt

ls-bolt Bot commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

⚡ Review rounds — updated in place, latest first.

Round 3 · 0779e9d

  • Rebased onto main (1ac8d147). The only hand-resolved conflict was mintlify/changelog.mdx: main added a September entry in the same spot. Main's entry stays in September, and this PR's entry moves to the top of October 2026. I regenerated openapi.yaml and mintlify/openapi.yaml with make build.
  • 0779e9d7: main added the spectral rule no-inline-enums. ExternalAccountStatusWebhook.type now has two values, so the rule failed Lint. The enum moves to ExternalAccountStatusWebhookEventType.yaml, like the other *WebhookEventType schemas. Wire values are unchanged, and Detect breaking changes is green.
  • Verified: npm run lint exits 0 locally, and the adversarial review found nothing. All CI checks are green, and Greptile scored 0779e9d7 5/5 with no open threads.
Earlier rounds (2)

Round 2 · 2b51d04

  • Rebased onto main. The branch conflicted in mintlify/changelog.mdx with the sandbox-suffixes entry, and GitHub skips pull_request workflows while a PR has conflicts, so CI never ran on e2a718a9. Both changelog entries are kept, and the new entry's wording now matches the fetch-before-replace guidance.
  • Lint Code & Documentation failed twice in Install mint on npm 404/ETARGET while Mintlify packages were mid-publish. make lint runs before that step matters and never reaches the spec. An empty-tree amend re-triggered it, and it is now green.
  • Greptile re-reviewed 6d9e29fb: 5/5 with no findings.

Round 1 · e2a718a

Commits

  • 707e07b Add EXTERNAL_ACCOUNT.ACCOUNT_INFO_UPDATED webhook

  • e2a718a Complete USD example and advise re-fetching on out-of-order deliveries

  • e2a718a9: added paymentRails and beneficiary to the USD accountInfoCorrected example, and told platforms that deliveries can arrive out of order, so they should fetch the account before replacing stored details. Rebuilt openapi.yaml and mintlify/openapi.yaml.

  • CI: Lint Code & Documentation failed on a transient npm registry error (@mintlify/prebuild@1.0.1343 not yet published), not on the spec. This push re-runs it.

  • Verified: make build and redocly lint (0 errors). The adversarial review raised only the two Greptile findings, both fixed here.

Copy link
Copy Markdown

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ls-bolt

ls-bolt Bot commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

⚡ Review ledger

Round 1

  1. Incomplete USD webhook example (Greptile P2) → FIXED: e2a718a openapi/webhooks/external-account-status.yaml example now includes paymentRails + beneficiary
  2. Stored details can become stale on out-of-order delivery (Greptile P2) → FIXED: e2a718a, the description tells platforms to re-fetch the account before replacing stored details
  3. Failing Lint CI → NOT APPLICABLE (flake): transient npm ETARGET for @mintlify/prebuild; re-run by this push

@ls-bolt

ls-bolt Bot commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

@greptile review

Copy link
Copy Markdown
Contributor Author

@greptile review

@graphite-app

graphite-app Bot commented Oct 5, 2026 •

Copy link
Copy Markdown

Merge activity

  • Oct 5, 10:01 PM UTC: This pull request can not be added to the Graphite merge queue. Please try rebasing and resubmitting to merge when ready.
  • Oct 5, 10:01 PM UTC: Graphite disabled "merge when ready" on this PR due to: a merge conflict with the target branch; resolve the conflict and try again.

Copy link
Copy Markdown
Contributor Author

@bolt fix merge conflicts

AaryamanBhute and others added 2 commits October 15, 2026 17:53
Grid corrects a US external account's details when the receiving bank
sends an ACH notification of change. Platforms that store the account
details have no way to learn about the correction today.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: aaryamanbhute <aaryamanbhute@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ls-bolt

ls-bolt Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

@greptile review

The spectral no-inline-enums rule rejects an inline enum with more than one
value, so the type enum moves to ExternalAccountStatusWebhookEventType,
matching the other webhook event types.

Co-Authored-By: aaryamanbhute <aaryamanbhute@users.noreply.github.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@ls-bolt

ls-bolt Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

@greptile review

@ls-bolt

ls-bolt Bot commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Rebased onto main and fixed the conflicts. The PR is mergeable again and all checks are green. A new lint rule on main also failed Lint, so the event-type enum is now its own schema; the wire values are unchanged.


🤖 dazzling-torrent-nt-3(#3) | Feedback

@AaryamanBhute
AaryamanBhute merged commit 60c00c6 into main Oct 15, 2026
10 checks passed
@AaryamanBhute
AaryamanBhute deleted the external-account-account-info-updated branch October 15, 2026 18:39

Copy link
Copy Markdown
Contributor Author

@bolt make the webdev version bump for this PR

This branch was successfully deployed

1 active deployment
staging - mintlify — 0779e9d7 Deployed Oct 15, 2026 by mintlify[bot]
Sign up for free to 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.

3 participants