Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
This data cannot be encoded in the Code 128 subset the label selects.
Change the subset invocation, or change the data.
^XA^BY3^FO50,50^BCN,100,Y,N,N^FD>;ABC123^FS^XZ
Code 128 data not encodable in the selected subset.
Neither ^PW nor ^LL is set. Both fall back to a value stored in the individual printer, not to a value in the spec — so the same ZPL prints differently on two printers of the same model.
Set ^PW and ^LL explicitly in every format.
The bar width is outside the GS1-128 range (0.495 mm to 0.940 mm, 0.495 mm target). At 203 dpi that means ^BY 4 or greater.
Raise ^BY to at least 4 at 203 dpi, or 6 at 300 dpi.
At 203 dpi ^BY2 — the power-up default — and ^BY3 both fail GS1.
This GS1-128 is shorter than the 31.75 mm GS1 requires. It may scan on a handheld and fail at a fixed scanner.
Set the height to at least 254 dots at 203 dpi, or 375 at 300 dpi.
This data cannot be encoded in the Code 128 subset the label selects.
Change the subset invocation, or change the data.
Subset C encodes digits in pairs. This payload has an odd number of digits, so the last one is dropped — the barcode prints, scans cleanly, and returns one digit short of the data underneath it.
Pad to an even digit count, switch to Subset B (>:), or let ZPL auto-select the subset.
Cloud Retailer help desk, "Zebra Label Missing Last Digit and/or Not Scanning All Digits in Barcode": odd-length codes such as EAN-13 lose the final digit — "subset C cannot process single digits, it MUST be in a pair." A customer-reported production failure, documented by a vendor.
This GS1-128 is missing the leading FNC1. Without it the symbol is a plain Code 128 and the scanner will not read the AIs.
Add FNC1 (>8) immediately after the subset start code, or use ^BC mode D.