Skip to main content
Payfonte sends webhook events to your configured endpoint when payment state changes. Use webhooks as your primary source of truth for asynchronous payment outcomes.

Webhook Source IPs

If you restrict inbound traffic by IP address, allowlist the following Payfonte webhook source IPs for each environment.

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

Sample payload:
payment.completed

Signature Verification (Required)

Every webhook includes:
  • Header: x-webhook-signature
  • Value: sha512 HMAC digest of raw request body, signed with your client-secret
Use your client-secret from Settings -> Security -> API Keys and Webhooks.
If signature validation fails, do not process the event.

Idempotent Processing Pattern

1

Acknowledge fast

Return HTTP 200 quickly to prevent unnecessary retries.
2

Check duplicates

Use reference + status (or a delivery identifier if available) to detect already-processed events.
3

Verify transaction when needed

For critical flows, verify payment status from your backend before final fulfillment.
4

Apply state transition safely

Ensure business actions (for example order fulfillment) run once per final success.

Webhook URL Priority

Payfonte uses webhook URLs in this order:
  1. Webhook URL passed in the checkout/direct-charge request (webhook)
  2. Webhook URL configured on the provider integration
  3. Webhook URL configured in dashboard settings

Common Issues

Standard Checkout

Redirect flow with webhook completion.

Direct Charge API

Direct charge flow and action handling.

Authorization

Credential and header requirements.