Code 128 is a high-density linear barcode that encodes the full ASCII set across three character subsets, switching between them mid-symbol to keep the code as short as possible. Numeric data packs two digits per symbol character, so a numeric member number takes roughly half the width it would in Code 39.
It is the practical default when a program needs a linear barcode rather than a two-dimensional one. Both Apple Wallet and Google Wallet render Code 128 on a pass, so one format covers both wallets, and every modern retail scanner reads it. Letters, prefixes and mixed-case identifiers are all fine, which numeric-only formats such as EAN-13 cannot offer.
A mandatory check character is calculated into every symbol, so misreads are caught rather than passed on to the point of sale. That matters at a busy till, where a wrong member number is worse than a failed scan.
The limit is data volume. Long payloads make a wide barcode that is awkward on a phone screen and needs a careful sweep to read. Where a program encodes more than a member number, or wants a rotating value per visit, a QR code or PDF417 carries it better. QR and barcode identification sets out the trade.

