Pay By Proxy
See also API reference for NAD
Introduction
Pay by Proxy provides an alternate way for the Customer to pay to another customer using their registered Proxy ID like mobile number, NRIC, Passport Number, Army Number or Business Registration Number instead of Account Number
The payment flow is very similar to DuitNow Transfer but participant will now need to initiate a Proxy Resolution Enquiry request instead of Account Enquiry to retrieve the recipient’s name for confirmation. Once the Customer confirms the transaction details such as Proxy ID and beneficiary name, the Participant will send a Credit Request to RPP for processing
Proxy Resolution Enquiry
Proxy resolution enquiry is used to determine if particular proxy is valid and ready to receive payment. There are many situations in which you may need to know if a particular proxy provided by customer is valid before accepting payment request. Examples include:
- Customer needs to validate the beneficiary account name before making final confirmation to the payment request
- Customer needs to ensure the recipient details before making top-up to their eWallet account
This request can be initiated from Pay by Proxy transaction or as a standalone transaction by the Customer
The table below contains guidance to Participants as to what information to be displayed to the Customer
No | Enquiry Scenario | Proxy Owned by | Enquiry By | Status | Expected Response | Displayed to Customer |
---|---|---|---|---|---|---|
1 | Full Proxy Resolution | Participant A | Participant A | Active | Registration Number Participant Nickname Proxy Type Proxy Id Account Number Account Holder Name | Account Holder Name |
2 | Full Proxy Resolution | Participant B | Participant A | Active | Registration Number Participant Nickname Proxy Type Proxy Id Account Number Account Holder Name | Account Holder Name |
3 | Proxy Name Enquiry | Participant A | Participant A | Active | Registration Number Account Holder Name | Account Holder Name |
4 | Proxy Name Enquiry | Participant B | Participant A | Active | Account Holder Name | Account Holder Name |
5 | Proxy Check | Participant A | Participant A | Active | Status | Status |
6 | Proxy Check | Participant B | Participant A | Active | Status | Status |
Credit Transfer
Pay by Proxy leverages on the same Credit Transfer as the second leg of the transaction to push payment transaction of an amount from a bank account (the debtor account) to a beneficiary account (the creditor) that can be invoked from the Participants’ various channels or touchpoints within their ecosystem. Some of these touchpoints may be Internet Banking, Mobile Banking, Branches, Kiosks and etc
Sample Use Case
Pay-by-Proxy – Enter Proxy DetailsPay-by-Proxy – Enter Payment Details
Pay-by-Proxy – Confirm Proxy ID, Name and Payment
Successful End-to-End Pay by Proxy Flow
Step | Sender | Receiver | Processes |
---|---|---|---|
1 | Customer | OFI | Customer logs into Online Banking or Mobile Banking app and initiates a DuitNow Transfer – Pay-by-Proxy |
2 | OFI | RPP | OFI performs the following:
|
3 | RPP | OFI | RPP performs the following:If any of the validations are not successful:
|
4 | OFI | Customer | OFI performs the following:If all validations are successful:
|
5 | Customer | OFI | Customer verifies the beneficiary account details and confirms on the payment |
6 | OFI | RPP | OFI performs the following:
|
7 | RPP | RFI | RPP performs the following:If any of the Message Validations fails:
|
8 | RFI | RPP | RFI performs the following:If any of the Message Validations fails:
|
9 | RPP | OFI | RPP performs the following:If any of the Message Validations fails:
|
10 | OFI | Customer | OFI performs the following:If all validations are successful:
|
Notes:
- The exception scenarios will be handled similarly to Credit Transfer flows
Message Schema
Below illustrates the message schema to be used for each transaction leg. For actual schema and message version, please refer to the API specifications instead
No | Condition | Scenario | Sender | Receiver | Message Schema Out: From Sender In: To Receiver |
---|---|---|---|---|---|
1 | Successful Pay-by-Proxy | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 | |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RFI | RPP | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
RPP | OFI | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
2 | Message Validation Failure 1 | Request from OFI:
| OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: admi.002.001.01 In: admi.002.001.01 | |||
OFI | RPP | Out: NA In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
3 | Message Validation Failure 2 | Response from RPP:
| OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: NA In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
4 | Message Validation Failure 3 | Request from RPP:
| OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RFI | RPP | Out: admi.002.001.01 In: admi.002.001.01 | |||
RPP | OFI | Out: admi.002.001.01 In: admi.002.001.01 | |||
5 | Proxy Validation Failure | RPP returns a negative response due to proxy not found | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: NA In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
6 | Business Validation Failure |
| OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | RFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
7 | Beneficiary Account Validation Failure | RFI returns a negative response due to account related validation failure like Invalid Account, Account Closed, Account On hold, Account Blacklisted and etc | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RFI | RPP | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
RPP | OFI | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
8 | Timeout 1 | RPP did not receive request | OFI | RPP | Out: prxy.003.001.01 In: NA |
RPP | OFI | Out: NA In: NA | |||
OFI | RPP | Out: NA In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
9 | Timeout 2 | OFI did not receive response | OFI | RPP | Out: prxy.003.001.01 In: prxy.003..001.01 |
RPP | OFI | Out: prxy.004.001.01 In: NA | |||
OFI | RPP | Out: NA In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
10 | Timeout 3 | RPP did not receive request | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: NA | |||
RPP | RFI | Out: NA In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
11 | Timeout 4 | OFI did not receive response | OFI | RPP | Out: prxy.003.001.01 In: prxy.003..001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: NA | |||
RFI | RPP | Out: NA In: NA | |||
RPP | OFI | Out: NA In: NA | |||
12 | Timeout 5 | RPP did not receive response | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RFI | RPP | Out: pacs.002.001.08 In: NA | |||
RPP | OFI | Out: NA In: NA | |||
13 | Timeout 6 | OFI did not receive response | OFI | RPP | Out: prxy.003.001.01 In: prxy.003.001.01 |
RPP | OFI | Out: prxy.004.001.01 In: prxy.004.001.01 | |||
OFI | RPP | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RPP | RFI | Out: pacs.008.001.06 In: pacs.008.001.06 | |||
RFI | RPP | Out: pacs.002.001.08 In: pacs.002.001.08 | |||
RPP | OFI | Out: pacs.002.001.08 In: NA |