mojaloop→tazama

Payment Platform Adaptor

How a Mojaloop payment becomes a Tazama message

Tazama accepts exactly four ISO 20022 messages. None of them is a translation of a single Mojaloop message — each is assembled from a trigger plus several cached enrichment messages, across time. Some required fields are filled with constants because no Mojaloop message carries the value at all.

Every field, value and JSON payload here is transcribed from the DRPP golden-path capture and the schema-validated samples — nothing is reconstructed.

The golden path — 18 messages, one payment

MWK 60 → ZMW 1 · cross-border via DRPP

  1. 01 · sdkPOST /transfers
  2. 02GET /parties
  3. 03PUT /parties
  4. 04 · sdkresp · await party
  5. 05 · sdkacceptParty
  6. 06POST /fxQuotes
  7. 07PUT /fxQuotes
  8. 08 · sdkresp · await conversion
  9. 09 · sdkacceptConversion
  10. 10POST /quotespain.001
  11. 11PUT /quotespain.013
  12. 12 · sdkresp · await quote
  13. 13 · sdkacceptQuote
  14. 14POST /fxTransfers
  15. 15PUT /fxTransfers
  16. 16POST /transfers · PREPAREpacs.008
  17. 17PUT /transfers · FULFILpacs.002
  18. 18 · sdkresp · COMPLETED
Triggers a Tazama messageRead as enrichmentNot consumed — 8 of these are SDK-private

The four ingestion schemas

“Gaps” counts required fields the real world has but Mojaloop never carries — class A below. The spread between pacs.002's zero and pain.001's fifteen is itself a finding.

How to read a mapping

Mojaloop fields sit on the left, grouped by the message they came from. The validated Tazama payload sits on the right. Arrows connect them. A field with no arrow is constant-filled — and there are five different reasons for that, only two of which are defects.

AData gapdefect

The real-world fact exists, but Mojaloop never carries it. The constant is a small untruth in the data.

BContract constant

Fixed by Tazama's ingestion contract, or structurally implied by Mojaloop. There is nothing to source.

CPPA-generated

An identifier or timestamp the PPA is meant to mint when the scheme supplies none.

DArrives after the triggerdefect

The value does exist in Mojaloop, but only in a message that follows the one that triggers emission.

EAbsent in this capture

A slot exists in the message; the golden path simply did not populate it. Another flow might.