Bill payment for POS
Bill payment transactions require dual message processing. The different transaction legs are as follows.
A bill payment authorisation determines whether the requested payment can be made. It is a mandatory step even when an account lookup has been performed.
The originating system sends a bill payment confirmation to the service provider to advise that the tender was successful and that the transaction should be completed. A customer's bill payment will only take effect upon confirmation. Confirmation messages do not require consumer involvement and can take place after the consumer has been notified of the transaction outcome.
A bill payment reversal message is used to reverse or undo a bill payment that is in progress but has not yet been completed. Reversal messages do not require consumer involvement and can take place after the consumer has been notified of the transaction outcome.
For HelloPaisa transactions, confirmation messages are only accepted up to one hour after the original bill payment authorisation messaging was completed. This may lead to some reconciliation exceptions that must be handled between the originating system and HelloPaisa.
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.
| Bill Type | Operation | API calls |
|---|---|---|
| Bill payment authorisation: standard bill | createAccountPayment | POST /payments/{paymentId}
|
| Bill payment authorisation: traffic fine | createTrafficFinePayment | POST /payments/traffic{paymentId}
|
| Bill payment confirmation | confirmPayment | POST /payments/{paymentId}/confirmations/{adviceId}
|
| Bill payment reversal | reversePayment | POST /payments/{paymentId}/reversals/{adviceId}
|
When creating an account payment in Billpay, the originating system use the balanceAmount field instead of the requestAmountfield.
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 captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}API endpoint (createAccountPaymentorcreateTrafficFinePaymentoperation). - Electrum responds with a
PaymentResponseorTrafficFinePaymentResponsemessage, depending on the nature of the payment request. - The consumer tenders for the payment.
- The originating system sends a POST call to the
/payments/{paymentId}/confirmations/{adviceId}API endpoint (confirmPaymentoperation). - Electrum responds with a
BasicAdviceResponsemessage payload. - Electrum sends a confirmation message to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream.

Error at Originating System
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}API endpoint (createAccountPaymentorcreateTrafficFinePaymentoperation). - An error occurs at the originating system, or a timeout occurs when the originating system does not receive a response.
- The originating system sends a
POSTcall to the/payments/{paymentId}/reversals/{adviceId}API endpoint (reversePaymentoperation). - Electrum responds immediately with a
BasicAdviceResponsemessage. - Electrum sends a reversal message to the provider via a store-and-forward queue, and repeats the message until a response is received from upstream.

Error at Electrum or Service Provider
- The originating system captures the payment request information and sends a
POSTcall to the/payments/{paymentId}or/payments/traffic/{paymentId}API endpoint (createAccountPaymentorcreateTrafficFinePaymentoperation). - An error occurs at Electrum or the service provider.
- Electrum responds to the originating system with an HTTP status of
400,500,503, or504, and anErrorDetailmessage payload. - If necessary, Electrum sends a reversal message to the service provider and repeats the message until a response is received.
