A membership card QR code carries a member ID, a name, a tier and an expiry date as plain text on the card. The expiry is worth understanding before you rely on it. Membership codes are made in the MOJA app rather than here.
Create unlimited QR codes — right from your phone, anytime, anywhere. Free to download.
Experience this feature seamlessly in our mobile app. Download it today to enjoy the full mobile experience
Download Free AppThe payload is MEMBERSHIP:ID:…;NAME:…;TIER:…;EXPIRES:…. Nothing is fetched when it is scanned, so it works at a gate with no signal, and nothing is checked either.
The expiry date is displayed, not enforced. This is the single most important thing about this type. The code carries the text "EXPIRES:2026-01-01" and then goes on scanning perfectly for ever. Whoever is on the door has to read the date and decide, or your system has to check it. The code will not stop.
Read that way it is an honest tool: a printed card that shows four facts quickly. Read as an access control system it is a card that never expires, which is how memberships quietly stay valid for years.
The card at the desk shows who someone is and what they paid for, without a lookup. Pair it with a list check if the tier controls access to anything worth controlling.
Member ID scanned rather than typed, and the tier tells staff what they can borrow.
Where the card is mostly a credential to show rather than a key to anything, and an annual reissue is already part of the cycle.
EXPIRES is text, and nothing reads it. The field exists so a human can see a date. No scanner refuses an expired card, including the MOJA app. If expiry has to be enforced, it has to be enforced by your system.
Nothing is signed. Anyone who can read a card can produce an identical one, including with a different tier. Treat the code as a convenience over typing an ID, never as proof of anything.
Every change means a new code. Tier, name and expiry are all inside the pattern, so a renewal is a reprint. Only the ID is worth keeping stable.
Semicolons and colons truncate the record — the values are not escaped, and a name like "Smith; J" loses everything after it.
Only the MOJA app lays it out as a membership. Other scanners show the raw line.