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. the bol, net and gross tests follow them (document number up to 15 characters and not 0, quantities any whole number up to 18 digits, negative on an amended return)."
  },
  "max_length": {
    "supplier.name": 50,
    "consignor.name": 50,
    "consignee.name": 50
  },
  "tests": [
    {
      "type": "Freight",
      "name": "BOL is missing, 0, or over 15 characters",
      "field": "bol",
      "test": "^(?!0$).{1,15}$"
    },
    {
      "type": "Freight",
      "name": "Net is not a whole number of up to 18 digits",
      "field": "net",
      "test": "^-?[0-9]{1,18}$"
    },
    {
      "type": "Freight",
      "name": "Gross is not a whole number of up to 18 digits",
      "field": "gross",
      "test": "^-?[0-9]{1,18}$"
    },
    {
      "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}$"
    }
  ]
}