payment_link.payment.expired
The payment_link.payment.expired event is triggered when a payment link expires before the payer completes payment.
Payload
Section titled “Payload”| Attribute | Type | Description |
|---|---|---|
event_id | String | Unique identifier for the webhook event. |
event | String | Event name: payment_link.payment.expired. |
timestamp | Integer | Unix timestamp when the event was originated. |
version | String | Webhook payload version. |
payload.order_id | String | Pay Order ID for the payment link. |
payload.order | Object | Payment link order details. |
payload.order.transaction_id | String or null | Transaction ID. Null when the link expires unpaid. |
payload.order.paid_at | Datetime or null | Payment time. Null when the link expires unpaid. |
payload.order.status | String | Current payment link status, usually expired. |
payload.order.details | Array | Payment detail rows. |
payload.order.notes | Array | Key-value metadata attached during payment link creation. |
Example
Section titled “Example”{ "event": "payment_link.payment.expired", "event_id": "f8093bb5-29c7-4b3a-a99b-298520233820", "version": "1.0", "timestamp": 1655448963, "payload": { "order_id": "order_12345", "order": { "name": "Customer name", "phone": "9876543210", "identifier": "any_ref_id", "email": "you@example.com", "student_name": "Student Name", "custom_identifier": "cust_1234", "grade": "grade_5944", "new_admission": false, "date_of_birth": "2000-01-01", "academic_year_start": 2022, "academic_year_end": 2023, "transaction_id": null, "paid_at": null, "status": "expired", "details": [ { "component_type": "Payable Amount", "amount": 1000.0 } ], "notes": [ { "key": "erp_reference_id", "value": "REF123" } ] } }}Handling the Event
Section titled “Handling the Event”- Mark the link as expired in your ERP or collection workflow.
- Stop showing the expired link as payable.
- Create a new payment link if the payer should still be allowed to pay.
- Use
event_idfor idempotency.