ISO 20022
Payment initiation and direct-debit message mapping. About iso 20022 messaging Next
- POST
/iso20022/messageSubmit an ISO 20022 message - POST
/iso20022/message/jsonSubmit an ISO 20022 message as JSON - GET
/iso20022/message/{reference}Read one of your ISO 20022 messages - GET
/iso20022/message/{reference}/contentRead the archived bytes of one of your messages - GET
/iso20022/message/{reference}/content/jsonRead one of your messages in ISO 20022 JSON form - GET
/iso20022/message/{reference}/relatedRead the answers linked to one of your messages - GET
/iso20022/messagesSearch your ISO 20022 messages
POST Submit an ISO 20022 message
POST /iso20022/message
Accepts any ISO 20022 document, with or without a Business Application Header, from the caller's API channel. The bytes are archived before anything reads them, then the message is validated against the exact schema its namespace names. A message Bridge refuses still gets an answer: the response names the lifecycle stage it stopped at, the findings, and relatedMessageReference points at the admi.002 Message Reject Bridge composed. A duplicate MsgId is refused and names the original.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Example
Response: GenericResponseIsoMessageResponse
curl -X POST "https://api.bridgemoni.com/iso20022/message" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"direction": "INBOUND",
"definition": "pain.001.001.09",
"businessArea": "pain",
"msgId": "string",
"bizMsgIdr": "string",
"fromIdentity": "string",
"toIdentity": "string",
"lifecycle": "RECEIVED",
"disposition": "HANDLED",
"signatureStatus": "NOT_REQUIRED",
"contentDigest": "string",
"byteSize": 0,
"participantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channelReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"relatedMessageReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"outcomeReason": "string",
"transactionCount": 0,
"findings": [
{
"layer": "XSD",
"severity": "ERROR",
"path": "CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr/Nm",
"rule": "MAX_LENGTH",
"detail": "140"
}
],
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Message received and answered"
} Responses
| Status | When |
|---|---|
202 | Message received and answered |
400 | The message is empty or larger than the channel accepts |
403 | The caller has no active ISO 20022 API channel |
503 | The archive is unavailable; nothing was processed and it is safe to resend |
POST Submit an ISO 20022 message as JSON
POST /iso20022/message/json
The same message in ISO 20022 JSON form: {definition, document, appHdr?}. Elements are keys in schema order, repeated elements are arrays, attributes are @name and an element with attributes carries its value in #text. The JSON is turned into the XML document and processed exactly as the XML would be, so both forms are held and answered identically.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Content-Type | application/json |
Example
Request body: string · Response: GenericResponseIsoMessageResponse
curl -X POST "https://api.bridgemoni.com/iso20022/message/json" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" \
-H "Content-Type: application/json" \
-d '"string"' "string" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"direction": "INBOUND",
"definition": "pain.001.001.09",
"businessArea": "pain",
"msgId": "string",
"bizMsgIdr": "string",
"fromIdentity": "string",
"toIdentity": "string",
"lifecycle": "RECEIVED",
"disposition": "HANDLED",
"signatureStatus": "NOT_REQUIRED",
"contentDigest": "string",
"byteSize": 0,
"participantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channelReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"relatedMessageReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"outcomeReason": "string",
"transactionCount": 0,
"findings": [
{
"layer": "XSD",
"severity": "ERROR",
"path": "CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr/Nm",
"rule": "MAX_LENGTH",
"detail": "140"
}
],
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "OK"
} Responses
| Status | When |
|---|---|
200 | OK |
GET Read one of your ISO 20022 messages
GET /iso20022/message/{reference}
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseIsoMessageResponse
curl -X GET "https://api.bridgemoni.com/iso20022/message/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"direction": "INBOUND",
"definition": "pain.001.001.09",
"businessArea": "pain",
"msgId": "string",
"bizMsgIdr": "string",
"fromIdentity": "string",
"toIdentity": "string",
"lifecycle": "RECEIVED",
"disposition": "HANDLED",
"signatureStatus": "NOT_REQUIRED",
"contentDigest": "string",
"byteSize": 0,
"participantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channelReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"relatedMessageReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"outcomeReason": "string",
"transactionCount": 0,
"findings": [
{
"layer": "XSD",
"severity": "ERROR",
"path": "CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr/Nm",
"rule": "MAX_LENGTH",
"detail": "140"
}
],
"creationDateTime": "2026-09-25T10:00:00Z"
},
"description": "Message retrieved"
} Responses
| Status | When |
|---|---|
200 | Message retrieved |
404 | No such message in your scope |
GET Read the archived bytes of one of your messages
GET /iso20022/message/{reference}/content
Returns exactly the bytes received or sent. They are re-checked against the recorded digest on every read, and never served when they differ.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: string
curl -X GET "https://api.bridgemoni.com/iso20022/message/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/content" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" "string" Responses
| Status | When |
|---|---|
200 | OK |
GET Read one of your messages in ISO 20022 JSON form
GET /iso20022/message/{reference}/content/json
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Path parameters
| Name |
|---|
reference |
Example
Response: GenericResponseJsonNode
curl -X GET "https://api.bridgemoni.com/iso20022/message/b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e/content/json" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": "string",
"description": "OK"
} Responses
| Status | When |
|---|---|
200 | OK |
GET Search your ISO 20022 messages
GET /iso20022/messages
Newest first.
Headers
| Name | Notes |
|---|---|
Authorization | Bearer token |
X-Tenant | Your tenant |
X-Environment | test or live |
Query parameters
| Name | Default |
|---|---|
direction | Optional |
definition | Optional |
lifecycle | Optional |
msgId | Optional |
page | 0 |
size | 20 |
Example
Response: GenericResponsePagerIsoMessageResponse
curl -X GET "https://api.bridgemoni.com/iso20022/messages?page=value&size=20" \
-H "Authorization: Bearer $BRIDGEMONI_TOKEN" \
-H "X-Tenant: $BRIDGEMONI_TENANT" \
-H "X-Environment: $BRIDGEMONI_ENV" {
"data": {
"content": [
{
"reference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"direction": "INBOUND",
"definition": "pain.001.001.09",
"businessArea": "pain",
"msgId": "string",
"bizMsgIdr": "string",
"fromIdentity": "string",
"toIdentity": "string",
"lifecycle": "RECEIVED",
"disposition": "HANDLED",
"signatureStatus": "NOT_REQUIRED",
"contentDigest": "string",
"byteSize": 0,
"participantReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"channelReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"relatedMessageReference": "b3f1c2d4-5e6a-4b7c-8d9e-0f1a2b3c4d5e",
"outcomeReason": "string",
"transactionCount": 0,
"findings": [
{
"layer": "XSD",
"severity": "ERROR",
"path": "CstmrCdtTrfInitn/PmtInf/CdtTrfTxInf/Cdtr/Nm",
"rule": "MAX_LENGTH",
"detail": "140"
}
],
"creationDateTime": "2026-09-25T10:00:00Z"
}
],
"page": "1",
"size": "1",
"totalPages": "1",
"totalElements": "1"
},
"description": "OK"
} Responses
| Status | When |
|---|---|
200 | OK |
Generated from the OpenAPI document. Branch on the HTTP status: there is no machine-readable error code on the wire. Errors