PROCESSING for longer than you expected. This is often normal for mobile money — not a failed payment.
The problem
Execution status progression:PENDING → PROCESSING → COMPLETED | FAILED
MoMo operators can take several minutes while the customer approves on their handset or the carrier confirms.
What not to do
- Do not call
executions/collectionagain with a newreference_idwhile status isPROCESSING - Do not assume failure and start a duplicate checkout without checking status
Solution
Poll execution status
Use realtime for UX
For live UIs, request a realtime key instead of sub-second polling loops.
If status becomes FAILED
Show failure to the payer. Create a new session and new
reference_id only for a deliberate retry.If COMPLETED
Fetch receipt via links or invoice/order receipt endpoints when source is
PAID.