One object for the whole lifecycle
A discovery and the payment made from it are the same transaction, with the sametransactionId and the same ref. type is discovery until a payment is accepted, then payment.
Read it with GET /v3/bills/transactions/{transactionId} or GET /v3/bills/transactions/by-ref?ref=….
Statuses
Fields
Always present:
Present depending on status:
Branch on
status, never on the presence of a field.
error.code
Polling
Node.js
UNKNOWN
UNKNOWN means the payment was submitted to the biller but the result has not been confirmed. Money may or may not have moved. It always resolves to SUCCESS or REFUNDED.
While a transaction is UNKNOWN:
- Do not start a new payment for the same bill.
- Do not refund or credit your customer.
- Tell the customer the payment is being confirmed.
Recovering after a timeout
Ifdiscover or pay times out on your side, the request may still have been processed.
GET /v3/bills/transactions/by-ref?ref=<your discovery ref>.404 NOT_FOUND: the discovery was never created. Send it again with the sameref.- Anything else: the transaction exists. Continue from its
status.
pay timeout, read the transaction by id: PROCESSING or later means the payment was accepted.
Next: Receipts and reconciliation
Download receipts and reconcile your history

