HPP Webhook Callbacks
Handle webhook callbacks from Hosted Payment Page flows
1 min readUpdated Mar 26, 2026
Canonical reference: For complete webhook callback routing —
paymentMethod/apmTypequery parameters, callback identification, payload schemas, and code examples — see Webhook Callback & Transaction Lifecycle.
#HPP-Specific Behavior
In HPP flows, Exirom does not know the final payment method at intent creation time — the customer selects it on the hosted checkout page. As a result:
- The callback payload structure depends on which method the customer chose
- Exirom appends
?paymentMethod=cardor?paymentMethod=apm&apmType={APM}to yourcallbackUrlso you can route parsing deterministically
Your single webhook endpoint handles all cases:
app.post('/webhooks/payment', express.json(), (req, res) => {
res.status(200).send('OK'); // Respond immediately
const { paymentMethod, apmType } = req.query;
if (paymentMethod === 'card') {
handleCardCallback(req.body);
} else if (paymentMethod === 'apm') {
handleApmCallback(req.body, apmType);
}
});#See Also
- Webhook Callback & Transaction Lifecycle — full callback reference
- Webhook Best Practices — deduplication, retry handling, signature verification
Was this helpful?