Skip to content

[Payment Type] Implement WireCreditPaymentInitiation #47

@svapnil

Description

@svapnil

All Fedwires and CHIPS wires are moving to ISO20022.

https://www.frbservices.org/resources/financial-services/wires/iso-20022-implementation-center#content

We need to build a class for sending Wires. (Technically this is compatible with both Fedwire and CHIPs)

The interface should look something like this:

const payment = checking.createWireCreditPaymentInitiation([
    {
        type: 'wire',
        direction: 'credit',
        amount: 100000, // $1000.00 Dollars
        currency: 'USD',
        creditor: {
            name: 'All-American Dogs Co.',
            account: {
                accountNumber: '123456789012',
            },
            agent: {
                abaRoutingNumber: '37714568112',
            }
        },
        remittanceInformation: '1000 Hot Dogs Mar4',
    }
]);

We should follow the format listed here:

Goldman Sachs

https://developer.gs.com/docs/services/transaction-banking/pain001fedwiresample/

Inline:

<?xml version="1.0" encoding="UTF-8" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>Message-Id</MsgId>
            <CreDtTm>2024-05-10T16:10:02.017+00:00</CreDtTm>
            <NbOfTxs>1</NbOfTxs>
            <CtrlSum>510.24</CtrlSum>
            <InitgPty>
                <Id>
                    <OrgId>
                        <Othr>
                            <Id>dda0123</Id>
                        </Othr>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>batch-Id</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <ReqdExctnDt>2024-05-10</ReqdExctnDt>
            <Dbtr>
                <Nm>Debtor Account Holder Name</Nm>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>Debtor Account Id</Id>
                    </Othr>
                </Id>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <BIC>Bank BIC</BIC>
                </FinInstnId>
            </DbtrAgt>
            <CdtTrfTxInf>
                <PmtId>
                    <EndToEndId>End-to-End-Id</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">510.24</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <BIC>Bank BIC</BIC>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>Creditor Account Holder Name</Nm>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>Creditor Account Id</Id>
                        </Othr>
                    </Id>
                </CdtrAcct>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>

Cross River

https://docs.crossriver.com/bank-rails/iso20022-payments/xml-input-file-examples/fedwire

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.03">
    <CstmrCdtTrfInitn>
        <GrpHdr>
            <MsgId>DOMT10001174</MsgId>
            <CreDtTm>2020-07-15T16:20:05</CreDtTm>
            <NbOfTxs>3</NbOfTxs>
            <CtrlSum>6.01</CtrlSum>
            <InitgPty>
                <Nm>John Doe Corporation</Nm>
                <Id>
                    <OrgId>
                        <BICOrBEI>JOHNDOE99</BICOrBEI>
                    </OrgId>
                </Id>
            </InitgPty>
        </GrpHdr>
        <PmtInf>
            <PmtInfId>DOMT10000000</PmtInfId>
            <PmtMtd>TRF</PmtMtd>
            <BtchBookg>false</BtchBookg>
            <NbOfTxs>3</NbOfTxs>
            <CtrlSum>6.01</CtrlSum>
            <PmtTpInf>
                <InstrPrty>NORM</InstrPrty>
                <SvcLvl>
                    <Cd>URGP</Cd>
                </SvcLvl>
            </PmtTpInf>
            <ReqdExctnDt>2020-07-15</ReqdExctnDt>
            <Dbtr>
                <Nm>John Doe Corporation</Nm>
                <PstlAdr>
                    <StrtNm>999 Any Street, 13th Floor</StrtNm>
                    <PstCd>99999</PstCd>
                    <TwnNm>Anytown</TwnNm>
                    <CtrySubDvsn>CA</CtrySubDvsn>
                    <Ctry>US</Ctry>
                </PstlAdr>
            </Dbtr>
            <DbtrAcct>
                <Id>
                    <Othr>
                        <Id>0123456789</Id>
                    </Othr>
                </Id>
                <Ccy>USD</Ccy>
            </DbtrAcct>
            <DbtrAgt>
                <FinInstnId>
                    <ClrSysMmbId>
                        <ClrSysId>
                            <Cd>USABA</Cd>
                        </ClrSysId>
                        <MmbId>123456789</MmbId>
                    </ClrSysMmbId>
                    <PstlAdr>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </FinInstnId>
            </DbtrAgt>
            <ChrgBr>SHAR</ChrgBr>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED011119</InstrId>
                    <EndToEndId>0000000000000064</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">1.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>THE BANK OF NEW YORK MELLON</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED000000</InstrId>
                    <EndToEndId>0000000000000065</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">3.00</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>Cross River Bank NJ</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing 3</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
            <CdtTrfTxInf>
                <PmtId>
                    <InstrId>100FED000000</InstrId>
                    <EndToEndId>0000000000000066</EndToEndId>
                </PmtId>
                <Amt>
                    <InstdAmt Ccy="USD">2.01</InstdAmt>
                </Amt>
                <CdtrAgt>
                    <FinInstnId>
                        <ClrSysMmbId>
                            <ClrSysId>
                                <Cd>USABA</Cd>
                            </ClrSysId>
                            <MmbId>123456789</MmbId>
                        </ClrSysMmbId>
                        <Nm>THE BANK OF NEW YORK MELLON</Nm>
                        <PstlAdr>
                            <Ctry>US</Ctry>
                        </PstlAdr>
                    </FinInstnId>
                </CdtrAgt>
                <Cdtr>
                    <Nm>John Doe Funding LLC</Nm>
                    <PstlAdr>
                        <StrtNm>999 Any Avenue</StrtNm>
                        <PstCd>10000</PstCd>
                        <TwnNm>New York</TwnNm>
                        <CtrySubDvsn>NY</CtrySubDvsn>
                        <Ctry>US</Ctry>
                    </PstlAdr>
                </Cdtr>
                <CdtrAcct>
                    <Id>
                        <Othr>
                            <Id>0123456789</Id>
                        </Othr>
                    </Id>
                    <Ccy>USD</Ccy>
                </CdtrAcct>
                <RmtInf>
                    <Ustrd>Testing 2</Ustrd>
                </RmtInf>
            </CdtTrfTxInf>
        </PmtInf>
    </CstmrCdtTrfInitn>
</Document>

Some Notes:

  • Include the sample files in testing

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions