Before you call
- The transaction must be
READY. - Show the customer
amount,feeand their sum for every bill they selected, and get their confirmation. - Persist your own order record first.
paymoves money.
Request
POST /v3/bills/pay takes the discovery transactionId, the bill(s) to pay and a new ref.
Send
billId or billIds, never both.
Response
ref in the response is the discovery ref: the transaction keeps one reference for its whole life. 200 means the payment was accepted, not that it succeeded.
Paying several bills at once
SendbillIds instead of billId. The bills are settled as one order and their fee is the sum of the selected bills’ fee. Only SEAAL settles several bills as one order: for any other partner, billIds with more than one id answers 400 ERR_VALIDATION.
selectedBill then holds the aggregate (amount = sum of the bills, billId = the first id) and selectedBills[] lists each bill individually. Use selectedBills for reconciliation.
This applies to any biller whose discovery returned several bills. SEAAL accounts commonly do.
Follow the payment
PollGET /v3/bills/transactions/{transactionId} every 5 seconds until status is SUCCESS, FAILED or REFUNDED.
Details of every status and field: Transaction status.
Synchronous errors
A
4xx/5xx here means nothing moved. A network timeout means you do not know: look the transaction up before doing anything else.
Next: Transaction status
Every status, every field, how to poll

