Comments (12)
Aligned and Support to have this implementation with PATCH /transfers/ notification
from mojaloop-specification.
I support this change. This is an elegant way to conduct and track the progressive state change for selected use cases.
I would suggest, however, looking at the state labels that are used in the normal case:
In the bilateral arrangement, PUT COMMITTED (as written in the spec) makes sense since the payee commits the transfer in its own books.
However, when the optional switch is present, it would be more accurate to have payee PUT “FULFILLED” since only the switch can COMMIT the transfer for settlement. This indicates the unstable state of the transfer— payee has already paid out (I.e. fulfilled) when requesting clearing of the transfer. Next state entered by the switch is either COMMITTED or ABORTED.
from mojaloop-specification.
A gentle reminder to all assignees regarding review of this change request..
from mojaloop-specification.
from mojaloop-specification.
Thanks Miller,
I fully understand your view on fulfilled vs committed, but in the FSP's view the transfer is committed in their system so I don't see it as incorrect as it is now. The description of the possible transfer states in Figure 55 is also saying "Next ledger successfully performed the transfer", as such the state only represents the local ledger's state, not the switch ledger's state of the transfer. Using state FULFILLED would require a new major version of the API, as that state does not exist in the current major version (1).
from mojaloop-specification.
from mojaloop-specification.
Thanks for the additional information.
The transfer is committed in at least our system, we don't discern based on if it's a bilateral or switch-based scheme. If there would be a problem later with a transfer, it can be manually handled (e.g. refunded or reversed) by customer care, similar to other internal transactions. There is no difference in this between a bilateral or switch-based transfer in our system, both of them can be manually handled if there is a need for it.
The issue becomes clear when the payee DFSP asks the switch what the state of a transfer is. If the switch says it is committed, that means it is scheduled for settlement and the transfer is final. But if the transfer has not yet been committed within the switch, what state will the switch report to the payee DFSP?
What is said in the specification is that the switch should only return the finalized (terminal) state. It should wait with sending the callback to the FSP until it knows the finalized state. Excerpt from Section 6.7.1.6:
"If the GET /transfers/<ID> is received by the Switch after PUT /transfers/<ID> from the Payee FSP, but before clearing has completed, the Switch should wait with sending the callback until clearing has completed with either a successful or unsuccessful result. If clearing has already occurred (as shown in Figure 53), the PUT /transfers/<ID> callback can be sent immediately."
We can take this up separately as it does not have any impact to the CR on this thread. Perhaps we should separate this to a separate issue?
Sounds great, let's discuss further in a separate issue.
from mojaloop-specification.
A note to not forget about backward compatibility when this change comes ready for implementation.
Assuming this change becomes part of an API spec version iteration, there is a need to allow DFSPs on the existing v1.0 version of the spec to co-exist with switch and other DFSPs who support the new model. This comes back to the points raised during the Jan 2020 Johannesburg convening about API versioning, upgrade path and backward compatibility.
from mojaloop-specification.
@bushjames thanks. This (backward compatibility) has been (and will be) one of the primary considerations regarding this.
from mojaloop-specification.
This is now included in the Mojaloop FSP Interoperability API v1.1.
Before closing I had a question - can this be applied to bulk transfers as well? If so, at bulk level or individual transfer level, will raise it in the next CCB meeting.
from mojaloop-specification.
Before closing I had a question - can this be applied to bulk transfers as well? If so, at bulk level or individual transfer level, will raise it in the next CCB meeting.
No, not without major changes to the API. The BulkTransferState does not have a similar RESERVED state, and the IndividualTransferResult does not contain a state (they are either fulfilled or rejected).
from mojaloop-specification.
Ok, thanks @ehenrka
from mojaloop-specification.
Related Issues (20)
- Solution Proposal: Notify Payee FSP in case of failure to commit on a Switch HOT 3
- Change Request: Refactoring 3PPI Transfer Interface HOT 25
- Change Request: Extensions to 3PPI Interface HOT 8
- Change Request: no additional properties should be allowed at requests and responses other than those defined at FSPIOP API HOT 2
- Change Request: Possibility to notify Payee FSP on completion of a bulk transfer in Switch HOT 6
- Managing duplicate identifiers in Mojaloop HOT 2
- Change Request: Extra properties for Participant HOT 14
- Change Request: Uniquely identifying requests in the /participants endpoint HOT 5
- Change Request: ISO 20022 Version of FSPIOP API HOT 3
- Change Request: Modifications to Admin API to support Settlement HOT 32
- Start investigating the possibility of a v2.0 FSPIOP API specification HOT 23
- Change Request: Changing the format of a correlation ID in Mojaloop HOT 14
- Change Request: Should the response to a GET /parties contain a correlation ID? HOT 4
- Change Request: Co-ordinating Transfer Time-outs HOT 3
- Change Request: Third party account linking discovery requires prior user authorisation
- Change Request: PISP Bulk payment support HOT 5
- Settlements CGS Handler v15.0.3 failing on GP CGS tests HOT 1
- Solution Proposal: Track proximate sender for inter-scheme transfers HOT 7
- Figure 41 of the API services definition document is not correct HOT 3
- Change Request: Modifications to /participants endpoint HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mojaloop-specification.