P2M Mandate (Both customer and merchant are on our stack)
Customer initiates the mandate from sdk. Callback: Outgoing Create Mandate From Customer. Refer Callbacks.
Recurring
If the Mandate creation was successful, we will go for execution (1st debit)
Based on the execution of Mandate , we will give back two Callback:Mandate status
If execution successful then state changes from CREATED -> ACTIVE,and we send mandate status callback with event_name = MANDATE_ACTIVATED. If execution unsuccessful then state changes from CREATE -> FAILURE, and we send mandate status callback with event_name = MANDATE_FAILEDTransaction status
If execution successful then transaction status will change to CHARGED and we will send Transaction status callback with event_name = ORDER_SUCCEEDED. If execution not successful then transaction status will change to failure state ( AUTHENTICATION_FAILED / AUTHORIZATION_FAILED etc ) and we will send Transaction status callback with event_name = ORDER_FAILED
If the Mandate creation was not successful
the status of Mandate will change from CREATED -> FAILURE, and also the status of transaction will change.
Callback :Mandate status(event_name = MANDATE_FAILED)
Transaction status(event_name = ORDER_FAILED)
ONE TIME
Mandate Status
If successful then state changes from CREATED -> ACTIVE, and we send mandate status callback with event_name = MANDATE_ACTIVATED
If unsuccessful then state changes from CREATE -> FAILURE, and we send mandate status callback with event_name = MANDATE_FAILED
Transaction Status
If successful then transaction status will change toCHARGEDand we will send Transaction status callback with event_name = ORDER_SUCCEEDED
If Not successful then transaction status will change to failure state ( AUTHENTICATION_FAILED / AUTHORIZATION_FAILED etc ) and we will send Transaction status callback with event_name = ORDER_FAILED
Merchant Goes for execution
Callbacks:Transaction status(This will be for the new order id )
If successful then transaction status will change toCHARGEDand we will send Transaction status callback with event_name = ORDER_SUCCEEDED
If Not successful then transaction status will change to failure state ( AUTHENTICATION_FAILED / AUTHORIZATION_FAILED etc ) and we will send Transaction status callback with event_name = ORDER_FAILED
If blockFund = false
Incoming Pre Payment Notification Mandate For Customer
Amount greater than > 5000 rupees then callback:Incoming Collect Request to Customer
MERCHANT_CUSTOMER_DEBITED_FOR_MERCHANT_VIA_COLLECT
If blockFund = trueMERCHANT_CUSTOMER_DEBITED_FOR_MERCHANT_VIA_COLLECT
Update
RECURRING OR ONE TIME MANDATE with blockFund = false
Since customer has initiated the Mandate, so only customer can update and not the Merchant. No approval needed for the same.
Callbacks:Outgoing Update Mandate From Customer
Mandate status callback with event_name = MANDATE_UPATED
ONE TIME MANDATE with blockFund = true
Please note this is not IPO Mandate case, for IPO mandate creation will be done by exchange and not the customer. Neither customer nor the merchant can update.
Revoke
RECURRING OR ONE TIME MANDATE with blockFund = false
Customer goes for revoke. Callback:
Outgoing Update Mandate From Customer
Mandate status callback with event_name = MANDATE_REVOKED
Merchant goes for revoke. Callback:
Incoming Update Mandate For Customer
mandate status callback with event_name =MANDATE_REVOKED
ONE TIME MANDATE with blockFund = true
Since the funds are blocked, customer cannot revoke. Merchant goes for revoke. Callback:
Incoming Update Mandate For Customer
Pause / Unpause
RECURRING OR ONE TIME MANDATE with blockFund = false
Only the customer can pause / unpause the mandate. No approval needed for the same. Callbacks:Outgoing Pause Mandate From Customer (mandate_type as PAUSE or UNPAUSE)
Mandate status callback with event_name = MANDATE_PAUSED (Mandate_type as PAUSE or UNPAUSE)
or
mandate status callback with event_name = MANDATE_ACTIVE (if unpause)
RECURRING OR ONE TIME MANDATE with blockFund = false
Neither customer nor the merchant can pause.

