Register an endpoint
Webhooks are registered only in the merchant portal under Integrations → Webhooks. Add your publichttps:// URL, choose the events to receive (or * for every event), and save. One endpoint is allowed for sandbox and one for live.
After you create the endpoint, the portal shows its signing secret (whsec_test_… or whsec_live_…). Store that secret on your server — you need it to verify deliveries. You can also send a sample event from the same screen to check your handler.
What ParuPay sends
Metadata on webhooks contains only
order_id. Look up everything else in your own database. Event types and data.object fields are listed above.Verify and handle it
X-One9Pay-Signature is t=sandbox or t=live, then v1= and the last 16 characters of your webhook secret. Reject the request when the mode or the value does not match.
Delivery rules
- Respond with a 2xx status. Anything else, or no answer within 5 seconds, is recorded as failed.
- Failed deliveries are not retried automatically. Send them again with
POST /v1/charges/:id/resend_webhookorPOST /v1/payment_links/:id/resend_webhook, or from the payment in the merchant portal. - Every attempt is logged. Read them with
GET /v1/payments/:id/webhook_deliveries. - Check your handler from the merchant portal (Integrations → Webhooks → send a test), which posts a sample event (default
payment_intent.succeeded).
