- If a single webhook has five consecutive failures, we’ll set the webhook status to inactive
- If a webhook fails or is set to inactive, navigate to the Webhooks tab to edit and re-enable the webhook
Webhook Types
You’ll receive webhook notifications from Pagos for the following events types:Token Status Updates
When the status of a network token changes, you’ll receive a networkTokenStatusUpdated webhook containing the following information:-
Details about the token, including the token Ref ID, card brand, status (e.g. inactive, active, suspended, or deleted), and expiration date of the token (when the
status
is active). Keep in mind, this expiration date is the expiration date of the token, not the underlying PAN -
The
date
in UTC when the event was created, written in UNIX Epoch Timestamp format -
The
reason
for the event, provided the associated card brand included this detail
Lifecycle Management Updates
When a network token has a lifecycle management (LCM) update—meaning the issuer updated details of the underlying PAN (e.g. last four digits, expiry date)—you’ll receive a networkTokenCardUpdated webhook. This webhook will contain the token ID and card brand; you can then request the status of the impacted network token to get the full updated details.Validating webhooks
When you first set up a webhook, you’ll create a SecretKey for it. Save each SecretKey somewhere secure for use in validating webhooks from Pagos moving forward. We will not display your secret again; if you ever lose it, create a new one by editing the webhook in the Network Tokenization page of your Pagos Service Panel. The header of each webhook you receive includes ax-pagos-signature
property containing an HMAC-SHA256 generated hash signature. We recommend always validating this signature to ensure your server only processes webhook deliveries sent by Pagos and to verify the delivery hasn’t been tampered with. This will help you avoid using server resources to process deliveries, or updating your source-of-truth systems based on messages that do not originate from Pagos, thereby helping to prevent man-in-the-middle attacks.
The x-pagos-signature
contains the webhook signature in the following format:
t=
from the x-pagos-signature
, a period (“.”), the contents of the body:
of the webhook payload, and the stored customer secret. This signature will be sent in the {signature-version}=
property of the x-pagos-signature
. The {signature-version}
will be initially set as “V1”, representing SHA256. If additional hashing algorithms are offered, then an additional {signature-version}
will be created representing these additional hashing algorithms.
To validate the webhook signature a customer should generate a webhook signature using the above process of concatenation of the timestamp value in t=
from the x-pagos-signature
plus a period “.” plus the contents of the body:
of the webhook payload and the stored customer secret. Then compare your signature with the signature value in {signature-version}={signature}
. If they match, you’re safe to process the webhook. If they don’t match, then the webhook should be dropped.
Example Webhook Message
Webhook verification is highly recommended, but isn’t required. We also advise (but don’t require) you to allow-list the Pagos IP address that sends webhooks to your system as an additional security measure.