Create Webhook API


The Create Webhook API allows you to configure a webhook endpoint where PhonePe will send real-time event notifications for specific transaction and refund events. By registering your webhook URL along with authentication credentials and event preferences, you can receive timely callbacks and automate your post-payment or refund workflows.

Environment

EnvironmentHttp MethodAPI
SandboxPOSThttps://api-preprod.phonepe.com/apis/pg-sandbox/configs/v1/webhooks
ProductionPOSThttps://api.phonepe.com/apis/pg/configs/v1/webhooks
Request Headers
Header NameHeader ValueDescription
Content-Typeapplication/json
AuthorizationO-Bearer <access_token>Pass access_token received in Authorization call
Request Payload
{
    "url": "https://webhook.site/f9c9b854-72f1-462a-b28e-e3e9e4dee939",
    "description": "Webhook description",
    "username": "username",
    "password": "password123",
    "events": [
        "checkout.order.completed",
        "checkout.order.failed"
    ]
}
Field NameData TypeDescription
urlStringThe HTTPS webhook URL to which PhonePe have to post the webhook response.
descriptionStringDescription of the Webhook URL
usernameStringusername length must be between 5 and 20.
It should be alphanumeric only.
passwordStringpassword must be 8-20 characters long.
It should be alphanumeric and contain both letters and numbers.
eventsArraywebhook events for which callback is required.
  • Standard Checkout
    • Payment Flow
      • checkout.order.completed
      • checkout.order.failed
    • Refund Flow
      • pg.refund.completed
      • pg.refund.failed
  • Custom Checkout
    • Payment Flow
      • pg.order.completed
      • pg.order.failed
    • Refund Flow
      • pg.refund.completed
      • pg.refund.failed
Response Headers
Header NameHeader Value
Content-Typeapplication/json
Sample Response for case 1: Success Response
{
    "id": "CF2410212252436169514926",
    "url": "https://webhook.site/f9c9b854-72f1-462a-b28e-e3e9e4dee939",
    "description": "Webhook description",
    "username": "username",
    "password": "password123",
    "events": [
        "pg.order.completed",
        "pg.order.failed"
    ],
    "createdAt": 1729531363628,
    "updatedAt": 1729531363632,
    "enabled": true
}
Sample Response for case 2: Failed with Invalid Auth Token
{
    "code": "BAD_REQUEST",
    "message": "Cannot make more than 30 webhooks"
}
Sample Response for case 3: Failed with Invalid Auth Token
{
    "code": "AUTHORIZATION_FAILED",
    "message": "Authorization failed [message = Please check the authorization token and try again]"
}
Sample Response case 4: Internal Server Error
{
    "code": "INTERNAL_SERVER_ERROR",
    "message": "There is an error trying to process your transaction at the moment. Please try again in a while."
}
Field NameData TypeDescription
idStringUnique identifier of the webhook. This ID can be used to update or delete the webhook.
urlStringThe secure HTTPS endpoint where PhonePe will send webhook event notifications.
descriptionStringA brief description to identify the purpose or context of the webhook URL.
usernameLongUsername must be 5 to 20 characters long and alphanumeric.
passwordStringPassword must be 8 to 20 characters long, alphanumeric, and include both letters and numbers.
eventsArrayList of webhook events for which you want to receive callbacks.
createdAtLongEpoch timestamp indicating when the webhook was created.
updatedAtLongEpoch timestamp indicating the last time the webhook was updated.
enabledBooleanFlag to indicate whether the webhook is currently active or not.
Is this article helpful?