Skip to main content

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

NoEnquiry ScenarioProxy Owned byEnquiry ByStatusExpected ResponseDisplayed to Customer
1Full Proxy ResolutionParticipant AParticipant AActiveRegistration Number
Participant Nickname
Proxy Type
Proxy Id
Account Number
Account Holder Name
Account Holder Name
2Full Proxy ResolutionParticipant BParticipant AActiveRegistration Number
Participant Nickname
Proxy Type
Proxy Id
Account Number
Account Holder Name
Account Holder Name
3Proxy Name EnquiryParticipant AParticipant AActiveRegistration Number
Account Holder Name
Account Holder Name
4Proxy Name EnquiryParticipant BParticipant AActiveAccount Holder NameAccount Holder Name
5Proxy CheckParticipant AParticipant AActiveStatusStatus
6Proxy CheckParticipant BParticipant AActiveStatusStatus

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 Details
Pay-by-Proxy – Enter Payment Details

Pay-by-Proxy – Confirm Proxy ID, Name and Payment

Successful End-to-End Pay by Proxy Flow


StepSenderReceiverProcesses
1CustomerOFICustomer logs into Online Banking or Mobile Banking app and initiates a DuitNow Transfer – Pay-by-Proxy
2OFIRPPOFI performs the following:If all validations are successful:
  • Send Proxy Resolution Enquiry message request
3RPPOFIRPP performs the following:If any of the validations are not successful:
  • Send a NEGATIVE/REJECT response
If all validations are successful:
  • Send Proxy Resolution Enquiry message response with the necessary beneficiary account information
4OFICustomerOFI performs the following:If all validations are successful:
  • If SUCCESSFUL response:
    • Display the proxy account details to Customer for payment confirmation
  • If UNSUCCESSFUL response:
    • Display an error message to the Customer
5CustomerOFICustomer verifies the beneficiary account details and confirms on the payment
6OFIRPPOFI performs the following:If all validations are successful:
  • Send Credit Transfer message request
7RPPRFIRPP performs the following:If any of the Message Validations fails:
  • Return a REJECT response to OFI
If any of the Business Validations fails:
  • Return a NEGATIVE response to OFI
If any of the Proxy Validations fails:
  • Return a NEGATIVE response to OFI
If all validations are successful:
  • Send Credit Transfer message request
8RFIRPPRFI performs the following:If any of the Message Validations fails:
  • Send a REJECT response
If any of the Business Validations fails:
  • Send a NEGATIVE response
If any of the Beneficiary Account Validations fails:
  • Send a NEGATIVE response
If all validations are successful:
  • Send Credit Transfer with successful message response
9RPPOFIRPP performs the following:If any of the Message Validations fails:
  • Send a REJECT response
If any of the Business Validations fails:
  • Send a NEGATIVE response
If all validations are successful:
  • Update liquidity and settlement positions of both OFI and RFI
  • Send Credit Transfer message response
Notes: If the signature received from RFI could not be verified:
  • RPP will send an ACCEPTED (signature error) response to THE OFI if the RFI responds with a SUCCESSFUL transaction status
  • RPP will send an actual REJECT response to the OFI if RFI responds with a REJECT transaction status
This should take care of any message manipulation done within the data when a signature could not be verified
10OFICustomerOFI performs the following:If all validations are successful:
  • If SUCCESSFUL response is received:
    • Display the final payment status to the Customer
  • If UNSUCCESSFUL response is received:
    • Display an error message to the Customer

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

NoConditionScenarioSenderReceiverMessage Schema

Out: From Sender
In: To Receiver
1Successful Pay-by-Proxy OFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: pacs.008.001.06
RFIRPPOut: pacs.002.001.08
In: pacs.002.001.08
RPPOFIOut: pacs.002.001.08
In: pacs.002.001.08
2Message Validation Failure 1Request from OFI:
  • Signature could not be verified
  • Message parsing failed
  • Mandatory fields level validation failed
  • Unknown inbound message
OFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: admi.002.001.01
In: admi.002.001.01
OFIRPPOut: NA
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
3Message Validation Failure 2Response from RPP:
  • Signature could not be verified
OFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: NA
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
4Message Validation Failure 3Request from RPP:
  • Signature could not be verified
  • Message parsing failed
  • Mandatory fields level validation failed
  • Unknown inbound message
OFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: pacs.008.001.06
RFIRPPOut: admi.002.001.01
In: admi.002.001.01
RPPOFIOut: admi.002.001.01
In: admi.002.001.01
5Proxy Validation FailureRPP returns a negative response due to proxy not foundOFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: NA
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
6Business Validation Failure
  • RFI is not a participant of RPP
  • Invalid Date
  • RFI is inactive
OFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPRFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: pacs.002.001.08
In: pacs.002.001.08
7Beneficiary Account Validation FailureRFI returns a negative response due to account related validation failure like Invalid Account, Account Closed, Account On hold, Account Blacklisted and etcOFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: pacs.008.001.06
RFIRPPOut: pacs.002.001.08
In: pacs.002.001.08
RPPOFIOut: pacs.002.001.08
In: pacs.002.001.08
8Timeout 1RPP did not receive requestOFIRPPOut: prxy.003.001.01
In: NA
RPPOFIOut: NA
In: NA
OFIRPPOut: NA
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
9Timeout 2OFI did not receive responseOFIRPPOut: prxy.003.001.01
In: prxy.003..001.01
RPPOFIOut: prxy.004.001.01
In: NA
OFIRPPOut: NA
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
10Timeout 3RPP did not receive requestOFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: NA
RPPRFIOut: NA
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
11Timeout 4OFI did not receive responseOFIRPPOut: prxy.003.001.01
In: prxy.003..001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: NA
RFIRPPOut: NA
In: NA
RPPOFIOut: NA
In: NA
12Timeout 5RPP did not receive responseOFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: pacs.008.001.06
RFIRPPOut: pacs.002.001.08
In: NA
RPPOFIOut: NA
In: NA
13Timeout 6OFI did not receive responseOFIRPPOut: prxy.003.001.01
In: prxy.003.001.01
RPPOFIOut: prxy.004.001.01
In: prxy.004.001.01
OFIRPPOut: pacs.008.001.06
In: pacs.008.001.06
RPPRFIOut: pacs.008.001.06
In: pacs.008.001.06
RFIRPPOut: pacs.002.001.08
In: pacs.002.001.08
RPPOFIOut: pacs.002.001.08
In: NA

See also