{
  "id": "competency:llm-international-economic-law",
  "code": "CDU-LAW-IEL-900",
  "level": "LLM",
  "name": "Master of Laws — International Economic Law",
  "faculty": "Faculty of Commerce, Law and Management",
  "lineage": [
    {
      "institution": "Wits School of Law",
      "year": 2017,
      "note": "LLM International Economic Law — supposed to be"
    }
  ],
  "researchProject": "Open standards as trade law: the payment door, the PAN, and the energy-indexed unit as instruments of cross-border settlement",
  "description": "The rules that move goods, money and disputes across borders: Incoterms® 2020 risk and cost allocation, landed cost with duties and VAT, WTO dispute settlement timelines, and the clauses an international commercial contract must carry.",
  "syllabus": [
    "Incoterms® 2020: the eleven rules, risk transfer, cost allocation, export/import clearance",
    "Customs valuation and landed cost: duty, VAT, and the total cost of an import",
    "WTO dispute settlement: the DSU timeline from consultations to adoption",
    "International commercial contracts: the clauses that cannot be missing"
  ],
  "reference": {
    "Incoterms® 2020": "ICC publication 723E; risk and cost allocation between seller and buyer",
    "Customs value (SA)": "FOB value + 10% uplift for duty; VAT on (customs value + duty) at 15%",
    "DSU Art. 4": "consultations: 60 days before a panel may be requested",
    "DSU Art. 12": "panel report: 6 months from composition (9 at most)",
    "DSU Art. 17": "Appellate review: 60 days (90 at most)",
    "DSU Art. 16": "adoption: within 60 days of circulation unless appealed"
  },
  "role": "You are an international trade lawyer advising a merchant. Say what the rule is, cite it, apply it to the facts, and end with what the merchant should do — and say plainly what is legal advice and what is a calculation.",
  "feeUsd": 1,
  "version": "1.0.2",
  "qualification": {
    "award": "LLM",
    "nqfLevel": 9,
    "qualificationType": "Master's Degree (HEQSF qualification type 9a)",
    "totalCredits": 180,
    "minCreditsAtExitLevel": 120,
    "iscedFields": [
      "042"
    ],
    "standards": [],
    "registration": "not registered"
  },
  "modules": [
    {
      "code": "CDU-LAW-IEL-900-901",
      "title": "Coursework — the executable units",
      "nqfLevel": 9,
      "credits": 60,
      "prerequisites": [],
      "coRequisites": [],
      "outcomes": [
        "answer every unit of the qualification against its published reference, with the working shown"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "every unit passed once through the seeded assessment (the seeded assessment room)",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [
        "incoterm_allocation",
        "landed_cost",
        "wto_dispute_timeline",
        "contract_clause_check"
      ],
      "notionalHours": 600
    },
    {
      "code": "CDU-LAW-IEL-900-902",
      "title": "Research report",
      "nqfLevel": 9,
      "credits": 120,
      "prerequisites": [
        "CDU-LAW-IEL-900-901"
      ],
      "coRequisites": [],
      "outcomes": [
        "Open standards as trade law: the payment door, the PAN, and the energy-indexed unit as instruments of cross-border settlement"
      ],
      "assessment": {
        "formative": [
          "worked examples re-run against the published reference",
          "seeded practice scenarios, deterministic per (pan, unit, attempt)"
        ],
        "summative": "the research report, assessed against the qualification’s published reference block",
        "passMark": 50,
        "subminimum": 40,
        "moderation": "internally assessed by the unit itself — its reference implementation is the marker; the working is published so anyone can re-run the mark (D-13.1 — no model marks anything)"
      },
      "unitIds": [],
      "notionalHours": 1200
    }
  ],
  "units": [
    {
      "id": "incoterm_allocation",
      "name": "Incoterm risk and cost allocation",
      "answers": "Under a given Incoterms® 2020 rule, when does risk pass, who pays carriage and insurance, and who clears customs?",
      "example": {
        "incoterm": "CIP"
      },
      "reference": "Incoterms® 2020 (ICC)",
      "signature": {
        "input": {
          "incoterm": {
            "type": "string",
            "describe": "The three-letter rule",
            "oneOf": [
              "EXW",
              "FCA",
              "FAS",
              "FOB",
              "CPT",
              "CIP",
              "CFR",
              "CIF",
              "DAP",
              "DPU",
              "DDP"
            ]
          },
          "transportMode": {
            "type": "string",
            "describe": "sea or other (road, air, rail, multimodal)",
            "oneOf": [
              "sea",
              "other"
            ],
            "default": "other"
          }
        },
        "output": {
          "group": {
            "type": "string",
            "describe": "E, F, C or D"
          },
          "riskTransfers": {
            "type": "string",
            "describe": "When risk passes from seller to buyer"
          },
          "sellerPaysMainCarriage": {
            "type": "boolean",
            "describe": "Seller pays the main carriage"
          },
          "sellerPaysInsurance": {
            "type": "boolean",
            "describe": "Seller must insure"
          },
          "sellerClearsExport": {
            "type": "boolean",
            "describe": "Seller clears export"
          },
          "sellerClearsImport": {
            "type": "boolean",
            "describe": "Seller clears import (DDP only)"
          },
          "modeSuitable": {
            "type": "boolean",
            "describe": "The rule suits the transport mode"
          },
          "note": {
            "type": "string",
            "describe": "What to watch"
          }
        }
      }
    },
    {
      "id": "landed_cost",
      "name": "Landed cost of an import",
      "answers": "What does an imported consignment cost once duty and VAT are paid, and what is the landed cost per unit?",
      "example": {
        "fobValue": 250000,
        "freight": 18000,
        "dutyRate": 0.15,
        "units": 500
      },
      "reference": "SA practice: customs value = FOB × 1.10 for duty; VAT 15% on customs value + duty (+ 10% uplift on ATV); other jurisdictions: set uplift to 0",
      "signature": {
        "input": {
          "fobValue": {
            "type": "number",
            "describe": "FOB (or transaction) value of the goods",
            "min": 0
          },
          "freight": {
            "type": "number",
            "describe": "International freight",
            "min": 0,
            "default": 0
          },
          "insurance": {
            "type": "number",
            "describe": "Insurance",
            "min": 0,
            "default": 0
          },
          "dutyRate": {
            "type": "number",
            "describe": "Ad valorem duty rate, 0–1",
            "min": 0,
            "max": 1
          },
          "vatRate": {
            "type": "number",
            "describe": "VAT rate, 0–1",
            "min": 0,
            "max": 1,
            "default": 0.15
          },
          "customsUplift": {
            "type": "number",
            "describe": "Statutory uplift on value for duty (SA: 0.10)",
            "min": 0,
            "max": 1,
            "default": 0.1
          },
          "units": {
            "type": "number",
            "describe": "Number of units in the consignment",
            "min": 1,
            "default": 1
          },
          "otherCharges": {
            "type": "number",
            "describe": "Clearing, port, local delivery",
            "min": 0,
            "default": 0
          }
        },
        "output": {
          "valueForDuty": {
            "type": "number",
            "describe": "Customs value used for duty"
          },
          "duty": {
            "type": "number",
            "describe": "Customs duty"
          },
          "valueForVat": {
            "type": "number",
            "describe": "Added tax value"
          },
          "vat": {
            "type": "number",
            "describe": "Import VAT (usually recoverable by a registered vendor)"
          },
          "landedCost": {
            "type": "number",
            "describe": "Total landed cost including VAT"
          },
          "landedCostExVat": {
            "type": "number",
            "describe": "Landed cost excluding VAT"
          },
          "landedCostPerUnit": {
            "type": "number",
            "describe": "Per unit, excluding VAT"
          }
        }
      }
    },
    {
      "id": "wto_dispute_timeline",
      "name": "WTO dispute settlement timeline",
      "answers": "From a request for consultations, when can a panel be requested, when is the report due, and when is it adopted — with and without appeal?",
      "example": {
        "consultationsRequested": "2026-11-01",
        "appealed": true
      },
      "reference": "DSU Articles 4, 6, 8, 12, 16, 17, 21",
      "signature": {
        "input": {
          "consultationsRequested": {
            "type": "string",
            "describe": "Date the request for consultations was made (YYYY-MM-DD)"
          },
          "appealed": {
            "type": "boolean",
            "describe": "Assume the panel report is appealed",
            "default": false
          },
          "panelCompositionDays": {
            "type": "number",
            "describe": "Days from panel request to composition (typically 20–60)",
            "min": 0,
            "max": 365,
            "default": 45
          }
        },
        "output": {
          "panelMayBeRequested": {
            "type": "string",
            "describe": "Earliest panel request (60 days after consultations)"
          },
          "panelComposed": {
            "type": "string",
            "describe": "Panel composition"
          },
          "panelReportDue": {
            "type": "string",
            "describe": "Panel report (6 months from composition)"
          },
          "panelReportLatest": {
            "type": "string",
            "describe": "Panel report, outer limit (9 months)"
          },
          "adoptionOrAppeal": {
            "type": "string",
            "describe": "Adoption (60 days) or appeal decision"
          },
          "appellateReport": {
            "type": "string",
            "describe": "Appellate report (90 days outer limit), if appealed"
          },
          "reasonablePeriodOutside": {
            "type": "string",
            "describe": "Outer limit of the reasonable period to comply (15 months after adoption)"
          },
          "totalMonths": {
            "type": "number",
            "describe": "Months from consultations to adoption"
          }
        }
      }
    },
    {
      "id": "contract_clause_check",
      "name": "International contract clause check",
      "answers": "Which of the twelve clauses an international commercial contract needs are present in this text, and which are missing?",
      "example": {
        "contractText": "Agreement between Seller and Buyer. Governing law: South Africa. Arbitration under AFSA rules. Payment terms net 30 in ZAR. Delivery FCA Johannesburg Incoterms 2020. Force majeure applies. Liability limited. Termination on notice. Confidential. Sanctions compliance. Signed."
      },
      "reference": "ICC Model International Sale Contract; UNIDROIT Principles; practice",
      "signature": {
        "input": {
          "contractText": {
            "type": "string",
            "describe": "The contract text (or its headings)"
          }
        },
        "output": {
          "present": {
            "type": "string[]",
            "describe": "Clauses found"
          },
          "missing": {
            "type": "string[]",
            "describe": "Clauses not found, with why they matter"
          },
          "score": {
            "type": "number",
            "describe": "Present ÷ 12"
          },
          "complete": {
            "type": "boolean",
            "describe": "Every clause present"
          }
        }
      }
    }
  ]
}