When To Use Direct Charge
Backend-Driven Flows
Best for server-to-server payment initiation where you control the full transaction lifecycle.
Provider-Specific Inputs
Use when payment requires provider-specific fields like
network or customer OTP codes.Recurring / Embedded UX
Useful for tightly integrated experiences where redirect checkout is not preferred.
Endpoints
Integration Steps
1
Pick provider slug
Select a valid provider from Supported Providers.
2
Fetch provider properties (optional)
For providers like Bank Transfer(bank-transfer-nigeria), fetch required properties (for example network values) before charging.
3
Send direct charge request
Call the direct-charge endpoint with
provider, amount, and customerInput.4
Handle action + confirm final status
Use response action (
processing, redirect, bankTransfer) and finalize based on webhook/verification.Fetch Provider Properties (Optional)
Direct Charge Request
Request Fields
Action Types and Handling
processing
processing
Customer/provider interaction is in progress (for example USSD/STK authorization pending).
Keep payment state pending and wait for webhook/verification final status.
redirect
redirect
Redirect customer to provider URL (usually at
data.data.link).
Do not treat redirect completion alone as payment success.bankTransfer
bankTransfer
Display returned bank transfer instructions (account name/number, amount, expiry).
Wait for webhook/verification before marking success.
Amount Rule (Important)
100.00 NGN->100002500.75 NGN->250075
Final Status Confirmation
For order fulfillment, rely on:- Webhooks for async payment updates.
GET /payments/v1/payments/verify/{reference}for backend verification.
Related Docs
Processing Flows
Understand
processing, redirect, bankTransfer, and pre-OTP patterns.Example Payloads
Copy provider-specific request examples.
Supported Providers
Provider slugs, limits, and country coverage.