Must a credit pack have an expiry date?
No. Expiry is an optional checkbox when the pack is sold: fill it in if the school wants the credit to lapse on a given date, leave it out if not. A pack with no expiry lives until its sessions are used up.
If the expiry date does pass, the pack's status changes to expired through a daily check — not the moment somebody happens to open the screen. A student with an expired pack lands in the same state as an empty one: attendance is locked until there is a new pack.