Skip to main content

One object for the whole lifecycle

A discovery and the payment made from it are the same transaction, with the same transactionId 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

If discover or pay times out on your side, the request may still have been processed.
  1. GET /v3/bills/transactions/by-ref?ref=<your discovery ref>.
  2. 404 NOT_FOUND: the discovery was never created. Send it again with the same ref.
  3. Anything else: the transaction exists. Continue from its status.
For a 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