Integration via ISO - Step 3: Payout
Payment Processing Lifecycle
pain.001 is the ISO 20022 XML message format used to initiate customer credit transfers. It enables an initiating party, Widget Co., to request the transfer of funds from a debtor’s account to a creditor’s account. TxB implementation follows the ISO 20022 XML Standards for Credit Transfer.
pain.002 is the ISO 20022 XML message format used for payment status updates, offering file-level, batch-level and payment-level statuses for all transactions processed through GS TxB. After payment instructions are submitted, GS provides status reports indicating both successful and unsuccessful payments. These status reports are updated every 15 minutes to ensure timely and accurate tracking of your payment activity. TxB implementation follows the ISO 20022 XML Standards for Customer Payment Status Report.
ISO 20022 Payment Initiation life-cycle is as follows:

Note: RJCT- Payment rejected. PDNG – Payment pending processing. ACCP- Payment accepted post technical & profile validations. ACSP- Payment accepted, pending settlement. ACSC- Payment accepted & settlement complete.
Payment Initiation
Selecting the Payment Rail
The Payment Type Information <PmtTpInf> section in pain.001 specifies the processing rail for either a group of payments (batch-level) or a single transaction (transaction-level). The table below contains the payment rails supported by TxB per branch (US, UK, DE, and NL) with the associated <PmtTpInf> value:
| Intelligent Routing | Explicit Routing | ||
|---|---|---|---|
| ISO <PmtTpInf> | Rails | ISO <PmtTpInf> | Rails |
| <LclInstrm>ACH | US: ACH, XB-ACH, UK: XB-ACH | <SvcLvl>SEPA | DE: SEPA |
| <LclInstrm>REALTIME | US: RTP, UK: FPS | <SvcLvl>SEPA <LclInstrm>REALTIME | DE: SEPA INST |
| <LclInstrm>WIRE | US: FedWire, SWIFT; UK: CHAPS, SWIFT; DE and NL: SWIFT | <LclInstrm>99 | UK: BACS |
We highlight that using a single batch <PmtInf> per pain.001 file with batch-level routing can simplify integration, see below routing examples:
Intelligent Routing
Using clients documented preferences and the account location, TxB selects the appropriate payment processing route. For instance, a US payment with <PmtTpInf><LclInstrm><Prtry> REALTIME is processed through US RTP. If the beneficiary bank is not registered for RTP, the payment will be sent as a wire transfer instead.
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>UNIQUE_ID_Max35Text</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<LclInstrm>
<!--
Replace [VALUE] with one from the Options:
- ACH
- WIRE
- REALTIME
- 99 (for BACS)
-->
<Prtry>[VALUE]</Prtry>
</LclInstrm>
</PmtTpInf>
<ReqdExctnDt>
<Dt>2025-11-25</Dt>
</ReqdExctnDt>Explicit Routing
To conform with the rail specifications, SEPA and BACS payments require an explicit routing value. In this example, Widget Co. has instructed a SEPA Instant payment:
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>UNIQUE_ID_Max35Text</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<SvcLvl>
<Cd>SEPA</Cd> <!-- SEPA -->
</SvcLvl>
<!-- For SEPA Instant also add the block given below -->
<!-- START -->
<LclInstrm>
<Prtry>REALTIME</Prtry>
</LclInstrm>
<!-- END -->
</PmtTpInf>
<ReqdExctnDt>
<Dt>2025-11-25</Dt>
</ReqdExctnDt>Payment Initiation Attributes
This section outlines the payment attributes necessary for efficient payment processing. TxB can also provide a zip file containing sample pain.001 files and TxB Global Payment guides, which specify additional country and currency requirements.
- Group Header
<GrpHdr>serves as the primary header, encompassing critical information such as message ID<MsgId>, creation timestamp<CreDtTm>, transaction count -<NbOfTxs>and<CtrlSum>, and initiating party<OrgId>. This header is applicable to every transaction in the message, with only one<GrpHdr>permitted per pain.001 file.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
<GrpHdr> <!-- Group Header START -->
<MsgId>UNIQUE_MSG_ID_Max35Text</MsgId>
<CreDtTm>2025-11-25T14:53:26.439453037+00:00</CreDtTm>
<!-- Include Totals as part of the Group Header -->
<NbOfTxs>1</NbOfTxs>
<CtrlSum>1.00</CtrlSum>
<InitgPty>
<Id>
<OrgId>
<Othr>
<!-- Entities group under a single Initiating party Unique ID -->
<!-- e.g., D698885154E34C95A566ECA5488FFFF6 -->
<Id>YOUR_ENTITY_ID_32Text</Id>
</Othr>
</OrgId>
</Id>
</InitgPty>
</GrpHdr> <!-- Group Header END -->
<PmtInf>
. . .
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
- Payment Info
<PmtInf>contains batch-specific payment details for one or multiple transactions within the batch, including payment rail<LclInstrm>, value date<ReqdExctnDt>, and sender information<Dbtr>,<DbtrAcct>,<DbtrAgt>. While multiple<PmtInf>batches may be included in a pain.001 file, it is advisable to limit each file to a single batch.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>UNIQUE_MSG_ID_Max35Text</PmtInfId>
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<LclInstrm>
<!-- Options: ACH, WIRE, REALTIME -->
<!-- Other Options: <LclInstrm> = 99 for BACS, and <SvcLvl> = SEPA for SEPA CT -->
<Prtry>ACH</Prtry>
</LclInstrm>
</PmtTpInf>
<ReqdExctnDt>
<Dt>YYYY-MM-DD</Dt>
</ReqdExctnDt>
<Dbtr> <!-- Debtor Details -->
<Nm>YOUR_ENTITY_NAME_Max140Text</Nm>
</Dbtr>
<DbtrAcct>
<Id>
<Othr>
<!-- Debtor Account, e.g. the funding account at TxB, VIA or DDA -->
<Id>YOUR_ACCOUNT_NUMBER</Id>
</Othr>
</Id>
</DbtrAcct>
<DbtrAgt>
<FinInstnId>
<!-- US TEST: GSCRUS30 US PROD: GSCRUS33 -->
<!-- UK TEST: GSLDGB20 UK PROD: GSLDGB2L -->
<BICFI>GS_BRANCH_BIC</BICFI>
</FinInstnId>
</DbtrAgt>
<CdtTrfTxInf> <!-- Payment Level Attributes -->
. . .
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
-
Payment Level Credit Transfer Transaction Information
<CdtTrfTxInf>provides comprehensive details for each transaction within the batch, including payment identification, beneficiary information, and transaction amount. The<CdtTrfTxInf>element forms part of the<PmtInf>structure. Each<CdtTrfTxInf>entry includes:<EndToEndId>: Unique End-to-End Payment Identifier<Amt>: Amount and Currency of Payment.<Cdtr>: Creditor data, such as name, account number, and banking institution.<RmtInf>: Payment purpose information is included to assist creditors in reconciling incoming funds, such as referencing invoice numbers or providing descriptive narratives.
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>UNIQUE_MSG_ID_Max35Text</PmtInfId>
. . .
<CdtTrfTxInf> <!-- Payment Level Attributes -->
<PmtId>
<EndToEndId>PAYMENT_UNIQUE_ID_Max35Text</EndToEndId>
</PmtId>
<Amt>
<!-- 3-Char ISO Currency Code = USD, GBP, EUR... -->
<InstdAmt Ccy="XXX">1.00</InstdAmt>
</Amt>
<CdtrAgt>
<!-- Either LOCAL Routing ... -->
<FinInstnId>
<ClrSysMmbId>
<ClrSysId>
<Cd>CLR_SYS_CODE</Cd> <!-- e.g. USABA, GBDSC, CACPA -->
</ClrSysId>
<MmbId>BANK_LOCAL_CODE</MmbId>
</ClrSysMmbId>
</FinInstnId>
<!-- Or BIC CODE for some currencies -->
<FinInstnId>
<BICFI>CREDITOR_BANK_BIC</BICFI>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>CREDITOR_NAME_Max140Text</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>1234567890</Id>
</Othr>
<!-- Or IBAN for some currencies -->
<!-- <IBAN>IBAN_GOES_HERE</IBAN> -->
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>REMITANCE_INFO_TEXT_Max140Text</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Initiating a Batch Payment
Outgoing Batch or Low Value Payment Systems include US ACH, UK BACS and EU SEPA.
A batch payment containing two USACH transactions is initiated:
- Payment Batch ID PaymentReqID0000001 for a total amount of USD 406.00
- Payment #1 End_To_End ID TxE2EID000001 for USD 106.00
- Payment #2 End_To_End ID TxE2EID000002 for USD 300.00
For the batch payments, the account should reflect a single debit encompassing all transactions within the batch; in the current example, this equates to one debit of USD 406.00.
Here is the sample Pain001:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>PaymentReqID0000001</PmtInfId> <!-- Batch Id -->
<PmtMtd>TRF</PmtMtd>
<PmtTpInf>
<LclInstrm>
<Cd>CCD</Cd>
</LclInstrm>
<CtgyPurp>
<Prtry>BILLPYMENT</Prtry>
</CtgyPurp>
</PmtTpInf>
. . .
. . .
<CdtTrfTxInf> <!-- Payment 1 -->
<PmtId>
<EndToEndId>TxE2EID000001</EndToEndId> <!-- Payment End to End Id -->
</PmtId>
<Amt>
<InstdAmt Ccy="USD">106.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<ClrSysMmbId>
<ClrSysId>
<Cd>USABA</Cd>
</ClrSysId>
<MmbId>021000089</MmbId>
</ClrSysMmbId>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>ABC Corp.</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>1234567890</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice 11234</Ustrd>
</RmtInf>
</CdtTrfTxInf>
<CdtTrfTxInf> <!-- Payment 2 -->
<PmtId>
<EndToEndId>TxE2EID000002</EndToEndId> <!-- Payment End to End Id -->
</PmtId>
<Amt>
<InstdAmt Ccy="USD">300.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<ClrSysMmbId>
<ClrSysId>
<Cd>USABA</Cd>
</ClrSysId>
<MmbId>121000248</MmbId>
</ClrSysMmbId>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>XYZ Inc.</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>9876543210</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice 53555</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Initiating a Wire Payment
Outgoing wires and real-time payment systems comprise:
- Wires: US Fedwire, UK CHAPS, SWIFT International Wires
- Realtime Payments: US RTP, UK FPS, EU SEPA Inst
One wire payment instruction using a single funding account:
- Payment Batch ID PaymentReqID0000002 with a total amount of USD 4012.00
- FedWire Payment #1 End_To_End ID TxE2EID000021 for USD 4012.00
The account should reflect a debit for the individual payment of this type; in the current example, this equates to a debit of USD 4012.0
Here is the sample Pain001:
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.08">
<CstmrCdtTrfInitn>
<GrpHdr>
. . .
</GrpHdr>
<PmtInf>
<PmtInfId>PaymentReqID0000002</PmtInfId> <!-- Batch Id -->
...
<LclInstrm>
<Prtry>WIRE</Prtry>
</LclInstrm>
. . .
<CdtTrfTxInf> <!-- Payment 1 -->
<PmtId>
<EndToEndId>TxE2EID000021</EndToEndId> <!-- Payment End to End Id -->
</PmtId>
<Amt>
<InstdAmt Ccy="USD">4012.00</InstdAmt>
</Amt>
<CdtrAgt>
<FinInstnId>
<ClrSysMmbId>
<ClrSysId>
<Cd>USABA</Cd>
</ClrSysId>
<MmbId>021000089</MmbId>
</ClrSysMmbId>
</FinInstnId>
</CdtrAgt>
<Cdtr>
<Nm>ABC Corp.</Nm>
</Cdtr>
<CdtrAcct>
<Id>
<Othr>
<Id>1234567890</Id>
</Othr>
</Id>
</CdtrAcct>
<RmtInf>
<Ustrd>Invoice 9999</Ustrd>
</RmtInf>
</CdtTrfTxInf>
</PmtInf>
</CstmrCdtTrfInitn>
</Document>
Additional information
| 1: Connect | 2: Create Account | 3: Payout | 4: Payout Status | 5: Account Status | 6: Reconcile |
|---|
Was this page useful?
Give feedback to help us improve developer.gs.com and serve you better.