[{"data":1,"prerenderedAt":596},["ShallowReactive",2],{"navigation_docs_en":3,"-en-architecture-partenaires":78,"-en-architecture-partenaires-surround":591},[4,14,40,54,60,66,72],{"title":5,"path":6,"stem":7,"children":8},"The essentials","/en/proposition","en/1.proposition/1.index",[9,10],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Your need, understood","/en/proposition/comprehension","en/1.proposition/2.comprehension",{"title":15,"path":16,"stem":17,"children":18},"Overview","/en/architecture","en/2.architecture/1.index",[19,20,24,28,32,36],{"title":15,"path":16,"stem":17},{"title":21,"path":22,"stem":23},"Technical choices","/en/architecture/stack","en/2.architecture/2.stack",{"title":25,"path":26,"stem":27},"Security & compliance","/en/architecture/securite","en/2.architecture/3.securite",{"title":29,"path":30,"stem":31},"The modules","/en/architecture/modules","en/2.architecture/4.modules",{"title":33,"path":34,"stem":35},"Partner integration","/en/architecture/partenaires","en/2.architecture/5.partenaires",{"title":37,"path":38,"stem":39},"Information system","/en/architecture/systeme-information","en/2.architecture/6.systeme-information",{"title":41,"path":42,"stem":43,"children":44},"The plan","/en/roadmap","en/4.roadmap/1.index",[45,46,50],{"title":41,"path":42,"stem":43},{"title":47,"path":48,"stem":49},"The method","/en/roadmap/methodologie","en/4.roadmap/2.methodologie",{"title":51,"path":52,"stem":53},"The budget","/en/roadmap/budget","en/4.roadmap/3.budget",{"title":55,"path":56,"stem":57,"children":58},"Vortex-Soft","/en/equipe","en/5.equipe/1.index",[59],{"title":55,"path":56,"stem":57},{"title":61,"path":62,"stem":63,"children":64},"Specification","/en/cdc","en/6.cdc/1.index",[65],{"title":61,"path":62,"stem":63},{"title":67,"path":68,"stem":69,"children":70},"Infrastructure","/en/infrastructure","en/7.infrastructure/1.index",[71],{"title":67,"path":68,"stem":69},{"title":73,"path":74,"stem":75,"children":76},"Mockups","/en/maquette","en/8.maquette/1.index",[77],{"title":73,"path":74,"stem":75},{"id":79,"title":33,"badge":80,"body":81,"category":80,"description":584,"extension":585,"links":80,"meta":586,"navigation":588,"path":34,"seo":589,"stem":35,"tags":80,"__hash__":590},"docs_en/en/2.architecture/5.partenaires.md",null,{"type":82,"value":83,"toc":572},"minimark",[84,88,93,101,104,115,118,129,133,136,139,145,149,152,206,209,213,220,227,233,243,249,255,267,274,280,284,287,414,426,430,433,473,479,483,489,495,501,508,512,515,522,525,529,532,563,566],[85,86,87],"p",{},"This is the most uncertain part of the project, and the only one we cannot settle on our own. This page sets out what we know, what we do not know yet, and the architecture that lets us start without waiting for the answer.",[89,90,92],"h2",{"id":91},"a-shift-of-perspective","A shift of perspective",[85,94,95,96,100],{},"The Western Union, Ria and MoneyGram APIs are not designed for sub-agents. They address fintechs and banks wanting to ",[97,98,99],"strong",{},"embed money transfer into their own product"," — not a counter wanting its own operations back.",[85,102,103],{},"The real chain is this:",[105,106,111],"pre",{"className":107,"code":109,"language":110},[108],"language-text","Network (Western Union, Ria…)\n        ↓\nMaster agent / bank  ← this is where the network contract sits\n        ↓\nSub-agent  ← this is where you are\n","text",[112,113,109],"code",{"__ignoreMap":114},"",[85,116,117],{},"You most likely have no direct contractual relationship with the network. You have one with a bank or master agent, who holds the contract.",[119,120,121,124,125,128],"note",{},[97,122,123],{},"The first step, the cheapest and the fastest."," Ask your master agent for the ",[97,126,127],{},"daily settlement file"," — the detailed statement of your operations, in CSV or Excel. That document already exists, it is owed to you, and it is enough to feed AiO. Days rather than months. In most cases this single step makes the API unnecessary.",[89,130,132],{"id":131},"the-four-access-levels","The four access levels",[85,134,135],{},"One operations module, driven by a configuration record per partner. The level reached depends on what the partner grants, and it can change over the product's life through configuration.",[137,138],"amtm-partner-access",{},[85,140,141,144],{},[97,142,143],{},"The last two levels depend on no external authorisation."," Your principal agent already sends you a daily statement: that is the raw material for import. Version 1 is fully functional with those two levels alone, for all six partners — which is what lets the project reach completion without depending on a third party's calendar.",[89,146,148],{"id":147},"what-is-configurable-and-what-is-not","What is configurable, and what is not",[85,150,151],{},"The phrase \"adding a partner means filling in a form\" is true in one case out of two. Here is the exact distinction.",[153,154,155,168],"table",{},[156,157,158],"thead",{},[159,160,161,165],"tr",{},[162,163,164],"th",{},"Situation",[162,166,167],{},"Treatment",[169,170,171,184,192],"tbody",{},[159,172,173,181],{},[174,175,176,177,180],"td",{},"Protocol, exchange format and authentication ",[97,178,179],{},"already supported"," by the module",[174,182,183],{},"Configuration — no specific development",[159,185,186,189],{},[174,187,188],{},"New file format, known protocol",[174,190,191],{},"Adding a field-mapping profile — assisted configuration, without touching the core",[159,193,194,203],{},[174,195,196,199,200],{},[97,197,198],{},"Proprietary"," protocol, signature or certification path ",[97,201,202],{},"not yet supported",[174,204,205],{},"An adapter is built, quoted and scheduled separately if it falls outside the scope settled at framing",[85,207,208],{},"The scope frozen at framing states, partner by partner, which of these three situations each falls into, based on the information available at that time.",[89,210,212],{"id":211},"read-or-write-the-distinction-that-changes-everything","Read or write: the distinction that changes everything",[85,214,215,216,219],{},"Do not ask for “an API”. Ask ",[97,217,218],{},"which one"," — there are two natures, and they commit you to very different things.",[85,221,222,223,226],{},"A ",[97,224,225],{},"read API"," hands back your own operations. Reading your own data is not a regulated activity: no exposure, no new liability.",[85,228,222,229,232],{},[97,230,231],{},"write API"," creates the transfer. AiO then stops recording what happened elsewhere: it makes it happen. Three things shift.",[85,234,235,238,239,242],{},[97,236,237],{},"Regulatory status."," In the CEMAC zone, the reform under way explicitly creates a category of payment service operators covering payment ",[97,240,241],{},"initiation",", subject to approval by the national monetary authority after COBAC opinion. If AiO initiates transactions, the question “who is the licensed operator” arises immediately. It does not arise at all while AiO merely records.",[85,244,245,248],{},[97,246,247],{},"Liability."," Today, if the partner terminal fails, that is the partner's problem. If AiO initiates and fails midway, it is ours — and yours. Cash out of the till with no reference issued is real money to be found.",[85,250,251,254],{},[97,252,253],{},"The technical difficulty changes order of magnitude."," The concrete problem:",[256,257,258,264],"blockquote",{},[85,259,260,261],{},"AiO calls the API. The network drops. ",[97,262,263],{},"Did the operation go through or not?",[85,265,266],{},"It went through and you retry → double transfer, money genuinely lost.\nIt did not and you do not retry → the customer paid, nothing was sent.",[85,268,269,270,273],{},"You cannot guess. You need an idempotency key ",[97,271,272],{},"accepted by the partner",", a status query endpoint, and a reconciliation loop that settles the uncertain cases. This is the hardest part of payments engineering — and it does not exist at all in read-only mode.",[119,275,276,279],{},[97,277,278],{},"Our recommendation."," Even if a write API became available, we would not put it in version 1. The read API already removes most of the re-keying for a fraction of the risk. Write access remains possible afterwards, as a separate decision — legal as much as technical.",[89,281,283],{"id":282},"where-each-partner-stands","Where each partner stands",[85,285,286],{},"The state of each partner programme, to the best of our knowledge today. To be confirmed contract in hand.",[153,288,289,302],{},[156,290,291],{},[159,292,293,296,299],{},[162,294,295],{},"Partner",[162,297,298],{},"Programme",[162,300,301],{},"Entry point",[169,303,304,327,352,374,390,403],{},[159,305,306,311,314],{},[174,307,308],{},[97,309,310],{},"Western Union",[174,312,313],{},"Formal Partnership Program: enrolment, API key, dedicated sandbox",[174,315,316,323,324],{},[317,318,322],"a",{"href":319,"rel":320},"https://developer.westernunion.com/getting-started.html",[321],"nofollow","developer.westernunion.com"," · ",[112,325,326],{},"wuconnect@westernunion.com",[159,328,329,334,345],{},[174,330,331],{},[97,332,333],{},"MoneyGram",[174,335,336,337,340,341,344],{},"Contract ",[97,338,339],{},"and"," partner/agent agreement signed ",[97,342,343],{},"before"," any testing",[174,346,347],{},[317,348,351],{"href":349,"rel":350},"https://developer.moneygram.com/moneygram-developer/docs/partner-application-pre-certification-certification-testing",[321],"developer.moneygram.com",[159,353,354,364,367],{},[174,355,356,359,360],{},[97,357,358],{},"Ria"," ",[361,362,363],"em",{},"(Euronet)",[174,365,366],{},"Full API or turnkey hosted solution",[174,368,369],{},[317,370,373],{"href":371,"rel":372},"https://www.riamoneytransfer.com/en-us/become-a-digital-partner-how/",[321],"Become a digital partner",[159,375,376,381,387],{},[174,377,378],{},[97,379,380],{},"Small World",[174,382,383,384],{},"⚠️ ",[97,385,386],{},"See below",[174,388,389],{},"—",[159,391,392,397,400],{},[174,393,394],{},[97,395,396],{},"JUBA Express",[174,398,399],{},"Regional player, no public programme identified",[174,401,402],{},"Direct commercial contact",[159,404,405,410,412],{},[174,406,407],{},[97,408,409],{},"KORI",[174,411,399],{},[174,413,402],{},[415,416,417,423],"warning",{},[85,418,419,422],{},[97,420,421],{},"Small World has ceased trading."," Small World Financial Services entered special administration on 18 June 2024 and stopped receiving and processing operations through its agents, branches, websites and applications. Around 6,000 outlets were affected in the UK.",[85,424,425],{},"This partner appears on your list. The corresponding configuration record is delivered and the module supports it; whether an exploitable flow exists, however, does not depend on us. If you wish to substitute another network, the substitution is made at framing, with no impact on the price.",[89,427,429],{"id":428},"what-an-api-partnership-application-requires","What an API partnership application requires",[85,431,432],{},"If the API route is pursued, here is what will be asked — and it explains why it is rarely within reach of a counter:",[434,435,436,443,449,455,461,467],"ul",{},[437,438,439,442],"li",{},[97,440,441],{},"Registered legal entity",", with articles and accounts",[437,444,445,448],{},[97,446,447],{},"Regulatory status",": licensed payment institution, or partnership with a licensed one",[437,450,451,454],{},[97,452,453],{},"Written AML/CFT programme"," and a named compliance officer",[437,456,457,460],{},[97,458,459],{},"Due diligence pack",": beneficial owners, governance, insurance",[437,462,463,466],{},[97,464,465],{},"Volume commitments"," — this is a commercial partnership, not a subscription",[437,468,469,472],{},[97,470,471],{},"Technical certification",": sandbox → certification → production",[85,474,475,478],{},[97,476,477],{},"Realistic timeline: 3 to 9 months",", dominated by legal and compliance, not by engineering.",[89,480,482],{"id":481},"the-sequence-we-recommend","The sequence we recommend",[85,484,485,488],{},[97,486,487],{},"1. Ask the master agent for the statements."," No cost, a few days, solves most of the need.",[85,490,491,494],{},[97,492,493],{},"2. Re-read every agency contract."," What it permits regarding exports and third-party processing is written there — and so are the clauses barring scraping.",[85,496,497,500],{},[97,498,499],{},"3. Start the API applications in parallel, without depending on them."," If they succeed, we add a connector — a short job, since the module is already in place.",[85,502,503,504,507],{},"This is exactly why the architecture provides four levels. ",[97,505,506],{},"The project must never wait for an API."," It starts on statements, and any access obtained later is a gain, not a condition.",[89,509,511],{"id":510},"where-exceptions-end-up","Where exceptions end up",[85,513,514],{},"An imported statement is not a reconciled statement. Whatever does not match lands in the same place: the exception queue. It is the screen nobody designs and everybody uses — the branch manager's screen at 6 p.m., when the count does not come out right.",[85,516,517,518,521],{},"Select a row: the three reconciliation sources appear, and ",[97,519,520],{},"the diverging one is highlighted",". That is the whole job of the system — saying not \"there is a discrepancy\" but \"here is which of the three sources disagrees with the other two\".",[523,524],"amtm-breaks-mock",{},[89,526,528],{"id":527},"what-we-commit-to","What we commit to",[85,530,531],{},"On a subject half of which is outside our control, the commitment must be precise. Here it is, as it appears in the dossier.",[533,534,535,541,547,557],"ol",{},[437,536,537,540],{},[97,538,539],{},"Deliver the module and its exception queue"," for all six partners, on statement import and assisted entry.",[437,542,543,546],{},[97,544,545],{},"Supply the access request pack"," for each operator — recipient, exact name of the access, documents required — so your agency can start the process without delay.",[437,548,549,552,553,556],{},[97,550,551],{},"Connect one API"," whose access is opened and documented ",[97,554,555],{},"before the end of month 6",", provided its protocol falls into the first two situations above. Included in the price.",[437,558,559,562],{},[97,560,561],{},"Quote separately"," for further connections, or those opened after month 6. With the module already in place, those connections are short.",[85,564,565],{},"In version 1, no real-time connection is promised: an agent starting out does not obtain API access in the first year, and an access opened mid-project could not be built, certified by the network and accepted within six months. The connection therefore belongs to phase 3, triggered when a network opens one to you. Writing it into V1 would be promising a calendar that neither you nor we control.",[119,567,568,571],{},[97,569,570],{},"The deliverable that unblocks connection pricing:"," an anonymised export of one day of operations, for each partner. It will tell us exactly which fields the statement provides — therefore exactly what the teller will not have to re-key.",{"title":114,"searchDepth":573,"depth":573,"links":574},2,[575,576,577,578,579,580,581,582,583],{"id":91,"depth":573,"text":92},{"id":131,"depth":573,"text":132},{"id":147,"depth":573,"text":148},{"id":211,"depth":573,"text":212},{"id":282,"depth":573,"text":283},{"id":428,"depth":573,"text":429},{"id":481,"depth":573,"text":482},{"id":510,"depth":573,"text":511},{"id":527,"depth":573,"text":528},"What a sub-agent can realistically obtain, and why the project must never wait for an API.","md",{"icon":587},"lucide:plug",true,{"title":33,"description":584},"-pzyVUgapAH8FOfYl3CaSQ342ZKYt9O14d-UbmQLFtw",[592,594],{"title":29,"path":30,"stem":31,"description":593,"children":-1},"The full functional coverage, family by family.",{"title":37,"path":38,"stem":39,"description":595,"children":-1},"The complete map of the system — its channels, its users, its six module families, its service core, its data, its security and its infrastructure.",1787177558610]