Event types reference
Every notification arrives as a CloudEvent with a type field of the form global.rtgs.{MessageType}. This page lists every event type you can receive, when it is sent, and the exact payload structure inside data_base64.
Before reading payloads, always verify both signatures and decode the base64 envelope.
global.rtgs.TransactionStatusNotificationV1
A payment status notification using an ISO 20022 FIToFIPaymentStatusReport. This single event type covers the full lifecycle of both Payaway (FI-to-FI credit transfer) and Link & Settle operations. Use TxInfAndSts[0].TxSts to read the status code, and TxInfAndSts[0].StsRsnInf[0].Rsn.Prtry to identify the specific lifecycle stage.
Payload structure:
{
"FIToFIPmtStsRpt": {
"GrpHdr": {
"MsgId": "a1b2c3d4e5f6...",
"CreDtTm": "2026-06-18T10:30:00Z",
"InstdAgt": { "FinInstnId": { "Othr": { "Id": "RTGS:B:GB12345678" } } }
},
"TxInfAndSts": [
{
"OrgnlEndToEndId": "E2E-REF-20260618-001",
"OrgnlUETR": "550e8400-e29b-41d4-a716-446655440000",
"TxSts": "PDNG",
"StsRsnInf": [
{
"Rsn": { "Prtry": "Pending" },
"AddtlInf": ["Pending"]
}
],
"OrgnlTxRef": {
"IntrBkSttlmAmt": { "Ccy": "GBP", "Value": 10000.00 },
"Cdtr": { "Pty": { "Nm": "Counterparty Bank Ltd" } },
"CdtrAgtAcct": { "Id": { "Othr": { "Id": "..." } } },
"CdtrAcct": { "Id": { "IBAN": "GB29NWBK60161331926819" } },
"DbtrAgtAcct": { "Id": { "Othr": { "Id": "..." } } },
"PmtTpInf": {
"LclInstrm": { "Prtry": "FIToFICustomerCreditTransfer" }
}
}
}
]
}
}
Payaway lifecycle
Sent to the initiating participant at each stage of a pacs.008 FI-to-FI credit transfer. The PmtTpInf.LclInstrm.Prtry field will be "FIToFICustomerCreditTransfer".
TxSts | StsRsnInf[0].Rsn.Prtry | StsRsnInf[0].AddtlInf[0] | Meaning |
|---|---|---|---|
PDNG | Pending | Pending | Payment accepted and queued for processing. |
ACSC | (none) | Clearing settled — funds debited from network account. | |
ACCC | NetworkTransferComplete | Network accounts settlement complete | Network transfer complete, funds credited to counterparty. |
RJCT | AM04 | Insufficient Funds | Insufficient funds on your network account. |
RJCT | ZZ03 / InvalidInstructingRTGS.globalID | Invalid Instructing RTGS.global ID | Your RTGS.global ID is invalid. |
RJCT | ZZ06 / InstructingAgentAccountUnavailable | Instructing Agent account not available | Your network account is not available. |
RJCT | ZZ07 / InstructedAgentAccountUnavailable | Instructed Agent account not available | Counterparty network account is not available. |
RJCT | ZZ14 / InstructedParticipantUnavailable | Instructed participant not available | Counterparty participant is not reachable. |
RJCT | ZZ16 / ActiveRelationshipRequired | Active relationship required between Instructing and Instructed Agent | No active relationship exists between you and the counterparty. |
RJCT | ZZ20 / SignatureVerificationFailed | Signature verification failed | Message signature could not be verified. |
RJCT | ZZ21 / FundsControllerValidationFailed | Funds Controller validation failed | Funds controller rejected the validation. |
RJCT | ZZ22 / FundsControllerRejectedSettlement | Funds Controller rejected settlement | Funds controller rejected the settlement. |
RJCT | ZZ23 / FundsControllerRejectedTransaction | Funds Controller rejected transaction | Funds controller rejected the transaction. |
Link & Settle lifecycle
Sent to both participants at each stage of a pacs.009 Link & Settle operation. Both the initiating and the counterparty participant receive these events, with the Prtry reason indicating which role each notification plays.
TxSts | StsRsnInf[0].Rsn.Prtry | StsRsnInf[0].AddtlInf[0] | Meaning |
|---|---|---|---|
PDNG | LinkPending | Link pending counterparty settlement request | You submitted a link request; awaiting a matching request from the counterparty. |
PDNG | LinkRequest | Counterparty link pending response | The counterparty has submitted a matching link request to you. |
ACSP | LinkCreated | Request linked to counterparty request | Requests matched; settlement is in progress. |
ACCC | LinkSettled | Request complete, settlement successful | Settlement completed successfully. |
RJCT | CancelledAsPerRequest | Successful cancellation as requested by participant | Your own cancellation request was processed. |
RJCT | CounterpartyRequestCancelled | Linked counterparty request cancelled | The counterparty cancelled their request. |
RJCT | OwnInsufficientFunds | Insufficient funds on debit network account | Your network account has insufficient funds. |
RJCT | CounterpartyInsufficientFunds | Insufficient funds on counterparty network account | The counterparty's network account has insufficient funds. |
RJCT | CounterpartyNotFound | Counterparty does not exist | The specified counterparty does not exist on the network. |
RJCT | CounterpartyInvalid | Counterparty is Invalid | The specified counterparty is invalid. |
RJCT | OwnIdentifierInCounterpartyField | Participant BIC/LEI specified in counterparty field | Your own BIC/LEI was used in the counterparty field. |
RJCT | CurrencyMismatch | Requests have specified different currencies | Your request and the counterparty's request specify different currencies. |
RJCT | FundsControllerMismatch | Accounts held with different funds controllers | The accounts are held with different funds controllers. |
RJCT | LinkIdentifiersOrUetrNotFound | Request link identifiers or UETR cannot be found | Link identifiers or UETR could not be matched. |
RJCT | VerificationFailed | Request signature verification has failed | Message signature verification failed. |
RJCT | LinkAlreadySettled | Request has already been settled | A settlement for this request already exists. |
RJCT | SettlementFailed | Request has failed to settle and cannot be cancelled | Settlement failed and the request cannot be cancelled. |
global.rtgs.TransactionNotificationV1
A bank-to-customer debit/credit notification (ISO 20022 BankToCustomerDebitCreditNotification / camt.054). Sent after a Payaway or Link & Settle transaction has fully settled.
Both the initiating participant (receives a debit entry) and the counterparty participant (receives a credit entry) receive this event independently, with CdtDbtInd indicating which side they are on.
Payload structure:
{
"BkToCstmrDbtCdtNtfctn": {
"GrpHdr": {
"MsgId": "a1b2c3d4...",
"CreDtTm": "2026-06-18T10:30:05Z",
"MsgPgntn": { "PgNb": "1", "LastPgInd": true }
},
"Ntfctn": [
{
"Id": "...",
"Acct": {
"Id": { "Othr": { "Id": "account-identifier" } },
"Ccy": "GBP"
},
"Ntry": [
{
"Amt": { "Ccy": "GBP", "Value": 10000.00 },
"CdtDbtInd": "DBIT",
"Sts": { "Cd": "BOOK" },
"BookgDt": { "DtTm": "2026-06-18T10:30:05Z" },
"ValDt": { "Dt": "2026-06-18" },
"NtryDtls": [
{
"TxDtls": [
{
"Refs": {
"EndToEndId": "E2E-REF-20260618-001",
"UETR": "550e8400-e29b-41d4-a716-446655440000"
}
}
]
}
]
}
]
}
]
},
"Metadata": {
"TransactionId": "internal-transaction-id",
"CounterpartyTransactionId": "counterparty-transaction-id"
}
}
| Field | Description |
|---|---|
BkToCstmrDbtCdtNtfctn.Ntfctn[0].Ntry[0].CdtDbtInd | DBIT — funds debited from your account; CRDT — funds credited to your account. |
Metadata.TransactionId | RTGS.global internal transaction identifier for this entry. |
Metadata.CounterpartyTransactionId | RTGS.global internal transaction identifier for the counterparty's entry (useful for reconciliation). |
global.rtgs.PayawayFundsV1
An inbound payment notification sent to the counterparty (receiving/instructed) participant when the initiating participant's funds have been reserved and a pacs.008 credit transfer is incoming. This is the signal to expect an inbound credit.
global.rtgs.PayawayFundsV1 is sent to the counterparty — the participant who will receive the funds. The initiating participant does not receive this event.
Payload structure:
{
"FromRtgsGlobalId": "RTGS:B:GB12345678",
"FIToFICstmrCdtTrf": {
"GrpHdr": {
"MsgId": "a1b2c3d4...",
"CreDtTm": "2026-06-18T10:30:00Z",
"NbOfTxs": "1",
"InstgAgt": { "FinInstnId": { "Othr": { "Id": "RTGS:B:GB12345678" } } },
"InstdAgt": { "FinInstnId": { "Othr": { "Id": "RTGS:B:US87654321" } } }
},
"CdtTrfTxInf": [
{
"PmtId": {
"EndToEndId": "E2E-REF-20260618-001",
"UETR": "550e8400-e29b-41d4-a716-446655440000"
},
"IntrBkSttlmAmt": { "Ccy": "GBP", "Value": 10000.00 },
"Cdtr": { "Nm": "Receiving Bank Ltd" },
"CdtrAcct": { "Id": { "IBAN": "GB29NWBK60161331926819" } },
"Dbtr": { "Nm": "Sending Bank Ltd" }
}
]
}
}
| Field | Description |
|---|---|
FromRtgsGlobalId | The RTGS.global ID of the initiating (sending) participant. |
FIToFICstmrCdtTrf | The full pacs.008 FI-to-FI Customer Credit Transfer message. |
Account management events
These events notify participants of changes to their network accounts. They are sent by the participants domain, not the payment processing domain, so they do not carry ISO 20022 payment messages.
global.rtgs.participants.account.approved.v1
Sent when a network account request is approved.
{
"CorrelationId": "550e8400-e29b-41d4-a716-446655440000",
"FundsController": {
"Nm": "Example Payments Ltd",
"Cd": "EXPL",
"JurisdictionCode": "euwprd",
"Sts": "Active",
"Ctry": "GB"
},
"AccountIdentifier": {
"Id": { "Othr": { "Id": "account-id" } },
"Ccy": "GBP"
},
"ServicerParticipant": {
"AnyBIC": "EXMPGB2L"
}
}
global.rtgs.participants.account.closed.v2
Sent to both the account owner and the servicing participant when a network account is closed.
{
"CorrelationId": "550e8400-e29b-41d4-a716-446655440000",
"AccountV2": {
"Acct": {
"Id": { "Othr": { "Id": "account-id" } },
"Ccy": "GBP"
},
"Status": "Closed",
"CreatedDate": "2025-01-01T00:00:00Z",
"UpdatedDate": "2026-06-18T10:30:00Z"
}
}
global.rtgs.participants.account.requestfailed.v1
Sent when an account open request fails.
global.rtgs.participants.account.approval.requestfailed.v1
Sent when an account approval request fails.
Handling unknown event types
RTGS.global may introduce new event types as the platform evolves. Always write your event handler to log and skip unrecognised types rather than throw — this ensures new events do not break your consumer:
switch (cloudEvent.Type)
{
case "global.rtgs.TransactionStatusNotificationV1":
// ...
break;
case "global.rtgs.TransactionNotificationV1":
// ...
break;
case "global.rtgs.PayawayFundsV1":
// ...
break;
default:
logger.LogWarning(“Received unhandled event type {EventType} — ignoring”, cloudEvent.Type);
break;
}
See Processing the payload for how to decode and deserialize each event.