states/NC.json

{
  "state": "NC",
  "spec": {
    "document": "North Carolina Motor Fuels EDI Implementation Guide, transporter return GAS-1301 (CCR)",
    "version": "1.0.7",
    "where": "https://www.ncdor.gov/documents/motor-fuels-edi-implementation-guide",
    "pinned": "2026-03",
    "checked": "2026-09-23",
    "note": "nothing in 1.0.7 changes the transporter file these tests were written for (guide 1.0.4): schedule codes, the envelope, segment layouts and the product codes in use are unchanged, and the file conforms. one change matters for amendments only: BTI13 now takes CO (corrected) and 6S (supplemental) where 1.0.4 had 05 and 15. North Carolina counts an order in the period it started, not the one it completed. where the state sets a rule for bol, quantity or a tax id, the test follows it; where it does not, the test is ours."
  },
  "max_length": {
    "supplier.name": 35,
    "consignor.name": 35,
    "consignee.name": 35,
    "consignee.address": 35,
    "consignee.city": 30
  },
  "period_basis": "start",
  "tests": [
    {
      "type": "Freight",
      "name": "BOL is missing or over 15 characters",
      "field": "bol",
      "test": "^.{1,15}$"
    },
    {
      "type": "Freight",
      "name": "Net is not a 1 to 15 digit number",
      "field": "net",
      "test": "^[0-9]{1,15}$"
    },
    {
      "type": "Freight",
      "name": "Gross is not a 1 to 15 digit number",
      "field": "gross",
      "test": "^[0-9]{1,15}$"
    },
    {
      "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 State is not 2 letters",
      "field": "shipper.state",
      "test": "^[a-z]{2}$"
    },
    {
      "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 9 to 18 characters",
      "field": "supplier.tax_id",
      "test": "^.{9,18}$"
    },
    {
      "type": "Consignor",
      "name": "Consignor Tax ID is not 9 to 18 characters",
      "field": "consignor.tax_id",
      "test": "^.{9,18}$"
    },
    {
      "type": "Consignee",
      "name": "Missing Consignee name",
      "field": "consignee.name",
      "test": "^.+$"
    },
    {
      "type": "Consignee",
      "name": "Missing Consignee City",
      "field": "consignee.city",
      "test": "^.+$"
    },
    {
      "type": "Consignee",
      "name": "Consignee State is not 2 Letters",
      "field": "consignee.state",
      "test": "^[a-z]{2}$"
    },
    {
      "type": "Consignee",
      "name": "Missing Consignee Zip",
      "field": "consignee.zip",
      "test": "^.+$"
    },
    {
      "type": "Consignee",
      "name": "Consignee Tax ID is not 9 to 18 characters",
      "field": "consignee.tax_id",
      "test": "^.{9,18}$"
    }
  ]
}