Receive real-time event notifications when transactions, transfers, wallet operations, and other events occur in your TagPay integration.
Webhooks let your server receive automatic HTTP POST notifications when events happen in your TagPay account — such as a wallet credit, a transfer completing, or a new customer being created. Instead of polling the API for state changes, TagPay pushes event data directly to your endpoint.
TagPay supports two delivery modes. Choose the one that fits your integration:
Legacy mode
All events are delivered to a single callbackURL configured on your merchant account. Simple to set up, but offers no per-event filtering or delivery tracking in the API.
Subscription mode
Subscribe to specific event types with dedicated endpoints. Supports delivery history, replays, and per-subscription testing. Recommended for production integrations.
You can also set the mode to BOTH to deliver events to your callback URL and all active subscriptions simultaneously.
TagPay signs every webhook delivery so you can confirm it originated from TagPay and has not been tampered with. Two signature headers are sent with each request:
Header
Algorithm
Description
x-glide-signature
HMAC-SHA512
Legacy signature — hash of the raw JSON payload
x-webhook-signature
HMAC-SHA256
Timestamp-prefixed signature for replay protection
x-webhook-timestamp
—
Unix timestamp in seconds used in the SHA-256 signature
Your merchant private key (available from GET /merchant/my-access-keys) is used as the signing secret.
Before going live, verify your endpoint handles events correctly using POST /merchant/webhook/test/:id, where :id is the subscription ID.
cURL
curl -X POST https://api.tagpay.ng/v1/merchant/webhook/test/sub_abc123 \ -H "Authorization: Bearer <your-token>"
TagPay sends a test.webhook event to your endpoint and returns the HTTP status code and response time. The test payload looks like:
{ "event": "test.webhook", "data": { "message": "This is a test webhook from TagPay", "timestamp": "2026-04-08T10:00:00.000Z", "subscriptionId": "sub_abc123", "merchantId": "mer_xyz" }}
When a delivery fails (non-2xx response or connection timeout), TagPay retries automatically with exponential backoff:
Attempt
Delay
1 (initial)
Immediate
2
1 minute
3
5 minutes
After 3 failed attempts, the delivery is marked as failed and no further retries are made. Use the replay endpoint to manually retry failed deliveries.
TagPay enforces a rate limit of 100 webhook deliveries per minute per subscription. Deliveries that exceed this limit are not sent and are recorded as rate-limited failures.