The message component of Impel's ISO 20022 API
The message component is the primary object to house the financial message's data and optional digital asset information used for collateral that is passed from one gateway node to another gateway node, essentially getting the ISO 20022 financial message from point a to point b.
Impel's ISO 20022 API gateway service's message envelope utilizes cryptography, ensuring the following:
High throughput
Instant delivery
Guaranteed delivery
Secured delivery
The mechanics of Impel's ISO 20022 financial message
Impel's ISO 20022 API was designed to be message agnostic, meaning that it will house and send whatever data type the sender wants to send, MT or XML. The origination and fundamentals of the message that the client creates and sends to the gateway service that will be sent to the recipient that will be committed as a proof.
The data required to route message between gateways (sender, receiver).
SendMessageRequest data field requirements:
Sender
Recipient
Payload
Collateral (optional)
Validation
The AppHdr element is an ISO 20022 head message. Supported schemes:
head.001.001.01
head.001.001.02
head.001.001.03
AppHdr element:
The Document element is the actual ISO 20022 message e.g. PACS or PAIN.
The document schema attribute that points to the ISO 20022 schema type: urn:iso:std:iso:20022:tech:xsd:${MESSAGE_TYPE}
Example:
The ability to add a digital asset to the message's payload allows for instant settlement capability to where traditional nostro/vostro accounts and settling up at the end of the day with the Central Banking systems is no longer required.
Collateral is defined in SendMessageRequest by the optional collateral field.
Digital assets types supported:
NATIVE (XDC, the native coin to the XDC Network)
XRC-20 token (layer 2 projects)
Native XDC coin as collateral example:
XRC-20 token as collateral example:
All ISO 20022 message types and variants are candidates for validation. SendMessageRequest includes an optional flag "validatePayload" for validation.
ISO 20022 payload is validated by checking:
Document
AppHdr (optional)
Both elements has to be a valid ISO 20022 namespace, e.g.
urn:iso:std:iso:20022:tech:xsd:pain.002.001.03
urn:iso:std:iso:20022:tech:xsd:head.001.001.02
urn:iso:std:iso:20022:tech:xsd:pacs.002.001.12
Supplementary data is not supported by the platform.
Variable | Description |
---|---|
State | Description |
---|
${HEADER_TYPE}
head.001.001.01 and head.001.001.02
${SENDER_BIC}
Sending party's BIC
${RECIPIENT_BIC}
Receiving party's BIC
${BUSINESS_IDENTIFIER}
Identification
${MESSAGE_TYPE}
pacs.009.001.10, pain.008.001.01, acmt.001.001.08, etc.
${MESSAGE_DATE}
Date the message was created
NEW | Initial state of the message |
OUTBOX | Message is available to send to the counterparty |
SENT | Message has been sent to the counterparty |
RECEIVED | Message has been received by the counterparty |
ACKNOWLEDGED | Message has been checked and validated |
NOT_ACKNOWLEDGED | Message failed successful delivery |
Field
Description
ID
Message identifier
endToEndId
Message business identifier (extracted from ISO 20022 Business Application Header)
Status
Status of message (CREATED, SENT. etc.)
Direction
Message direction (INBOX, OUTBOX)
Sender
Message sender Party BIC (extracted from ISO 20022 Business Application Header)
Recipient
Message recipient Party BIC (extracted from ISO 20022 Business Application Header)
Signature
Sender Party signature for a message to send (base64 format)
counterpartySignature
Recipient Party signature for a received message (base64 format)
messageHash
Hash of a message (base64 format)
previousMessageHash
Hash of a previous message in a chain (base64 format)
Collateral
Information about message collateral
Type
Type of collateral, e.g NATIVE (XDC) or ERC20
Amount
Collateral amount
exchangePrice
Price of a collateral amount
exchangeCurrency
Currency of a collateral amount price
tokenSymbol
XRC-20 token symbol (e.g. US+)