[ 
https://issues.apache.org/jira/browse/FINERACT-2750?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Victor Romero updated FINERACT-2750:
------------------------------------
    Summary: Search by cheque number, routing code and receipt number  (was: 
Search by routing code and receipt number)

> Search by cheque number, routing code and receipt number
> --------------------------------------------------------
>
>                 Key: FINERACT-2750
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2750
>             Project: Apache Fineract
>          Issue Type: Bug
>            Reporter: Victor Romero
>            Assignee: Victor Romero
>            Priority: Major
>
> Search by cheque number, routing code and receipt number is required because 
> currently in Apache Fineract, *routing code* and *receipt number* live on 
> payment details (m_payment_detail) and are attached to loan and savings 
> transactions. When the core is wired to payment gateways / payment hubs / 
> mobile-money rails, those two fields are the main *external correlation keys* 
> not Fineract’s internal transaction id.
> h3.  
> ||Field||Typical meaning outside Fineract||
> |*Routing code*|Channel / institution / switch identifier (bank routing 
> number, sort code, mobile-money provider code, payment-type routing key, 
> etc.)|
> |*Receipt number*|Gateway’s unique proof of the payment (RRN, operator 
> receipt, mobile-money confirmation, ACH/wire reference, etc.)|
>  
>  
> Gateways almost never know Fineract’s internal id. They return _their_ 
> receipt and routing identifiers. Staff and automated jobs therefore need to 
> find the core transaction using those external values.
> h3. Why lookup by them is required
> *1. Reconciliation* Gateway reports and statements list receipt + routing 
> codes. Ops must match those lines to Fineract deposits/repayments without 
> relying on internal ids that the gateway never sees.
> *2. Idempotency / duplicate protection* Callbacks and retries from a gateway 
> often resend the same receipt. Looking up by routing code + receipt number 
> lets the system detect “already posted” and avoid double-crediting.
> *3. Customer support and dispute handling* A client quotes the SMS receipt or 
> bank reference (“I paid, receipt ABC123”). Support must find the transaction 
> in Fineract by that external reference, not by an internal id the client 
> never received.
> *4. Multi-channel deployments* One Fineract instance may receive money via 
> several providers (M-Pesa, bank transfer, card, etc.). Routing code 
> distinguishes _which_ channel; receipt number identifies _which_ payment on 
> that channel.
> *5. Async settlement flows* Payment hub / Mojaloop-style flows: request → 
> accept → settle. Intermediate and final messages reference the same external 
> receipt/routing identifiers. The core must resolve those to the correct 
> account transaction.
> *6. Reversals and adjustments* Reversals from the gateway usually cite the 
> original receipt. Fineract needs to locate the original payment detail by 
> receipt (and often routing code) to reverse or adjust the right transaction.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to