Webhooks

Webhooks deliver real-time events from Pricifi to your server the moment they happen — no polling required. We sign every payload so you can verify it came from us.

Example payload

{
  "id": "evt_1A2b3C4d5E",
  "type": "payment.succeeded",
  "created": "2026-08-05T09:41:00Z",
  "data": {
    "paymentId": "pay_9xK2",
    "amount": 25000,
    "currency": "NGN",
    "method": "paystack",
    "orderId": "ord_7M4"
  }
}

Event types

Payments

Know the moment a customer pays, a charge fails, or a dispute is opened.

payment.succeededpayment.failedpayment.disputedpayout.sent

Orders

React to new orders and track them through to fulfilment and dispatch.

order.createdorder.status_changedorder.fulfilled

Conversations

Build notifications or analytics on top of buyer conversations.

conversation.createdconversation.message_receivedconversation.replied

Catalog & Inventory

Keep your own systems in sync the moment stock or catalogs change.

catalog.syncedinventory.low_stockinventory.out_of_stock

Verifying signatures

Each request includes a signature in the X-Pricifi-Signature header — an HMAC-SHA256 of the raw body using your webhook secret. Verify it before trusting the payload.

const expected = crypto
  .createHmac('sha256', WEBHOOK_SECRET)
  .update(rawBody)
  .digest('hex');
if (expected !== signature) throw new Error('invalid signature');

Retries & ordering

We retry failed deliveries with exponential backoff for up to 24 hours. Respond with 200 OK as quickly as possible — handle the work asynchronously. Events are delivered in order per resource and each event has a unique id you can use for idempotency.

Ready to integrate?

Get a sandbox key and a webhook endpoint to test against.

Request access