{

"name": "FedEx",
"courier_code": "fedex",
"tracking_numbers": [
  {
    "name": "FedEx Express (12)",
    "regex": "\\s*(?<SerialNumber>([0-9]\\s*){11})(?<CheckDigit>[0-9]\\s*)",
    "validation": {
      "checksum": {
        "name": "sum_product_with_weightings_and_modulo",
        "weightings": [
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1
        ],
        "modulo1": 11,
        "modulo2": 10
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "986578788855",
        "477179081230",
        "799531274483",
        "790535312317",
        " 7 9 0 5 3 5 3 1 2 3 1 7 ",
        "974367662710"
      ],
      "invalid": [
        "996578788855"
      ]
    }
  },
  {
    "name": "FedEx Express (34)",
    "regex": [
      "\\s*1\\s*0\\s*0\\s*[0-9]\\s*[0-9]\\s*",
      "([0-9]\\s*){10}",
      "(?<DestinationZip>([0-9]\\s*){5})",
      "(?<SerialNumber>([0-9]\\s*){13})",
      "(?<CheckDigit>[0-9]\\s*)"
    ],
    "validation": {
      "checksum": {
        "name": "sum_product_with_weightings_and_modulo",
        "weightings": [
          1,
          7,
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1
        ],
        "modulo1": 11,
        "modulo2": 10
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "1001921334250001000300779017972697",
        "1001921380360001000300639585804382",
        "1001901781990001000300617767839437",
        " 1 0 0 1 9 0 1 7 8 1 9 9 0 0 0 1 0 0 0 3 0 0 6 1 7 7 6 7 8 3 9 4 3 7 ",
        "1002297871540001000300790695517286"
      ],
      "invalid": [
        "1001901781990001000300617767839438"
      ]
    }
  },
  {
    "name": "FedEx SmartPost",
    "description": "IMpb CO3 standard",
    "regex": [
      "\\s*(?<ApplicationIdentifier>9\\s*2\\s*)?",
      "(?<SerialNumber>",
      "(?<ServiceType>([0-9]\\s*){3})",
      "(?<ShipperId>([0-9]\\s*){9})",
      "(?<PackageId>([0-9]\\s*){7})",
      ")",
      "(?<CheckDigit>([0-9]\\s*))"
    ],
    "validation": {
      "checksum": {
        "name": "mod10",
        "evens_multiplier": 3,
        "odds_multiplier": 1
      },
      "serial_number_format": {
        "prepend_if": {
          "matches_regex": "^(?!92).+",
          "content": "92"
        }
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "61299998820821171811",
        " 6 1 2 9 9 9 9 8 8 2 0 8 2 1 1 7 1 8 1 1 ",
        "9261292700768711948021"
      ],
      "invalid": [
        "9261292700768711948020"
      ]
    }
  },
  {
    "name": "FedEx Ground",
    "regex": "\\s*(?<SerialNumber>([0-9]\\s*){14})(?<CheckDigit>([0-9]\\s*))",
    "validation": {
      "checksum": {
        "name": "mod10",
        "evens_multiplier": 1,
        "odds_multiplier": 3
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "0414 4176 0228 964",
        "5682 8361 0012 000",
        " 5 6 8 2   8 3 6 1   0 0 1 2   0 0 0 ",
        "5682 8361 0012 734"
      ],
      "invalid": [
        "5682 8361 0012 732"
      ]
    }
  },
  {
    "name": "FedEx Ground (SSCC-18)",
    "regex": "\\s*(?<ShippingContainerType>([0-9]\\s*){2})(?<SerialNumber>([0-9]\\s*){15})(?<CheckDigit>[0-9]\\s*)",
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "validation": {
      "checksum": {
        "name": "mod10",
        "evens_multiplier": 3,
        "odds_multiplier": 1
      }
    },
    "test_numbers": {
      "valid": [
        "00 0123 4500 0000 0027",
        " 0 0   0 1 2 3   4 5 0 0   0 0 0 0   0 0 2 7 "
      ],
      "invalid": [
        "000000000000000001"
      ]
    },
    "additional": [
      {
        "name": "Container Type",
        "regex_group_name": "ShippingContainerType",
        "lookup": [
          {
            "matches": "00",
            "name": "case/carton"
          },
          {
            "matches": "01",
            "name": "pallet"
          },
          {
            "matches": "02",
            "name": "larger than a pallet"
          },
          {
            "matches": "04",
            "name": "internally defined for intra-company use"
          }
        ]
      }
    ]
  },
  {
    "name": "FedEx Ground 96 (22)",
    "regex": [
      "\\s*(?<ApplicationIdentifier>9\\s*6\\s*)",
      "(?<SCNC>([0-9]\\s*){2})",
      "(?<ServiceType>([0-9]\\s*){3})",
      "(?<SerialNumber>(?<ShipperId>([0-9]\\s*){7})(?<PackageId>([0-9]\\s*){7}))",
      "(?<CheckDigit>[0-9]\\s*)"
    ],
    "validation": {
      "checksum": {
        "name": "mod10",
        "evens_multiplier": 1,
        "odds_multiplier": 3
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "9611020987654312345672",
        " 9 6 1 1 0 2 0 9 8 7 6 5 4 3 1 2 3 4 5 6 7 2 "
      ],
      "invalid": [
        "9600000000000000000001"
      ]
    }
  },
  {
    "name": "FedEx Ground GSN",
    "regex": [
      "\\s*(?<ApplicationIdentifier>9\\s*6\\s*)",
      "(?<SCNC>([0-9]\\s*){2})",
      "([0-9]\\s*){5}",
      "(?<GSN>([0-9]\\s*){10})",
      "[0-9]\\s*",
      "(?<SerialNumber>([0-9]\\s*){13})",
      "(?<CheckDigit>[0-9]\\s*)"
    ],
    "validation": {
      "checksum": {
        "name": "sum_product_with_weightings_and_modulo",
        "weightings": [
          1,
          7,
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1,
          7,
          3,
          1
        ],
        "modulo1": 11,
        "modulo2": 10
      }
    },
    "tracking_url": "https://www.fedex.com/apps/fedextrack/?tracknumbers=%s",
    "test_numbers": {
      "valid": [
        "9622001900000000000000776632517510",
        "9622001560000000000000794808390594",
        "9622001560001234567100794808390594",
        " 9 6 2 2 0 0 1 5 6 0 0 0 1 2 3 4 5 6 7 1 0 0 7 9 4 8 0 8 3 9 0 5 9 4 ",
        "9632001560123456789900794808390594"
      ],
      "invalid": [
        "9622001560001234567100794808390595",
        "9622001560001234567100794808390597"
      ]
    }
  }
]

}