states/SC.json

{
  "state": "SC",
  "spec": {
    "document": "South Carolina D282 Software Developers Implementation Guide (FTA MFETv4.2), with the SC Schema Requirement Details and the Validation and Business Rules spreadsheets",
    "version": "D282 April 2026, schema requirements Rev. 2026-06-26, validation rules Rev. 7-27-2026",
    "where": "https://dor.sc.gov/find-a-form/software-developers/software-developer-updates/motor-fuel-xml-program",
    "pinned": "2026-07-27",
    "checked": "2026-09-23",
    "note": "the transporter return conforms to every checked rule in this version. the rules that change live in the two spreadsheets, not the guide. open against this version: the consignor name may be 50 characters where we cut it to 35, net and gross may be any integer up to 18 digits (negative on an amended return) where the tests take 3 to 6 digits, and the bol may be any characters up to 15 where the tests take digits."
  },
  "max_length": {
    "supplier.name": 50,
    "consignor.name": 50,
    "consignee.name": 50
  },
  "tests": [
    {
      "type": "Freight",
      "name": "BOL is not a 3 to 15 digit number",
      "field": "bol",
      "test": "^[0-9]{3,15}$"
    },
    {
      "type": "Freight",
      "name": "Net is not a 3 to 6 digit number",
      "field": "net",
      "test": "^[0-9]{3,6}$"
    },
    {
      "type": "Freight",
      "name": "Gross is not a 3 to 6 digit number",
      "field": "gross",
      "test": "^[0-9]{3,6}$"
    },
    {
      "type": "Freight",
      "name": "No Commodity Code Mapping",
      "field": "cmd_code",
      "test": "^(?!nocode-).+$"
    },
    {
      "type": "Freight",
      "name": "Missing Ship Date",
      "field": "shipped",
      "test": "^.+$"
    },
    {
      "type": "Freight",
      "name": "Missing Shipper",
      "field": "shipper.cmp_id",
      "test": "^.+$"
    },
    {
      "type": "Freight",
      "name": "Missing Supplier",
      "field": "supplier.cmp_id",
      "test": "^.+$"
    },
    {
      "type": "Freight",
      "name": "Missing AccountOf/Consignor",
      "field": "consignor.cmp_id",
      "test": "^.+$"
    },
    {
      "type": "Freight",
      "name": "Missing Consignee",
      "field": "consignee.cmp_id",
      "test": "^.+$"
    },
    {
      "type": "Shipper",
      "name": "Shipper TCN missing or Invalid Format",
      "field": "shipper.tcn",
      "test": "^T[0-9]{2}[a-z]{2}[0-9]{4}$"
    },
    {
      "type": "Supplier",
      "name": "Supplier Tax ID is not a 9 digit number",
      "field": "supplier.tax_id",
      "test": "^[0-9]{9}$"
    },
    {
      "type": "Consignor",
      "name": "Consignor Tax ID is not a 9 digit number",
      "field": "consignor.tax_id",
      "test": "^[0-9]{9}$"
    },
    {
      "type": "Consignee",
      "name": "Consignee State is not 2 Letters",
      "field": "consignee.state",
      "test": "^[a-z]{2}$"
    },
    {
      "type": "Consignee",
      "name": "Consignee Tax ID is not a 9 digit number",
      "field": "consignee.tax_id",
      "test": "^[0-9]{9}$"
    }
  ]
}