Integration Methods
Inline Checkout
Embed on Your PageDisplay a payment form directly on your website without redirecting customers. Best for seamless checkout experiences.
Standard Checkout
Redirect to PayfonteRedirect customers to a Payfonte-hosted payment page. Simplest integration with full payment method support.
Direct Charge
Server-to-ServerInitiate charges directly via API for recurring payments or when you’ve already collected payment details.
Payment Links
No-Code OptionGenerate shareable payment URLs from the dashboard. Perfect for invoices, social media, and email campaigns.
Quick Comparison
| Method | Integration Effort | Customer Experience | Use Case |
|---|---|---|---|
| Standard | Low | Redirect to hosted page | Most merchants |
| Inline | Medium | Embedded on your site | Seamless UX |
| Direct Charge | High | No UI (server-side) | Recurring, saved cards |
| Payment Links | None | Click link to pay | Invoices, ad-hoc |
Payment Flow Overview
Supported Alternative Payment Methods (APM)
| Region | Mobile Money API | Bank Transfer | Cards |
|---|---|---|---|
| Nigeria | MTN MoMo API, Airtel, Opay, PalmPay | ✅ Yes | Via partner |
| Ghana | MTN MoMo API, AirtelTigo, Telecel | Coming soon | Via partner |
| Kenya | M-Pesa API | ✅ Yes | Via partner |
| Tanzania | M-Pesa API, Airtel Money API, Halopesa, Tigo | Coming soon | - |
| West Africa (CFA) | Orange Money, MTN, Wave Money integration, Moov | - | - |
Basic Collection Request
Here’s a minimal example to create a checkout session:Required Parameters
| Parameter | Type | Description |
|---|---|---|
reference | string | Your unique order/transaction identifier |
amount | integer | Payment amount in minor units (see Amount Specification) |
currency | string | ISO currency code (NGN, KES, GHS, XOF, etc.) |
country | string | ISO country code (NG, KE, GH, etc.) |
redirectURL | string | URL to redirect customer after payment |
Optional Parameters
| Parameter | Type | Description |
|---|---|---|
webhook | string | URL for payment notifications |
user.email | string | Customer email address |
user.phoneNumber | string | Customer phone number |
metadata | object | Custom data to attach to transaction |
Handling Webhooks
We send webhook notifications for payment status changes. Always implement webhook handling for production:Best Practices
Always Use Unique References
Always Use Unique References
Generate unique
reference values for each transaction. This prevents duplicate charges and simplifies reconciliation.Implement Idempotency
Implement Idempotency
Your system should handle webhook retries gracefully. Check if an order is already fulfilled before processing.
Verify Transaction Status
Verify Transaction Status
After receiving a webhook, verify the transaction status via API before fulfilling orders.
Handle Timeouts Gracefully
Handle Timeouts Gracefully
Some payment methods (like USSD) take time to complete. Show appropriate waiting states to customers.