Skip to main content
When an activity is requires_action, its next_action tells you what the customer has to do: transfer to an account, dial a USSD code, approve a debit at their bank, or give you an OTP/PIN to submit. A next action is its own object with an ID, a status and an expiry. An activity can go through several in sequence (for example input_pin → input_otp); activity.next_action is always the current one, and List next actions returns the history.
Using the embedded checkout? It renders every next action for you. This page is for direct API integrations.

Attributes

string
Unique identifier, uac.XXXX.YYYYYYYYYYYYYYYYYYYYYYYY. The ugwo.activity.next_action.* webhooks identify themselves with it.
object
The instruction. action.type decides the remaining keys. See Action types.
enum
pending while the customer still has to act, fulfilled once done, expired once it can no longer be completed. See Status.
enum | null
Why the last input submission was rejected: invalid_input (wrong OTP/PIN; ask the customer again) or unknown_error_try_again (temporary failure; resubmit). null if the last submission succeeded or none has been made.
string | null
When the action stops being usable, ISO-8601. null if it doesn’t expire. Show a countdown for bank transfers.
string
ISO-8601 timestamp.
string
ISO-8601 timestamp.

Action types

Show the customer instructions. Used by bank_transfer and ussd. Nothing to submit; the activity completes when the customer acts and the PSP confirms.
string
user_action
string
Display-ready sentence.
object
The same information as discrete fields, for your own UI. Keys depend on the medium:
  • bank_transfer: bank_name, account_number, account_name, expires_at
  • ussd: ussd (the code to dial)
bank_transfer
ussd
New action types may be added. If you build your own UI, handle an unknown action.type gracefully, for example by falling back to the embedded checkout.

Status

The Next action object