Payfonte sends webhook events to your configured endpoint when payment state changes. Use webhooks as your primary source of truth for asynchronous payment outcomes.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.
Webhook Source IPs
If you restrict inbound traffic by IP address, allowlist the following Payfonte webhook source IPs for each environment.| Environment | Source IPs |
|---|---|
| Production | 49.13.133.127, 49.13.229.61, 194.32.79.135 |
| Sandbox | 49.12.224.228, 49.13.224.113 |
Why Webhooks Matter
Real-Time Updates
Get payment updates without polling every transaction.
Reliable Completion
Confirm final status (
success or failed) before fulfilling orders.Operational Safety
Handle retries with idempotent processing to avoid duplicate fulfillment.
Webhook Payload Fields
| Field | Description |
|---|---|
event | Event type (for example payment.completed, payment.failed) |
clientId | Your Payfonte client identifier |
data.status | Transaction status (success, failed, or pending) |
data.reference | Payfonte transaction reference |
data.externalReference | Merchant-provided reference (if supplied) |
data.amount | Transaction amount in minor units |
data.charge | Applied transaction charge |
data.provider | Provider slug/name used for processing |
data.channel | Payment channel (for example card, mobile-money) |
data.user | Customer metadata (name/email/phone when available) |
payment.completed
Signature Verification (Required)
Every webhook includes:- Header:
x-webhook-signature - Value:
sha512HMAC digest of raw request body, signed with yourclient-secret
client-secret from Settings -> Security -> API Keys and Webhooks.
Idempotent Processing Pattern
Check duplicates
Use
reference + status (or a delivery identifier if available) to detect
already-processed events.Verify transaction when needed
For critical flows, verify payment status from your backend before final
fulfillment.
Webhook URL Priority
Payfonte uses webhook URLs in this order:- Webhook URL passed in the checkout/direct-charge request (
webhook) - Webhook URL configured on the provider integration
- Webhook URL configured in dashboard settings
Common Issues
| Issue | Likely Cause | Fix |
|---|---|---|
| Duplicate webhook processing | No idempotency guard | Track processed reference + status and skip repeats |
| Signature mismatch | Wrong secret or payload mutation | Use correct client-secret and hash the exact received body |
| Missed updates | Endpoint timeout/non-200 responses | Return 200 quickly and move heavy work to async workers |
| Wrong environment events | Mixed sandbox/production setup | Use matching endpoint and credentials per environment |
Related Docs
Standard Checkout
Redirect flow with webhook completion.
Direct Charge API
Direct charge flow and action handling.
Authorization
Credential and header requirements.