RPPS Bill Payments
Mastercard Remote Payment and Presentment Service (RPPS), which was first introduced in 1987, is an electronic payment network that allows financial institutions to offer bill payment services to consumers. RPPS connects banks to billers, and is used by many U.S. banks. The service includes a directory of around 44,000 national and local billers, and Mastercard manages the transfer of funds to them via payment processing that provides electronic routing, posting, and same day settlement of financial transactions. The system supports not just the forwarding of payments to the billers, but remittance advice as well, such as, the Client's utility bill account number, service address and the like.
The Main Actors
Participant | Detail |
---|---|
Originator | The Originator originates sends the payments files to RPPS. The Originator’s Bank is a financial institution used by any Originator. It is the institution from which the MasterCard Settlement Bank obtains funds via a Fedwire to credit Receivers for payment files sent through the RPPS network. |
Biller | The Biller is a company to which a MasterCard RPPS payment transaction is sent |
Biller's Bank | A Biller’s Bank is a financial institution that receives payments on behalf of a Biller from an Originator via the RPPS network. |
MasterCard RPPS | MasterCard RPPS maintains all connections between Originators and Receivers to transmit data and funds. It allows all parties involved to have one connection to reach multiple Originators and Billers, and maintains all connections. |
Process Flow
- The Client initiates a bill payment request for their utility bill
- The Client provides bill payment details including the service address and account number, and the current bill payment amount.
- Mbanq and the Platform look up the utility company in the RPPS Biller Directory, and present the matching biller to the Client.
- The Client confirms the biller is correct and authorizes the payment.
- Mbanq prepares the RPPS formatted payment file containing all that day's bill payments and sends it through to the Partner bank. Note: Settlement occurs once daily at 6 PM PST for the total processing that occurred that day.
- The Partner bank sends the file to MasterCard RPPS to process. This includes file account number validation and sorting/batching of payments.
- MasterCard RPPS processes the payment file after all accounts number validations are complete and inaccurate account numbers have been rejected.
- MasterCard RPPS sends payment files to the appropriate Biller.
- MasterCard RPPS sends confirmation files to the Partner bank confirming transactions received, processed, any rejects from RPPS, returns from Billers, and reasons for the reject or return. Note: payments are guaranteed good and cannot be recalled.
- The Utility Biller posts the credit to its account receivable.
Process Diagram

APIs
Process Function | Key Attributes | Endpoint |
---|---|---|
Search for RPPS Biller | GET - Biller Name (mandatory) RETURNS List / Array { "id": 10101, "billerKey": "2342343799", "recordEffectiveDate": "2024-02-02", "billerId": "2342423423432", "liveDate": "2024-02-02", "transitRoutingNumber": "3242347", "billerName": "Apple Inc California", "billerClass": "Hitech", "billerType": "Mobile", "countryCode": "USA", "stateProvinceCode": "cAS", "checkDigitRoutine": "Y", "currencyCode": "USD", "territoryCode": "1" }, | Search_Biller |
Get Biller | GET - billerID RETURNS Biller details { ... } | Get_Biller |
Get My Bills List | GET - Client ID RETURNS List / Array { "totalFilteredRecords": 2, "pageItems": [ { "id": 85938, "clientId": 31287, "amount": 10.0, "correlationId": "6B56xh4DxD5gzEjpuW11gsrdfsd1f", "correspondent": { "address": [ "Apple, Inc, "Coopertino, California", "78 US" ] }, "creditor": { "accountEntity": "BUSINESS", "identifier": "ID:31848", "name": "Vinod Gowda", "country": "US", "agent": {}, "address": ... } | Get_My_Bills |
Add RPPS Biller to My Bills List | POST Payload : { "nickName": "Vamsi", // Mandatory "recipientType": "Person", // Mandatory : Individual and BUSINESS "firstName": "Vamsi", // Conditionally Mandatory (Individual) "lastName": "USA",// Conditionally Mandatory (Individual) "businessName": "Vamsi", // Conditionally Mandatory (BUSINESS) "emailAddress": "[email protected] ", //optional "phoneNumber": "4804804801", //optional "paymentRail": "ACH", // Mandatory : ACH, Wire, Internal, SWIFT "isOwnAccount": true, // Mandatory : true or false "address": { //Mandatory for wire, swift "line1": "String", //Mandatory "line2": "String", "city" : "Park City", //Mandatory "stateCode": "String", //Mandatory "countryCode": "String", //Mandatory "postalCode": "String" //Mandatory }, "accountDetails": { "accountId" : "String" "accountNumber": "String", "accountType": "CHECKING", "bankInformation": { "routingNumber": "1234",// ABA for ACH & Wire "swiftCode" : "ABAD", // SWIFT Code for International wire "address": { // optional "line1": "String", "line2": "String", "city" : "Park City", "stateCode": "String", "countryCode": "String", "postalCode": "String" }, }, }, "note": ""//any reference text } | Add_Biller_to_My_Recipient_List |
Schedule Payment to My Biller | POST Payload : { "paymentType": "CREDIT", "paymentRail": "BILLPAY", "correlationId": "6B56xh4DxD5gmYzEjpuZn11dfsdfsd1f", "payByDateTime" : "2024-06-25 12:13:07", "amount": 10, "originator": { "accountId": "95002" }, "recipient": { "billerRecordId": "10001" }, "reference": "xx22323x reference text" // Character length 140 } | Schedule_Payment_to_My_Biller |
Get Payment Status | GET Query Params : paymentId RETURNS - Status (ex. submitted, pending, paid, returned) | Get_Payment_Status |
Get Payments History List by Biller | GET Query Params : paymentId paymentType recipientId | Get_Payment_History_by_Biller |
Get Pending Payments | GET Query Params : clientId paymentType status RETURNS List / Array - Biller RPPS ID - Biller Name - Payment ID - Payment Amount - Pay by Date (greater than today's date) - Status (ex. submitted, pending) | Get_Pending_Payments |
Cancel Biller Payment | POST PATH : /payments?id=123231 METHOD : DELETE | Cancel_Biller_Payment |
Update Biller Account Number | PUT Payload : { "accountDetails": { "accountId" : "String" "accountNumber": "String", "accountType": "CHECKING", "bankInformation": { "routingNumber": "1234",// ABA for ACH & Wire & BillPay "swiftCode" : "ABAD", // SWIFT Code for International wire "address": { // optional "line1": "String", "line2": "String", "city" : "Park City", "stateCode": "String", "countryCode": "String", "postalCode": "String" }, }, }, "note": ""//any reference text } | Update_Biller_Account_Number |
Lastly, set up a webhook to listen for updates on the payment status.
Biller Directory Layout
- Record 0 consists of biller information.
- Record 1 contains biller addresses.
- Record 2 contains biller masks.
- There may be multiple 1 and 2 records associated with a 0 record.
- Each 1 record may contain from 1 to 20 addresses.
- If no biller addresses are available for a biller, no 1 record will be created.
- Each 2 record may contain from 1 to 80 masks for the full and partial downloads, and from 1 to 60 masks for the advanced full download.
- There must be at least one mask for a biller.
- The address record may contain from 1 to 10 addresses, and the mask record may contain from 1 to 25 masks.
- Record 3 contains mask descriptors.
- Record 4 contains AKAs
- Record 5 contains contacts.
- Record 6 contains phone and fax numbers.
- There may be multiple 3 records associated with a 2 record, multiple 4 and 5 records associated with a 0 record and multiple 6 records associated with a 5 record.
- Each 3 record may contain from 1 to 35 mask descriptors.
- Each 4 record may contain from 1 to 15 AKAs.
- Each 5 record may contain from 1 to 7 contacts.
- Each 6 record may contain from 1 to 20 phone numbers.
- If there is no data for record types 3 through 6, then they will not be created.
- If a mask has mask descriptors, then that mask will be on a 2 record by itself, and the descriptors will be on one or more 3 records after it.
- Likewise if a contact has phone/fax numbers the contact will be on a 5 record by itself, and the phone/fax numbers will be on one or more 6 records after it.
- Mask record may contain from 1 to 50 masks and the contact record may contain from 1 to 3 contacts.
- An 'X0' record will be generated to indicate no data for partial and advanced partial file downloads. Mask record may contain from 1 to 50 masks and the contact record may contain from 1 to 3 contacts.
- An 'X0' record will be generated to indicate no data for partial and advanced partial file downloads.
Key Biller Directory Record Data
Field Name | Field Size (Bytes) | Field Description |
---|---|---|
Record Effective Date | N 10 | The date of the last change to this record - YYYY- MM-DD |
Biller ID | N 10 | Unique biller ID |
Live Date | N 10 | The date this biller was first activated - YYYY-MM- DD |
Transit Routing Number/ABA | N 10 | Credit Counseling Biller ID populated on the RPPS website. |
Biller Name | AN 128 | Corporate Name |
Biller Class | AN 50 | Industry Type |
Biller Type | AN 30 | Identifies the biller type. |
Line of Business | AN 2 | Indicates biller line of business |
Updated 8 months ago