From feda83e7ae386ece9953e7cf57941eb27eb78729 Mon Sep 17 00:00:00 2001 From: Steven Oderayi Date: Tue, 17 Dec 2024 16:42:33 +0100 Subject: [PATCH] doc: update fxquotes seq. diagram --- diagrams/fxquotes.puml | 79 +++++++++++++++++++++--------------------- diagrams/fxquotes.svg | 2 +- 2 files changed, 41 insertions(+), 40 deletions(-) diff --git a/diagrams/fxquotes.puml b/diagrams/fxquotes.puml index b536dd8f..e90ab05b 100644 --- a/diagrams/fxquotes.puml +++ b/diagrams/fxquotes.puml @@ -52,10 +52,11 @@ box "Payer DFSP" #LightBlue participant "Payer\nMojaloop\nConnector" as D1 end box -participant "Quoting Service" as S1 - -box "Discovery Service" #LightYellow - participant "ALS Oracle" as ALS +box "Mojaloop Switch" #White + participant "Quoting Service" as QS + participant "ALS" as ALS + participant "ALS Oracle" as ALSOracle + participant "Services" as Services end box box "FX provider" @@ -90,18 +91,18 @@ PayerCC->PayerCC:Hmmm. I can only send in $payerCurrency.\nI need to get some cu PayerCC->>D1:What FXPs do you know about?\n**GET /services/FXP** !endif -D1->>S1:What FXPs do you know about?\n**GET /services/FXP** -activate S1 +D1->>Services:What FXPs do you know about?\n**GET /services/FXP** +activate Services !if ($simplified != true) -S1-->>D1:202 I'll get back to you +Services-->>D1:202 I'll get back to you !endif deactivate D1 -S1->ALS:What FXPs do you know about? -activate ALS -ALS-->S1:FDH FX -deactivate ALS -S1->>D1:Here are the available FXPs:FDH FX -note left of S1 +Services->ALSOracle:What FXPs do you know about? +activate ALSOracle +ALSOracle-->Services:FDH FX +deactivate ALSOracle +Services->>D1:Here are the available FXPs:FDH FX +note left of Services PUT /services/FXP { "providers": [ @@ -111,7 +112,7 @@ note left of S1 end note activate D1 !if ($simplified != true) -D1-->>S1:200 Gotcha +D1-->>Services:200 Gotcha !endif !if ($advancedCoreConnectorFlow != true) @@ -158,11 +159,11 @@ PayerCC->D1: I want to get a quote from this FXP\n**POST /fxQuotes** -deactivate S1 +deactivate QS !if ($shortCutSingleFXP != true) -D1->>S1:Here is the initial version of the transfer.\nPlease quote me for the currency conversion. +D1->>QS:Here is the initial version of the transfer.\nPlease quote me for the currency conversion. !else D1->>FXP:Here is the initial version of the transfer.\nPlease quote me for the currency conversion. !endif @@ -187,17 +188,17 @@ note right of D1 } end note !if ($shortCutSingleFXP != true) -activate S1 +activate QS !if ($simplified != true) -S1-->>D1:202 I'll get back to you +QS-->>D1:202 I'll get back to you !endif deactivate D1 -S1->>FXP:Here is the initial version of the transfer.\nPlease quote me for the currency conversion.\n**POST /fxQuote** +QS->>FXP:Here is the initial version of the transfer.\nPlease quote me for the currency conversion.\n**POST /fxQuote** activate FXP !if ($simplified != true) -FXP-->>S1:202 I'll get back to you +FXP-->>QS:202 I'll get back to you !endif -deactivate S1 +deactivate QS !else !if ($simplified != true) FXP-->>D1:202 I'll get back to you @@ -313,18 +314,18 @@ note left of FXP } end note !if ($shortCutSingleFXP != true) -FXP->>S1:Here's the signed conversion object -activate S1 +FXP->>QS:Here's the signed conversion object +activate QS !if ($simplified != true) -S1-->>FXP:200 Gotcha +QS-->>FXP:200 Gotcha !endif deactivate FXP -S1->>D1:Here's the signed conversion object\n**PUT /fxQuotes/$conversionRequestId** +QS->>D1:Here's the signed conversion object\n**PUT /fxQuotes/$conversionRequestId** activate D1 !if ($simplified != true) -D1-->>S1:Gotcha +D1-->>QS:Gotcha !endif -deactivate S1 +deactivate QS !else FXP-->>D1:Here's the signed conversion object\n**PUT /fxQuotes/$conversionRequestId** !if ($simplified != true) @@ -517,7 +518,7 @@ PayerCC->D1: I want to get a quote from the FSP\n**POST /quotes** !endif -D1->>S1:Please quote for a transfer which sends $fxpTargetAmount $payeeCurrency.\n**POST /quotes** +D1->>QS:Please quote for a transfer which sends $fxpTargetAmount $payeeCurrency.\n**POST /quotes** !if ($simplified != true) note right of D1 POST /quotes @@ -569,17 +570,17 @@ POST /quotes } end note !endif -activate S1 +activate QS !if ($simplified != true) -S1-->>D1:202 I'll get back to you +QS-->>D1:202 I'll get back to you !endif -S1->>D2:**POST /quotes** +QS->>D2:**POST /quotes** activate D2 !if ($simplified != true) -D2-->>S1:202 I'll get back to you +D2-->>QS:202 I'll get back to you !endif -deactivate S1 +deactivate QS D2->PayeeCC:**POST /quoterequests** !if ($simplified != true) note right of D2 @@ -648,7 +649,7 @@ note right of D2 end note !endif D2->D2:Now I will sign the transaction object -D2->>S1:Here's the signed quote +D2->>QS:Here's the signed quote note left of D2 **put /quotes/$quoteId** @@ -673,17 +674,17 @@ note left of D2 } end note -activate S1 +activate QS !if ($simplified != true) -S1-->>D2:200 Gotcha +QS-->>D2:200 Gotcha !endif deactivate D2 -S1->>D1:Here's the signed quote\n**PUT /quotes/382987a8-75ce-4037-b500-c475e08c1727** +QS->>D1:Here's the signed quote\n**PUT /quotes/382987a8-75ce-4037-b500-c475e08c1727** activate D1 !if ($simplified != true) -D1-->>S1:200 Gotcha +D1-->>QS:200 Gotcha !endif -deactivate S1 +deactivate QS D1->D1:OK, I can see that there are going to be $payeeFee $payeeCurrency in charges. == Sender Confirmation == diff --git a/diagrams/fxquotes.svg b/diagrams/fxquotes.svg index 04942ef2..e8c527d2 100644 --- a/diagrams/fxquotes.svg +++ b/diagrams/fxquotes.svg @@ -1 +1 @@ -FX Quotes using Mojaloop FX APIsPayer DFSP requests conversion with SEND amountPayer DFSPDiscovery ServiceFX providerPayee DFSPTundeTundePayer CBSPayer CBSCore ConnectorCore ConnectorPayerMojaloopConnectorPayerMojaloopConnectorQuoting ServiceQuoting ServiceALS OracleALS OracleFXPConnectorFXPConnectorBackend FX APIBackend FX APIPayeeMojaloopConnectorPayeeMojaloopConnectorCore ConnectorCore ConnectorYaroYaro1I'd like to pay Yaro300 BWP, please2Initiate remittance transferCurrency conversion3Hmmm. I can only send in BWP.I need to get some currency conversion4What FXPs do you know about?GET /services/FXP5What FXPs do you know about?GET /services/FXP6202 I'll get back to you7What FXPs do you know about?8FDH FX9Here are the available FXPs:FDH FXPUT /services/FXP{"providers": ["FDH_FX"]}10200 Gotcha11Here are the available FXPs{"providers": ["FDH_FX"]}12I'll ask FDH FX to perform my conversion13I want to get a quote from this FXPPOST /fxQuotes{"homeTransactionId": "string","conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}14Here is the initial version of the transfer.Please quote me for the currency conversion.post /fxQuotes{"conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}15202 I'll get back to you16Here is the initial version of the transfer.Please quote me for the currency conversion.POST /fxQuote17202 I'll get back to you18Lookup FX ratepost /fxQuotes{"conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}19Return FX rateI will add a 33 BWP fee for undertaking the conversion.Now I'll set an expiry time, sign the quotation object,{"conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}Now I'll sign the quotation object,create an ILP prepare packet and return it in the intermediary object. NOTE: the ILP prepare packet contains the following items, all encoded:- The amount being sent (i.e. in the source currency)- An expiry time- The condition- The name of the FXP- The content of the conversion termsPUT /fxQuotes/828cc75f-1654-415e-8fcd-df76cc9329b9{"condition": "GRzLaTP7DJ9t4P-a_BA0WA9wzzlsugf00-Tn6kESAfM","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}20Here's the signed conversion object21200 Gotcha22Here's the signed conversion objectPUT /fxQuotes/828cc75f-1654-415e-8fcd-df76cc9329b923Gotcha24Here are the conversion terms{"homeTransactionId": "string","condition": "GRzLaTP7DJ9t4P-a_BA0WA9wzzlsugf00-Tn6kESAfM","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}Agreement Phase25I want to get a quote from the FSPPOST /quotes{"fspId": "PayeeFSP","quotesPostRequest": {"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}}26Please quote for a transfer which sends 48000 TZS.POST /quotesPOST /quotes {"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}27202 I'll get back to you28POST /quotes29202 I'll get back to you30POST /quoterequests{"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}31OK, so I will charge 4000 TZS for this.Now I create terms of the transfer32Here are the terms{"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payeeFspFeeAmount": "4000","payeeFspFeeAmountCurrency": "TZS","payeeReceiveAmount": "44000","payeeReceiveAmountCurrency": "TZS","transferAmount": "48000","transferAmountCurrency": "TZS""expiration": "2021-08-25T14:17:09.663+01:00"}33Now I will sign the transaction object34Here's the signed quoteput /quotes/382987a8-75ce-4037-b500-c475e08c1727 {"transferAmount": {"currency": "TZS","amount": "48000"},"payeeReceiveAmount": {"currency": "TZS","amount": "44000"},"payeeFspFee": {"currency": "TZS","amount": "4000"},"expiration": "2021-08-25T14:17:09.663+01:00","ilpPacket": "<This is encoded transaction object. It contains data from quote request and response.>","condition": "HOr22-H3AfTDHrSkPjJtVPRdKouuMkDXTR4ejlQa8Ks"} 35200 Gotcha36Here's the signed quotePUT /quotes/382987a8-75ce-4037-b500-c475e08c172737200 Gotcha38OK, I can see that there are going to be 4000 TZS in charges.Sender Confirmation39Here's the quote for the transferIt expires at 2021-08-25T14:17:09.663+01:00{"quotes": {"body": {"transferAmount": {"currency": "TZS","amount": "48000"},"payeeReceiveAmount": {"currency": "TZS","amount": "44000"},"payeeFspFee": {"currency": "TZS","amount": "4000"},"expiration": "2021-08-25T14:17:09.663+01:00","ilpPacket": "<This is encoded transaction object. It contains data from quote request and response.>","condition": "HOr22-H3AfTDHrSkPjJtVPRdKouuMkDXTR4ejlQa8Ks"},"headers": {}},"currentState": "COMPLETED"}40Here's the quote41Hi, Tunde: I can do the transfer.It'll cost you 55 BWP(10000 TZS) in feesand Yaro will receive44000 TZS.Let me know if you want to go ahead42Great! Yes please, go ahead43Payer has accepted the terms please proceed \ No newline at end of file +FX Quotes using Mojaloop FX APIsPayer DFSP requests conversion with SEND amountPayer DFSPMojaloop SwitchFX providerPayee DFSPTundeTundePayer CBSPayer CBSCore ConnectorCore ConnectorPayerMojaloopConnectorPayerMojaloopConnectorQuoting ServiceQuoting ServiceALSALSALS OracleALS OracleServicesServicesFXPConnectorFXPConnectorBackend FX APIBackend FX APIPayeeMojaloopConnectorPayeeMojaloopConnectorCore ConnectorCore ConnectorYaroYaro1I'd like to pay Yaro300 BWP, please2Initiate remittance transferCurrency conversion3Hmmm. I can only send in BWP.I need to get some currency conversion4What FXPs do you know about?GET /services/FXP5What FXPs do you know about?GET /services/FXP6202 I'll get back to you7What FXPs do you know about?8FDH FX9Here are the available FXPs:FDH FXPUT /services/FXP{"providers": ["FDH_FX"]}10200 Gotcha11Here are the available FXPs{"providers": ["FDH_FX"]}12I'll ask FDH FX to perform my conversion13I want to get a quote from this FXPPOST /fxQuotes{"homeTransactionId": "string","conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}14Here is the initial version of the transfer.Please quote me for the currency conversion.post /fxQuotes{"conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}15202 I'll get back to you16Here is the initial version of the transfer.Please quote me for the currency conversion.POST /fxQuote17202 I'll get back to you18Lookup FX ratepost /fxQuotes{"conversionRequestId": "828cc75f-1654-415e-8fcd-df76cc9329b9","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS"},"expiration": "2021-08-25T14:17:09.663+01:00"}}19Return FX rateI will add a 33 BWP fee for undertaking the conversion.Now I'll set an expiry time, sign the quotation object,{"conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}Now I'll sign the quotation object,create an ILP prepare packet and return it in the intermediary object. NOTE: the ILP prepare packet contains the following items, all encoded:- The amount being sent (i.e. in the source currency)- An expiry time- The condition- The name of the FXP- The content of the conversion termsPUT /fxQuotes/828cc75f-1654-415e-8fcd-df76cc9329b9{"condition": "GRzLaTP7DJ9t4P-a_BA0WA9wzzlsugf00-Tn6kESAfM","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}20Here's the signed conversion object21200 Gotcha22Here's the signed conversion objectPUT /fxQuotes/828cc75f-1654-415e-8fcd-df76cc9329b923Gotcha24Here are the conversion terms{"homeTransactionId": "string","condition": "GRzLaTP7DJ9t4P-a_BA0WA9wzzlsugf00-Tn6kESAfM","conversionTerms": {"conversionId": "581f68ef-b54f-416f-9161-ac34e889a84b","initiatingFsp": "PayerFSP","counterPartyFsp": "FDH_FX","amountType": "SEND","sourceAmount": {"currency": "BWP","amount": "300"},"targetAmount": {"currency": "TZS","amount": "48000"},"expiration": "2021-08-25T14:17:09.663+01:00""charges": [{"chargeType": "string","sourceAmount": {"currency": "BWP","amount": "33"},"targetAmount": {"currency": "TZS","amount": "6000"}}]}}Agreement Phase25I want to get a quote from the FSPPOST /quotes{"fspId": "PayeeFSP","quotesPostRequest": {"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}}26Please quote for a transfer which sends 48000 TZS.POST /quotesPOST /quotes {"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}27202 I'll get back to you28POST /quotes29202 I'll get back to you30POST /quoterequests{"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payee": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "2551234567890","fspId": "PayeeFSP"},"name": "Yaro","personalInfo": {"complexName": {"firstName": "Yaro","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16","kycInformation": "<Encrypted KYC Data>"},"supportedCurrencies": [ "TZS" ]},"payer": {"partyIdInfo": {"partyIdType": "MSISDN","partyIdentifier": "26787654321","fspId": "PayerFSP"},"name": "Tunde","personalInfo": {"complexName": {"firstName": "Tunde","middleName": "","lastName": ""},"dateOfBirth": "1966-06-16"}},"amountType": "SEND","amount": {"currency": "TZS","amount": "48000"},"converter": "PAYER","expiration": "2021-08-25T14:17:09.663+01:00"}31OK, so I will charge 4000 TZS for this.Now I create terms of the transfer32Here are the terms{"quoteId": "382987a8-75ce-4037-b500-c475e08c1727","transactionId": "d9ce59d4-3598-4396-8630-581bb0551451","payeeFspFeeAmount": "4000","payeeFspFeeAmountCurrency": "TZS","payeeReceiveAmount": "44000","payeeReceiveAmountCurrency": "TZS","transferAmount": "48000","transferAmountCurrency": "TZS""expiration": "2021-08-25T14:17:09.663+01:00"}33Now I will sign the transaction object34Here's the signed quoteput /quotes/382987a8-75ce-4037-b500-c475e08c1727 {"transferAmount": {"currency": "TZS","amount": "48000"},"payeeReceiveAmount": {"currency": "TZS","amount": "44000"},"payeeFspFee": {"currency": "TZS","amount": "4000"},"expiration": "2021-08-25T14:17:09.663+01:00","ilpPacket": "<This is encoded transaction object. It contains data from quote request and response.>","condition": "HOr22-H3AfTDHrSkPjJtVPRdKouuMkDXTR4ejlQa8Ks"} 35200 Gotcha36Here's the signed quotePUT /quotes/382987a8-75ce-4037-b500-c475e08c172737200 Gotcha38OK, I can see that there are going to be 4000 TZS in charges.Sender Confirmation39Here's the quote for the transferIt expires at 2021-08-25T14:17:09.663+01:00{"quotes": {"body": {"transferAmount": {"currency": "TZS","amount": "48000"},"payeeReceiveAmount": {"currency": "TZS","amount": "44000"},"payeeFspFee": {"currency": "TZS","amount": "4000"},"expiration": "2021-08-25T14:17:09.663+01:00","ilpPacket": "<This is encoded transaction object. It contains data from quote request and response.>","condition": "HOr22-H3AfTDHrSkPjJtVPRdKouuMkDXTR4ejlQa8Ks"},"headers": {}},"currentState": "COMPLETED"}40Here's the quote41Hi, Tunde: I can do the transfer.It'll cost you 55 BWP(10000 TZS) in feesand Yaro will receive44000 TZS.Let me know if you want to go ahead42Great! Yes please, go ahead43Payer has accepted the terms please proceed \ No newline at end of file