Tracking Label

Updated on ยท 3 min read

Tracking labels are used to track individual parcels that move through the last mile of the parcel journey.

Label Requirements

Name Required Description
Parcelpoint logo Yes The Parcelpoint logo must appear on the label with a minimum size of 420px width or 112mm width (based on 6x4 label)
Addressee Yes The full name of the customer must be clearly identifiable on the label and readable at arms length
Address Yes The full destination address of the Parcelpoint location/customer's address
Suburb Yes The destination suburb of the Parcelpoint location/customer's address
State Yes The destination state of the Parcelpoint location/customer's address
Postcode Yes The destination postcode of the Parcelpoint location/customer's address
Sort Code Yes The sortation code for sorting the parcel to be delivered to the closest HUB to the customer's address
SSCC Barcode Yes A GS1 SSCC compliant barcode and corresponding human-readable serial reference
Verification Yes A prominent tag that is located near the tracking label to alert the driver of the verification method on delivery. This should always be AUTHORITY TO LEAVE unless otherwise agreed.
Dead Weight Yes The total dead weight (kg) of the parcel to be clearly identifiable on the label and readable at arms length
Cubic Weight Yes The total cubic weight (kg) of the parcel to be clearly identifiable on the label and readable at arms length. Formula: height x width x length x 250
Delivery Instructions No Any delivery instructions or communication that needs to be relay to the driver
Sender Details No Details of the sender in the event of Return To Sender (RTS)
Example of a Tracking Label

Barcode Requirements

A GS1 Serial Shipping Container Code (SSCC) compliant barcode and corresponding human-readable serial reference must be included on the tracking label. Be sure to check that it can be scanned easily by the carrier.
A Company Prefix range will be issued to you by Parcelpoint, however, if you wish to use your own range, you will need to inform Parcelpoint to see if that range is available.
The barcode must meet the following requirements:

  • Be in GS1-128 format (or at the very least use Code-128 format)
  • Be at least 78mm width
  • Be at least 26mm height
  • Human-readable SSCC Number should have a font size of at least 10pt
  • Spacing around the barcode should be at least 5mm of white space

A GS1-128 SSCC barcode must include the following structure:

GS1 App ID Ext. Digit GS1 Company Prefix Serial Reference Checksum
00 Single digit (0-9) 8 digit number (0-9) 8 digit number (0-9) Single digit (0-9)
  • Parcelpoint will supply you with a Extension Digit and Company Prefix
  • The Serial Reference can be any numerical serial that is 8 digits in length (99.9M barcodes)

An example of a barcode would be as follows:

(00)193499680197298313

How to generate the SSCC

To generate the SSCC, use the generateSSCC function:

function generateSSCC(i) {
	var extDigit = '1', // Parcelpoint to supply Ext. Digit
    	companyPrefix = '93499680', // Parcelpoint to supply Company Prefix
    	barcode = extDigit + companyPrefix + generateSerial(i);
    	sscc =  barcode + generateChecksum(barcode);
    
    console.log(sscc + " " + isValidSSCC(sscc));

    return sscc;
}

How to calculate the checksum

To generate the checksum, use the generateChecksum function:

function generateChecksum(barcode) {
    var arr = barcode.substring(0,barcode.length).split("").reverse();
    var oddTotal = 0, evenTotal = 0;

    for (var i=0; i<arr.length; i++) {
    	if (isNaN(arr[i])) { 
        	return false; 
        } 
        else if (i % 2 == 0) { 
        	oddTotal += Number(arr[i]) * 3; 
        } 
        else { 
        	evenTotal += Number(arr[i]); }
        }
        
        checkSum = (10 - ((evenTotal + oddTotal) % 10)) % 10;
        return checkSum;
}

Checking the barcode for errors

It's recommended that spot test your barcode to make sure that the barcode is being generated correctly.

To test if the SSCC is valid use the isValidSSCC function:

function isValidSSCC(sscc) {
    if (sscc.length < 8 || sscc.length > 18 ||
        (sscc.length != 8 && sscc.length != 12 && sscc.length != 13 && sscc.length != 14 && sscc.length != 18)) {
        return false;
    }

    let lastDigit = Number(sscc.substring(sscc.length - 1));
    let checkSum = 0;
    
    if (isNaN(lastDigit)) {
    	return false;
    }

    let arr = sscc.substring(0,sscc.length - 1).split("").reverse();
    let oddTotal = 0, evenTotal = 0;

    for (var i=0; i<arr.length; i++) {
        if (isNaN(arr[i])) {
        	return false;
        }
		else if (i % 2 == 0) {
        	oddTotal += Number(arr[i]) * 3;
        }
        else {
        	evenTotal += Number(arr[i]);
        }
    }
    
    checkSum = (10 - ((evenTotal + oddTotal) % 10)) % 10;
    return checkSum == lastDigit;
}