Payment Workflow

Hello,

I am seeking input on analyzing the payment workflow outlined below. This is a common process in Ethiopia, and I aim to evaluate it in the context of existing digital payment initiatives.

My goal is to understand how this basic workflow functions and identify potential areas for alignment or improvement with current systems. I would greatly appreciate any resources, guidance on the best approach, or suggestions you can offer.

Payment Workflow

1. Payment initiation

A. Selection & Information Retrieval:

  • The user browses the course catalog, selects a course, and proceeds to pay.
  • The platform displays a list of supported local banks.
  • The user selects their bank. The system then displays a unique merchant bank account number and the exact amount to be paid.

B. Context Switch & Payment Execution:

  • The user leaves the platform—this is a critical friction point. They use their preferred method (Bank App, USSD, ATM, etc.) to transfer the exact amount to the provided account number.
  • The user securely records the Transaction ID (or Reference Number) generated by their bank upon successful transfer.

C. Proof Submission:

  • The user returns to the learning platform.

  • They navigate to a “Confirm Your Payment” section and submit the recorded Transaction ID and the bank they used.

2. Payment Verification

When a user starts the verification process, the platform’s backend queries the specific bank’s API. It sends the Transaction ID provided by the user, along with other contextual information to retrieve the transaction status.

  1. There could be two ways to get payment transaction information from bank to the learning platform

    • When the user’s bank processes the transfer to the platform’s account, the bank sends a secure automated message (a webhook or push notification) to the platform’s backend.

    • This is initiated when a user submits their Transaction ID to verify and the system does not already have a record of a push notification for it, it will request the associated bank if there is a transaction with the provided information.

  2. Transaction message contains all relevant transaction details (amount, sender, Transaction ID, timestamp).

  3. The user sees a “Verifying…” status. After a short delay (seconds or minutes), the system updates the status based on the bank’s response.

Hi @haftamu.kebede!

In Argentina we have a similar situation, a bit worse because the banks don’t offer any public API to check the transactions, and the bank transfers do not include any identifier to match on reception.

This forces the receiving entity to check manually, by source account and amount.

In our e-commerce integration, we implemented a workflow between WooCommerce and Open edX. The user must purchase a course in WooCommerce and declare the payment as bank transfer. The order will remain as payment pending. The integration will issue an email to the site owner informing all user data and an “Approve” button. Once they check that they received the payment, they can push that button. It sends back a message to the integration that will proceed enrolling the user with the enrollments api.

I know it sounds complicated, but it’s been working here successfully for years with many customers.

2 Likes

Hello @Andres.Aulasneo,
Thank you very much for the response.

There are more than 30 banks and financial institutions in Ethiopia, they all will not provide API access. The scenario you provided is very helpful and definitely one scenario in our case as well.

On the other hand, the major banks do offer API access and there are existing e-payment works that leverage this. The bank API access, in its most common use, is based on the workflow explained in this thread(my initial post). Though it is in its most basic workflow, a learner will have an opportunity to verify by themselves once payment is made independently, Minimizes intervention during the process!.

As I thought there are ongoing initiatives in OpenEdx related to e-commerce/payment, I am hoping for guides on how to approach this. Maybe if we have to work on top of existing open edx extensions!

Thank you

Hi @haftamu.kebede, feel free to schedule a call in my Calendly. I’ll be happy to show you what we’ve done and if we can be of any help, without any commitment.

1 Like