Docs · Rails & protocols

ISO 20022

How miaPOS speaks ISO 20022 to bank backends. Dual-signal inbound (pacs.008 + pacs.002), structural envelope, JSON projection of XML.

AudienceDeveloper · Bank
DifficultyAdvanced
Updated2026-05-30

Overview

miaPOS exchanges payment messages with bank backends in ISO 20022 format. The internal representation is a structural envelope — a JSON projection of the XML that preserves nesting and semantics without forcing developers to write XSDs.

Dual-signal inbound

For redundancy and richer payer data, miaPOS accepts both pacs.008 (credit transfer) and pacs.002 (status report) from the bank for the same payment. The two messages are correlated by transaction reference; whichever arrives first triggers settlement, the second confirms.

Structural envelope

{
  "header": {
    "messageId":    "MIA20260530001",
    "creationDate": "2026-05-30T14:23:45Z",
    "msgType":      "pacs.008.001.10"
  },
  "body": {
    "grpHdr": { /* GroupHeader */ },
    "cdtTrfTxInf": [
      { /* CreditTransferTransactionInformation */ }
    ]
  }
}

Supported messages

  • pacs.008 — FIToFICustomerCreditTransfer (inbound + outbound)
  • pacs.002 — FIToFIPaymentStatusReport (inbound, dual-signal)
  • pain.013 — CreditorPaymentActivationRequest (Request to Pay)
  • pain.014 — CreditorPaymentActivationResponse

Out of scope: pain.001 (use pacs.008 direct), camt.052/053 (settlement reporting handled separately).