If you are building a product for Nigerian customers, payments will take more of your design time than you expect. Customers move between bank transfers, cards and USSD depending on the amount, the bank, and sometimes the time of day.
The work is mostly in the edges. What happens when a transfer is sent but not yet confirmed? What does the customer see while they wait? How does your team reconcile a payment that arrives with the wrong reference? Each of these deserves a designed state, not an error message.
Our advice is to map every way money can move in your product before designing a single screen, then design the waiting states as carefully as the success states. Customers forgive a short wait. They do not forgive silence.