Last updated

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 TypeOperationAPI calls
Lookup phaselookupBillsGET/bills/{referenceNumber}
Bill payment phase: standard billcreateAccountPaymentPOST /payments/{paymentId}
Bill payment phase: traffic finecreateTrafficFinePaymentPOST /payments/traffic{paymentId}
Lookup Status PhasepaymentStatusGET /payments/status/{paymentMsgId}
Important

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

  1. The originating system sends a GET call to the /bills/{referenceNumber} API endpoint (lookupBills operation).
  2. Electrum translates the lookupBills message and sends a lookup request to the service provider.
  3. Electrum forwards the service provider's lookup response downstream as a BillLookupResponse message 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.
  4. The consumer receives a list of bills associated with the corresponding reference number via the BillLookupResponse message.
  5. The consumer selects the bill that will be paid and tenders for the payment.
  6. The originating system sends a PaymentRequest message to Electrum. This request will include only one of the reference numbers which was returned to the originating system in the initial BillLookupResponse message.
  7. Electrum sends the PaymentRequest message to the bill pay service provider to authorise the transaction.
  8. The service provider responds to Electrum with a message indicating that the transaction is successfully authorised.
  9. Electrum sends a paymentResponse downstream to confirm that a successful payment has been made.
  10. Electrum sends a confirmPayment message to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream.

alt text

Error at Service Provider

  1. The originating system captures the payment request information and sends a POST call to the /payments/{paymentId} or /payments/traffic/{paymentId}.
  2. Electrum sends the PaymentRequest message to the bill pay service provider to authorise the transaction.
  3. An error occurs at the service provider.
  4. The service provider respond to Electrum with an error response message.
  5. Electrum responds to the originating system with an HTTP status of 400, 500, 503, or 504, and an ErrorDetail message payload.

alt text

Timeout or other errors at Electrum

  1. The originating system captures the payment request information and sends a POST call to the /payments/{paymentId} or /payments/traffic/{paymentId}.
  2. An error or timeout occurs at Electrum.
  3. Electrum responds to the originating system with an HTTP status of 400, 500, 503, or 504, and an ErrorDetail message payload.
  4. If necessary, Electrum sends a BasicReversal message to the service provider and repeats the message until a response is received.

alt text

Timeout at Originating System

  1. The originating system captures the payment request information and sends a POST call to the /payments/{paymentId} or /payments/traffic/{paymentId}.
  2. An error occurs at the originating system, or a timeout occurs when the originating system does not receive a response.
  3. Electrum sends a confirmPayment message to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream
  4. The originating system sends a GET call to the /payments/{paymentId}/paymentStatus/{adviceId} API endpoint (paymentStatus operation).
  5. Electrum responds with a paymentResponse message via a store-and-forward queue, and repeats the message until a response is received from downstream.

alt text

Note

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

  1. The originating system captures the payment request information and sends a POST call to the /payments/{paymentId} or /payments/traffic/{paymentId}.
  2. An error occurs at the service provider, or a timeout occurs when the service provider does not receive a request.
  3. Electrum responds to the originating system with an HTTP status of 400, 500, 503, or 504, and an ErrorDetail message payload.
  4. A timeout occurs at the originating system, and the originating system does not receive an ErrorDetail response from Electrum.
  5. Electrum sends a reversal message to the service provider and repeats the message until a response is received.
  6. The originating system sends a GET call to the /payments/{paymentId}/paymentStatus/{adviceId} API endpoint (paymentStatus operation).
  7. Electrum responds to the originating system with an HTTP status of 400, 500, 503, or 504, and an ErrorDetail message payload.

alt text