flex.mandate.expired
The flex.mandate.expired event is triggered when the student’s Flex auto-debit mandate reaches its end date.
Payload
Section titled “Payload”| Attribute | Type | Description |
|---|---|---|
event_id | String | Unique identifier for the webhook event. |
event | String | Event name: flex.mandate.expired. |
timestamp | Integer | Unix timestamp when the event was originated. |
version | String | Webhook payload version. |
payload.jodo_student_id | String | Jodo student identifier. |
payload.student | Object | Student profile details. |
payload.subscription | Object | Flex subscription details. |
payload.subscription.id | String | Flex subscription ID. |
payload.subscription.status | String | Current subscription status. |
payload.mandate | Object | Mandate details. |
payload.mandate.id | String | Mandate ID. |
payload.mandate.end_date | String | Mandate end date. |
payload.mandate.status | String | Mandate status, usually expired. |
Example
Section titled “Example”{ "event": "flex.mandate.expired", "event_id": "f8093bb5-29c7-4b3a-a99b-298520233820", "timestamp": 1655448963, "version": "1.0", "payload": { "jodo_student_id": "student_1234", "student": { "identifier": "1234", "custom_identifier": "cust_1234", "collector_code": null, "fullname": "Jodo Test Student", "academic_year_start": 2022, "academic_year_end": 2023, "primary_contact_number": "9876543210", "primary_contact_email": "parent@example.com", "grade": { "name": "M1BLUE", "code": "Montessori 1" }, "notes": [ { "key": "registration_number", "value": "REG12345" } ] }, "subscription": { "id": "sub_88001", "status": "locked" }, "mandate": { "id": "mandate_1921", "end_date": "2023-01-01", "status": "expired" } }}Handling the Event
Section titled “Handling the Event”- Mark the mandate as expired in your ERP.
- Pause any assumptions that future instalments can be auto-debited through the expired mandate.
- Use subscription and instalment events to determine downstream collection status.
- Use
event_idfor idempotency.