{
  "id": "OPS-140",
  "slug": "ops-140",
  "title": "Grey routes are not a price advantage",
  "statement": "A2P traffic must not be carried over any path or setting not authorised by the service providers for non-consumer messaging.",
  "rationale": "A grey route is a path that delivers commercial traffic through consumer-priced channels, and the carriers price it per message once they detect it — at ten dollars a message on at least one network, which turns a saving into a bill nobody budgeted. Senders rarely choose one knowingly: it arrives as a cheap termination option from an intermediary, or as the output of a least-cost router.",
  "layer": "OPERATIONAL",
  "layerSlug": "operational",
  "object": "termination path for A2P traffic",
  "severity": "BLOCKING",
  "detectability": [
    "UNDETECTABLE_PRE_SUBMISSION"
  ],
  "failureClass": "HARD_STOP",
  "authorities": [
    "CTIA",
    "T-Mobile",
    "all MNOs"
  ],
  "applicabilityText": "Applies to every 10DLC registration.",
  "universal": true,
  "remediation": "Send A2P traffic only over the authorised A2P path your provider registers for the campaign, and refuse termination offers priced materially below the market. Ask your provider, in writing, which route your traffic takes.",
  "notes": "A network path we cannot see. What the user has to do is ask their provider to confirm the route in writing and compare their per-message price against the going rate — an unexplained discount is the signal, and the answer arrives as a surcharge rather than as a rejection.",
  "phase": "post",
  "automated": false,
  "attestation": {
    "question": "Has your provider confirmed in writing which route your A2P traffic takes — and does your per-message price look like the going rate?",
    "howToCheck": [
      "Ask for the route in writing. Senders rarely choose a grey route knowingly: it arrives as a cheap termination option or as the output of a least-cost router.",
      "Compare your per-message price against the market. An unexplained discount is the signal.",
      "Refuse termination offers priced materially below it."
    ],
    "failureLooksLike": "The answer arrives as a surcharge rather than a rejection — up to ten dollars a message on at least one network, which turns the saving into a bill nobody budgeted."
  },
  "url": "https://ekas.io/rules/10dlc/operational/ops-140/",
  "markdown": "https://ekas.io/rules/10dlc/operational/ops-140.md",
  "registry": "https://ekas.io/rules/10dlc/",
  "updated": "2026-07-25",
  "licence": "CC BY 4.0 — https://creativecommons.org/licenses/by/4.0/"
}
