Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 53 additions & 18 deletions mintlify/openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions mintlify/payouts-and-b2b/payment-flow/send-payment.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,11 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/transfer-out' \
`remittanceInformation` is optional. Use it to send a reference that travels with the payment to the recipient (max 80 characters). This populates the ACH Addenda record, FedNow/RTP remittance information, or wire OBI field depending on the payment rail.
</Info>

<Info>
`purposeOfPayment` is optional and accepts the same values as on a quote. Some destinations
require it, and some rails carry it on the payment itself.
</Info>


```json Success (201 Created)
{
Expand Down
6 changes: 6 additions & 0 deletions mintlify/snippets/external-accounts.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,12 @@ curl -X POST 'https://api.lightspark.com/grid/2025-10-13/customers/external-acco
<Note>
Category must be `CHECKING` or `SAVINGS`. Routing number must be 9 digits.
</Note>

<Note>
Three further fields apply to the `WIRE` rail and are ignored on ACH, RTP and FedNow:
`intermediaryBankName` and `intermediaryRoutingNumber`, for a beneficiary bank reachable only
through a correspondent, and `fiToFiInformation` for bank-to-bank instructions.
</Note>
</Tab>

<Tab title="Mexico">
Expand Down
71 changes: 53 additions & 18 deletions openapi.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

45 changes: 45 additions & 0 deletions openapi/components/schemas/common/UsdAccountInfoBase.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,52 @@ properties:
minLength: 9
maxLength: 9
pattern: ^[0-9]{9}$
bankName:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@AaryamanBhute is this file one of the autogenerated ones from your workflow or is USD separate?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

It's autogenerated, I know @JasonCWang and @mohamedwane have been making changes to it though

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

On the autogenerated question — the history says it's both, which is worth knowing before this merges.

git log on UsdAccountInfoBase.yaml:

Peter.Rojs              Add USD account bank, account type and wire routing fields  (this PR)
lightspark-copybara     chore: Sync account schemas (#398)
Shreya Vissamsetti      Revert "chore: Sync account schemas" (#395)
lightspark-copybara     chore: Sync account schemas (#388)
Matt Davis              Add bankAccountType to USD, bankName/documentType/documentNumber to COP... (#352)
Aaryaman Bhute          Split request and response schemas for external account paymentRails (#302)

So lightspark-copybara[bot] does sync this file, but humans also edit it directly — #352 added bankAccountType to a currency schema by hand, which is exactly the shape of this change. And #395 reverted one of the syncs, so the sync isn't unconditionally authoritative either.

Nothing in this repo generates it locally: no scripts/ entry references it, and make build only bundles openapi/openapi.yaml. The one workflow that mentions the directory (docs-sync.yml) just reads these schemas to prompt reviewers about the grid-visualizer.

The practical risk: if a copybara sync runs from a source that doesn't yet have these five properties, it could silently drop them. If that source is upstream of this repo, the fields may need adding there too — otherwise this merges fine and a later sync quietly reverts it. @AaryamanBhute you'd know where that sync originates; happy to mirror the change there if you point me at it.


🤖 bridged-rampart-3(#3) | Feedback

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks — that's useful, and it flags a real risk I've detailed in the thread above: if the copybara sync originates from a source that lacks these five properties, a later sync would silently drop them.

Two questions where you'd know better than I can infer from history:

  1. Where does chore: Sync account schemas originate? If these fields also need to exist there, I'm happy to mirror the change so the sync doesn't revert it.
  2. Do the changes @JasonCWang and @mohamedwane have in flight touch UsdAccountInfoBase? If so, worth sequencing — I'm only adding optional properties (no required changes), so it should merge cleanly either way, but a concurrent sync is the case that would clobber it.

Also worth flagging for whoever merges: this is the spec half only. webdev's generated grid_api client has to be regenerated from the merged spec before the backend can accept these fields — its from_dict whitelists keys, so until then they're silently dropped rather than rejected.


🤖 bridged-rampart-3(#3) | Feedback

type: string
description: >-
The name of the financial institution holding the account. Optional on
every rail, and recommended for wires, where it identifies the
beneficiary's institution on the payment message.
example: Chase Bank
minLength: 1
maxLength: 140
bankAccountType:
type: string
description: >-
Whether the account is a checking or a savings account. Optional on every
rail; when omitted, the account is treated as a checking account.
enum:
- CHECKING
- SAVINGS
example: CHECKING
intermediaryBankName:
type: string
description: >-
The name of the intermediary financial institution, for accounts reachable
only through a correspondent bank. Used on the WIRE rail; ignored on ACH,
RTP and FEDNOW.
example: JPMorgan Chase Bank
minLength: 1
maxLength: 140
intermediaryRoutingNumber:
type: string
description: >-
The ABA routing number of the intermediary financial institution. Used on
the WIRE rail; ignored on ACH, RTP and FEDNOW.
example: '021000021'
minLength: 9
maxLength: 9
pattern: ^[0-9]{9}$
fiToFiInformation:
type: string
description: >-
Bank-to-bank instructions carried alongside the payment. Used on the WIRE
rail; ignored on ACH, RTP and FEDNOW.
example: /BNF/Invoice 4471
maxLength: 210
example:
accountType: USD_ACCOUNT
accountNumber: '1234567890'
routingNumber: '021000021'
bankName: Chase Bank
bankAccountType: CHECKING
2 changes: 2 additions & 0 deletions openapi/components/schemas/transfers/TransferOutRequest.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ properties:
remittanceInformation field, and for wires it populates the OBI
(Originator to Beneficiary Information) / beneficiary information.
example: '12345'
purposeOfPayment:
$ref: ../quotes/PurposeOfPayment.yaml
Loading