All modes use the same endpoint
POST /pay/v01/straight/checkout-invoice/create. The difference is on the UX and flow side: whether to collect an OTP, show a waiting message, redirect to a URL returned in response_text. Do not confuse this with hosted payin, which uses a distinct endpoint (/redirect/...) and exposes a LigdiCash multi-operator payment page.Details of each mode
- USSD OTP
- USSD Push
- Guided USSD
- SMS OTP
- LigdiCash redirect
- Operator redirect
The customer generates an OTP by dialing a USSD code on their phone, before you call the API. You collect the number and the OTP at the same time in your form, then submit a single request with both.Flow:Recommended UX: show the USSD code to dial with clear instructions before the customer fills out the form.Operators using this mode: Orange Burkina Faso.
The customer dials the USSD code
Before filling out your form, the customer dials their operator’s USSD code on their phone (e.g.
*144*4*6# for Orange Burkina Faso). A one-time OTP appears on their screen.The customer enters their information
Your form collects the phone number and the OTP at the same time.
You submit the API request
A single request with the number in
customer and the OTP in otp. No second call needed.The OTP generated via USSD has a short validity period. Encourage the customer to enter their OTP immediately after generating it.
Summary
| Mode | API requests | OTP collected | What the customer does |
|---|---|---|---|
| USSD OTP | 1 | Before calling the API (via USSD) | Dials a USSD, shares the OTP with the merchant |
| USSD Push | 1 | None | Validates on the USSD push received |
| Guided USSD | 1 | None | Dials a USSD after receiving an SMS |
| SMS OTP | 2 | After the first API request (via SMS) | Receives an OTP by SMS, shares it with the merchant |
| LigdiCash redirect | 1 | None | Is redirected to a pre-filtered LigdiCash page and confirms there |
| Operator redirect | 1 | None | Is redirected to the operator’s portal and confirms there |
