On this page
No Headings
Last updated: July 8, 2026
To complete an end-to-end integration of alternative payment methods with the Orders API, subscribe to the following webhooks:
CHECKOUT.ORDER.APPROVED - Listen for this webhook and then capture the payment. Step 5 of the integration instructions for each APM describe what action to take when you receive this event. See also - Webhook event names for Orders API.CHECKOUT.PAYMENT-APPROVAL.REVERSED - Listen for this webhook as an indication that a problem occurred after the buyer approved the transaction and before you captured the payment. Then notify your buyer of the problem and the reversed order. Handle Uncaptured Payments describes what action to take when you receive this event.PAYMENT.CAPTURE.PENDING - Listen for this webhook as an indication that payment initiation was successful but payment completion is still pending. Do not fulfill the order until payment completion is successful. See Payments webhooks.PAYMENT.CAPTURE.COMPLETED - Listen for this webhook and then fulfill the order. Step 5 of the integration instructions for each APM describe what action to take when you receive this event. See Payments webhooks.PAYMENT.CAPTURE.DENIED - Listen for this webhook and then cancel fulfilling the order. Step 5 of the integration instructions for each APM describe what action to take when you receive this event. See Payments webhooks.The rest of this topic walks you through subscribing to these webhook events.
To subscribe to the CHECKOUT.ORDER.APPROVED, CHECKOUT.PAYMENT-APPROVAL.REVERSED, PAYMENT.CAPTURE.PENDING, PAYMENT.CAPTURE.COMPLETED, and PAYMENT.CAPTURE.DENIED events, copy the following code and modify it.
API endpoint used: Create webhook
curl -v -X POST https://api-m.sandbox.paypal.com/v1/notifications/webhooks \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <Access-Token>" \
-d '{
"url": "https://example.com/example_webhook",
"event_types": [
{
"name": "CHECKOUT.ORDER.APPROVED",
},
{
"name": "CHECKOUT.PAYMENT-APPROVAL.REVERSED"
},
{
"name": "PAYMENT.CAPTURE.PENDING"
},
{
"name": "PAYMENT.CAPTURE.COMPLETED"
},
{
"name": "PAYMENT.CAPTURE.DENIED"
}
]
}'After you copy the code in the sample request, modify the following:
Access-Token - Your access token.url - The URL of your webhook handler that listens for webhooks you're subscribed to.A successful request results in the following:
201 Created.