When you call the Direct Charge API, the initial response tells you how the customer should continue or what your backend should wait for. Most Direct Charge flows follow one of these response types:Documentation Index
Fetch the complete documentation index at: https://docs.payfonte.com/llms.txt
Use this file to discover all available pages before exploring further.
processing(USSD/STK prompt flow)redirect(provider-hosted completion flow)bankTransfer(customer must transfer to returned account details)pre-otp(customer code required before request)
1) Processing Flow (USSD/STK Prompt)
Customer receives authorization prompt on mobile device and confirms with PIN.What happens
- You initiate direct charge.
- Provider sends STK push/USSD prompt to customer.
- Customer authorizes on device.
- Transaction remains pending until provider final response.
How to detect
data.action is processing.
Merchant handling
- Show pending state to customer.
- Do not fulfill on initial response.
- Wait for webhook or verify by reference.
2) Redirect Flow
Provider returns a link; customer must complete payment on provider page/app.What happens
- You initiate direct charge.
- API responds with redirect URL.
- Customer completes payment on provider channel.
- Customer may return to your app/site afterward.
How to detect
data.action is redirect and URL is typically in data.data.link.
Merchant handling
- Redirect user to
data.data.link. - On return, still verify final status server-side.
- Do not mark success from redirect alone.
3) Bank Transfer Flow
Payfonte returns bank account details; the customer must make a bank transfer to complete payment.What happens
- You initiate direct charge with a bank transfer provider.
- API responds with account details for the customer payment.
- You display the account details to the customer.
- Customer sends the transfer from their banking app or bank channel.
- Transaction remains pending until provider confirmation.
How to detect
data.action is bankTransfer. Account details are returned in data.data.
Merchant handling
- Display the returned account details clearly to the customer.
- Include bank name, account number, account name, amount, reference, and expiry when present.
- Keep the payment pending until webhook or verification confirms final status.
- Do not fulfill on proof of transfer alone.
4) Pre-OTP Flow
Some providers require customer to generate a provider code/OTP before you send the charge request.What happens
- Customer generates code via provider USSD.
- Customer shares code with merchant.
- Merchant sends
customerInput.customerCode. - Provider processes charge.
Common USSD codes
- Orange Ivory Coast:
#144*82# - Orange Senegal:
#144#391# - Orange Burkina Faso:
*144*4*6*Amount*PIN# - Orange Mali:
#144#37#
Sample request
Merchant handling
- Collect OTP/customer code explicitly.
- Validate format before API call.
- Continue with normal webhook/verification completion flow.
Flow Decision Summary
| Action | Customer next step | Merchant next step |
|---|---|---|
processing | Approve on device (USSD/STK) | Wait for webhook/verify |
redirect | Complete payment on provider page | Redirect + wait for webhook/verify |
bankTransfer | Transfer to the returned account details | Display account details + wait for webhook/verify |
pre-otp request pattern | Generate and share code first | Send code in customerInput.customerCode |
Important Rules
See Amount Specification.Related Docs
Direct Charge API
Endpoint usage and request field definitions.
Example Payloads
Provider-specific payload templates.
Webhooks
Confirm final transaction outcome asynchronously.