Bill Payment for digital channels
Dual messaging plays an important role in transaction processing. This message structure sends a follow-up advice message—either a confirmation or a reversal—to ensure that all entities (originating system, Electrum and service provider) reflect the same transaction state.
However, some digital channels cannot natively handle dual messaging. To address this, Electrum provides a single message solution, where we manage confirmation messages and reversals on behalf of the originating system. This means you don’t have to implement dual messaging. See the sections below for single messaging implementation.
The different transaction legs for single message solution are as follows.
- The account lookup phase verifies the consumer's account reference and returns outstanding balances.
- The originating system tenders for the account payment during the account payment phase, and Electrum's Switch sends a successful payment message downstream to the originating system.
- Electrum will finalise the transaction on behalf of the originating system during the confirmation phase.
- A lookup status phase where the outcome of a prior payment is retrieved by the originating system from Electrum.
Operations and Messages
The table below lists the operations and message payloads supported for the various legs of a bill payment transaction. For more detail, refer to the Account Payments Service Interface specification. Example message payloads are available here.
| Message Type | Operation | API calls |
|---|---|---|
| Lookup phase | lookupBills | GET/bills/{referenceNumber}
|
| Bill payment phase: standard bill | createAccountPayment | POST /payments/{paymentId}
|
| Bill payment phase: traffic fine | createTrafficFinePayment | POST /payments/traffic{paymentId}
|
| Lookup Status Phase | paymentStatus | GET /payments/status/{paymentMsgId}
|
You should not attempt transaction lookups until after the initial processing period concludes (after Electrum has received and processed the transaction outcome).
Message Flows
The sections below describe the message flows for successful bill payments and error scenarios during bill payment transactions.
Successful Bill or Traffic Fine Payment
- The originating system sends a
GETcall to the/bills/{referenceNumber}API endpoint (lookupBillsoperation). - Electrum translates the
lookupBillsmessage and sends a lookup request to the service provider. - Electrum forwards the service provider's lookup response downstream as a
BillLookupResponsemessage payload to the originating system containing the details (amount due, minimum amount, maximum amount and whether it is over payable) of any bills associated with that reference number. - The consumer receives a list of bills associated with the corresponding reference number via the
BillLookupResponsemessage. - The consumer selects the bill that will be paid and tenders for the payment.
- The originating system sends a
PaymentRequestmessage to Electrum. This request will include only one of the reference numbers which was returned to the originating system in the initialBillLookupResponsemessage. - Electrum sends the
PaymentRequestmessage to the bill pay service provider to authorise the transaction. - The service provider responds to Electrum with a message indicating that the transaction is successfully authorised.
- Electrum sends a
paymentResponsedownstream to confirm that a successful payment has been made. - Electrum sends a
confirmPaymentmessage to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream.

Error at Service Provider
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}. - Electrum sends the
PaymentRequestmessage to the bill pay service provider to authorise the transaction. - An error occurs at the service provider.
- The service provider respond to Electrum with an error response message.
- Electrum responds to the originating system with an HTTP status of
400,500,503, or504, and anErrorDetailmessage payload.

Timeout or other errors at Electrum
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}. - An error or timeout occurs at Electrum.
- Electrum responds to the originating system with an HTTP status of
400,500,503, or504, and anErrorDetailmessage payload. - If necessary, Electrum sends a
BasicReversalmessage to the service provider and repeats the message until a response is received.

Timeout at Originating System
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}. - An error occurs at the originating system, or a timeout occurs when the originating system does not receive a response.
- Electrum sends a
confirmPaymentmessage to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream - The originating system sends a GET call to the
/payments/{paymentId}/paymentStatus/{adviceId}API endpoint (paymentStatusoperation). - Electrum responds with a
paymentResponsemessage via a store-and-forward queue, and repeats the message until a response is received from downstream.

In the event that a PaymentResponse is not timeously received from Electrum, the downstream entity may resend the paymentStatus a configurable amount of times.
Timeout at Originating System and Service Provider
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}. - An error occurs at the service provider, or a timeout occurs when the service provider does not receive a request.
- Electrum responds to the originating system with an HTTP status of
400,500,503, or504, and anErrorDetailmessage payload. - A timeout occurs at the originating system, and the originating system does not receive an
ErrorDetailresponse from Electrum. - Electrum sends a reversal message to the service provider and repeats the message until a response is received.
- The originating system sends a
GETcall to the/payments/{paymentId}/paymentStatus/{adviceId}API endpoint (paymentStatusoperation). - Electrum responds to the originating system with an HTTP status of
400,500,503, or504, and anErrorDetailmessage payload.
