feat(transactions): add originator info to external funding source#544
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub. 1 Skipped Deployment
|
✱ Stainless preview builds for gridThis PR will update the cli csharp go kotlin openapi php python ruby typescript ✅ grid-ruby studio · code
✅ grid-kotlin studio · code
✅ grid-typescript studio · code
|
Greptile SummaryThis PR generalizes
Confidence Score: 5/5Safe to merge — additive schema change with no breaking modifications to existing fields or discriminator values. All changes are purely additive optional fields on an existing schema. The sourceType discriminator value is unchanged, existing required fields are untouched, and both bundled outputs are consistent with the source edit. No logic, auth, or data-mutation paths are involved. No files require special attention.
|
| Filename | Overview |
|---|---|
| openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml | Source schema updated: title changed to "External Funding Source", eight optional originator fields added, and description updated — changes are structurally correct and all new fields are properly marked optional. |
| openapi.yaml | Bundled root spec regenerated from source via make build; content is identical to the source changes in RealtimeFundingTransactionSource. |
| mintlify/openapi.yaml | Mintlify-bundled copy regenerated in sync with the root bundle; no independent changes. |
Class Diagram
%%{init: {'theme': 'neutral'}}%%
classDiagram
class BaseTransactionSource {
+sourceType: TransactionSourceType
+currency: string
}
class RealtimeFundingTransactionSource {
+sourceType: "REALTIME_FUNDING"
+currency: string [required]
+customerId: string [optional]
+accountHolderName: string [optional]
+accountIdentifier: string [optional]
+bankName: string [optional]
+bankIdentifier: string [optional]
+paymentRail: PaymentRail [optional]
+remittanceInformation: string [optional]
+endToEndId: string [optional]
+traceNumber: string [optional]
}
class PaymentRail {
<<enumeration>>
ACH
WIRE
RTP
FEDNOW
SEPA
SEPA_INSTANT
SWIFT
PIX
SPEI
FASTER_PAYMENTS
}
class TransactionSourceOneOf {
<<union>>
AccountTransactionSource
RealtimeFundingTransactionSource
UMAAddressTransactionSource
}
BaseTransactionSource <|-- RealtimeFundingTransactionSource : extends (allOf)
RealtimeFundingTransactionSource --> PaymentRail : paymentRail (allOf ref)
TransactionSourceOneOf ..> RealtimeFundingTransactionSource : oneOf
Prompt To Fix All With AI
Fix the following 1 code review issue. Work through them one at a time, proposing concise fixes.
---
### Issue 1 of 1
openapi/components/schemas/transactions/RealtimeFundingTransactionSource.yaml:45-52
The `remittanceInformation` description names the ACH Addenda, wire OBI, and RTP/FedNow fields, but the `PaymentRail` enum also includes `SEPA`, `SEPA_INSTANT`, `PIX`, `SWIFT`, `SPEI`, `FASTER_PAYMENTS`, and others. Developers integrating with those rails will find no guidance on where this field is sourced. Adding a brief catch-all phrase keeps the description accurate as more rails are supported.
```suggestion
remittanceInformation:
type: string
description: >-
Free-form information about the payment provided by the originator.
The source field depends on the payment rail: the Addenda record for
ACH, the OBI / beneficiary information for wires, the
remittanceInformation field for RTP and FedNow, and the equivalent
unstructured remittance field for other rails.
example: '12345'
```
Reviews (4): Last reviewed commit: "feat(transactions): add originator info ..." | Re-trigger Greptile
3bcc2db to
d263e34
Compare
|
d263e34 to
7b73705
Compare
642587d to
ad8d90c
Compare
Generalize the REALTIME_FUNDING transaction source into an External Funding Source and add inline originator information for externally-funded inbound payments: name, accountIdentifier, bankName, bankIdentifier, paymentRail, remittanceInformation, endToEndId, and traceNumber. Modeled on ISO 20022 debtor concepts. Lives on the funding source (not the transaction) because an external funding source only occurs on inbound payments, which isolates these fields to inbound without affecting outgoing transactions or quotes. Inbound senders may be unregistered third parties, so all originator fields are optional. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
ad8d90c to
b293757
Compare

Summary
Exposes structured originator (sender) information for externally-funded inbound (
INCOMING) payments by generalizing the existingREALTIME_FUNDINGtransaction source into an External Funding Source and adding originator fields inline. Fields are modeled on ISO 20022 (pacs.008 / camt) debtor concepts, the shared vocabulary the underlying rails (ACH, wire, RTP, FedNow, Spark, Stables) map onto.Why on this source
REALTIME_FUNDINGalready represents external funding across rails, so generalizing it (retitle + description) avoids an overlapping new source type.externalAccountId— originator details are carried inline.Changes to
RealtimeFundingTransactionSourcesourceTypediscriminator value staysREALTIME_FUNDING(no enum/union change).nameaccountIdentifierbankNamebankIdentifierpaymentRailPaymentRailenum)remittanceInformationendToEndIdtraceNumberOut of scope
externalAccountId(senders may be unregistered)REALTIME_FUNDINGdiscriminator value🤖 Generated with Claude Code