Webhook Event
The Payment Processing Completed Webhook is sent by Convergegate to notify your system when a payment has reached a finalized state. This webhook enables real-time updates in your application without polling the API.
🔒 Authorization
Type:
SignatureAuth
Signature Algorithm:
HMAC-SHA256
Secret: Shop Signing Key
Header Parameter Name:
Signature
The signature is computed from the raw JSON request body using the Shop Signing Key as the HMAC secret.
⚠️ Important: The
Signature
header is only included after a Signing Key has been generated for the shop. Without a Signing Key, webhook requests will not include this header. You can generate a Signing Key in the merchant back office.
Webhook URL
The webhook endpoint must be implemented by the merchant and exposed via HTTPS. Your server should respond with HTTP 200 OK to confirm successful receipt. Any non-2xx response will trigger retries according to Convergegate retry policy.
Payload Structure
Content-Type: application/json
id
string (≤ 32 chars)
Payment ID.
referenceId
string (≤ 256 chars)
Merchant-provided reference ID.
created
string (ISO 8601)
Payment creation date/time (UTC).
paymentType
string
One of: DEPOSIT
, WITHDRAWAL
, REFUND
.
state
string
Final state: COMPLETED
, DECLINED
, CANCELLED
.
description
string (≤ 512 chars)
Transaction description.
parentPaymentId
string (≤ 32 chars)
ID of the initial payment in the chain.
paymentMethod
string
One of: BASIC_CARD
, BASIC_CARD_HPP
, PIX
, OPEN_BANKING
, BLIK
.
paymentMethodDetails
object
Amount, currency, and provider-specific info.
errorCode
/ errorMessage
string
Populated for failed payments.
customer
object
Customer and billing details.
redirectUrl
string
Redirect URL for the customer (if applicable).
Example Webhook Body
{
"id": "a1b2c3d4e5f6g7h8i9j0",
"referenceId": "ORDER-12345",
"created": "2025-08-14T15:32:00Z",
"paymentType": "DEPOSIT",
"state": "COMPLETED",
"description": "Payment for ORDER-12345",
"parentPaymentId": "z9y8x7w6v5u4t3s2r1q0",
"paymentMethod": "BLIK",
"paymentMethodDetails": {
"amount": 100.00,
"currency": "PLN"
},
"customer": {
"billingAddress": {
"line1": "Main Street 123",
"city": "Warsaw",
"country": "PL",
"zip": "00-410"
}
}
}
Verifying the Signature
Retrieve the
Signature
header from the webhook request.Compute
HMAC-SHA256
over the raw JSON body using the Shop Signing Key.Compare the result to the value in the
Signature
header.Reject the request if the values do not match.
Best Practices
Always validate the signature before processing the webhook.
Store and log the raw webhook payload for troubleshooting.
Use idempotency in your processing logic to avoid double updates.
Make sure your webhook endpoint is publicly accessible and HTTPS-secured.
Last updated