{
  "schema_version": 1,
  "diagram_type": "dataflow",
  "meta": {
    "title": "Northline Coffee — Stripe Payout Reconciliation to Chase 1002 (2026-07)",
    "output": "northline-payout-rec.html",
    "viewBox": [
      1080,
      760
    ],
    "animation": "trace",
    "quality_profile": "showcase",
    "views": [
      {
        "id": "stripe-side",
        "label": "What Stripe paid out",
        "focus": [
          "charges",
          "refunds",
          "fees",
          "payouts"
        ],
        "note": "Each payout is gross charges less refunds less fees. Stripe's payout report is the source for all three."
      },
      {
        "id": "timing",
        "label": "Timing, not breaks",
        "focus": [
          "payouts",
          "transit",
          "deposits"
        ],
        "note": "Payouts initiated on 30–31 July land in Chase in August. In-transit is an explained timing item, not an error."
      },
      {
        "id": "residual",
        "label": "The unexplained residual",
        "focus": [
          "deposits",
          "qbodeposits",
          "residual",
          "wholesale"
        ],
        "note": "Chase deposits minus Stripe payouts minus wholesale ACH minus known timing is the residual. It must be zero before the close is signed."
      }
    ]
  },
  "stages": [
    {
      "label": "Stripe (payments)"
    },
    {
      "label": "Payout"
    },
    {
      "label": "Chase 1002 (cash SoT)"
    },
    {
      "label": "QuickBooks (books SoT)"
    }
  ],
  "nodes": [
    {
      "id": "charges",
      "type": "backend",
      "label": "Charges",
      "sublabel": "gross, July",
      "stage": 0,
      "row": 0,
      "tag": "Stripe report",
      "brand": "stripe"
    },
    {
      "id": "refunds",
      "type": "security",
      "label": "Refunds",
      "sublabel": "less",
      "stage": 0,
      "row": 2,
      "tag": "Stripe report"
    },
    {
      "id": "fees",
      "type": "security",
      "label": "Fees",
      "sublabel": "less",
      "stage": 0,
      "row": 4,
      "tag": "Stripe report"
    },
    {
      "id": "payouts",
      "type": "backend",
      "label": "Payouts",
      "sublabel": "net, initiated",
      "stage": 1,
      "row": 1,
      "tag": "amount: unknown"
    },
    {
      "id": "transit",
      "type": "cloud",
      "label": "In transit",
      "sublabel": "initiated 30–31 Jul",
      "stage": 1,
      "row": 3,
      "tag": "timing"
    },
    {
      "id": "deposits",
      "type": "database",
      "label": "Deposits",
      "sublabel": "Chase statement",
      "stage": 2,
      "row": 1,
      "tag": "cash SoT"
    },
    {
      "id": "wholesale",
      "type": "external",
      "label": "Wholesale ACH",
      "sublabel": "not Stripe",
      "stage": 2,
      "row": 3,
      "tag": "explained"
    },
    {
      "id": "qbodeposits",
      "type": "database",
      "label": "Deposits in QBO",
      "sublabel": "bank feed",
      "stage": 3,
      "row": 1,
      "tag": "books SoT"
    },
    {
      "id": "residual",
      "type": "security",
      "label": "Unexplained",
      "sublabel": "must be zero",
      "stage": 3,
      "row": 3,
      "tag": "gate"
    }
  ],
  "flows": [
    {
      "id": "charges-to-payouts",
      "from": "charges",
      "to": "payouts",
      "label": "gross charges",
      "classification": "Stripe",
      "variant": "emphasis",
      "fromSide": "right",
      "toSide": "left",
      "via": [
        [
          205,
          157
        ],
        [
          205,
          271
        ]
      ],
      "labelAt": [
        205,
        214
      ]
    },
    {
      "id": "less-refunds",
      "from": "refunds",
      "to": "payouts",
      "label": "less refunds",
      "classification": "Stripe",
      "variant": "security",
      "fromSide": "right",
      "toSide": "left",
      "via": [
        [
          222,
          385
        ],
        [
          222,
          271
        ]
      ],
      "labelAt": [
        190,
        328
      ]
    },
    {
      "id": "less-fees",
      "from": "fees",
      "to": "payouts",
      "label": "less fees",
      "classification": "Stripe",
      "variant": "security",
      "fromSide": "right",
      "toSide": "left",
      "via": [
        [
          240,
          613
        ],
        [
          240,
          271
        ]
      ],
      "labelAt": [
        240,
        542
      ]
    },
    {
      "id": "payouts-to-deposits",
      "from": "payouts",
      "to": "deposits",
      "label": "landed in July",
      "classification": "matched",
      "variant": "emphasis",
      "route": "straight",
      "labelAt": [
        420,
        258
      ]
    },
    {
      "id": "payouts-in-transit",
      "from": "payouts",
      "to": "transit",
      "label": "not yet landed",
      "classification": "timing",
      "variant": "dashed",
      "fromSide": "bottom",
      "toSide": "top",
      "route": "straight",
      "labelAt": [
        315,
        385
      ]
    },
    {
      "id": "wholesale-in",
      "from": "wholesale",
      "to": "deposits",
      "label": "ACH deposits",
      "classification": "non-Stripe",
      "variant": "default",
      "fromSide": "top",
      "toSide": "bottom",
      "route": "straight",
      "labelAt": [
        530,
        385
      ]
    },
    {
      "id": "feed",
      "from": "deposits",
      "to": "qbodeposits",
      "label": "bank feed",
      "classification": "matched",
      "variant": "emphasis",
      "route": "straight",
      "labelAt": [
        638,
        258
      ]
    },
    {
      "id": "to-residual",
      "from": "qbodeposits",
      "to": "residual",
      "label": "− payouts − ACH − transit",
      "classification": "gate",
      "variant": "security",
      "fromSide": "bottom",
      "toSide": "top",
      "route": "straight",
      "labelAt": [
        745,
        385
      ]
    }
  ],
  "cards": [
    {
      "dot": "emerald",
      "title": "How it ties",
      "items": [
        "Stripe payout report explains gross, refunds, fees per payout",
        "Chase deposits are the only cash fact",
        "QuickBooks deposits come from the bank feed, not from Stripe"
      ]
    },
    {
      "dot": "amber",
      "title": "Guardrails",
      "items": [
        "In-transit payouts are dated timing items, listed by payout ID",
        "Wholesale ACH is explained separately; it is not a Stripe break",
        "No amounts drawn: none were supplied for 2026-07 · connected ≠ tied out"
      ]
    },
    {
      "dot": "rose",
      "title": "Gate",
      "items": [
        "Unexplained residual must be zero before lock",
        "A residual is a break owned by the controller",
        "Do not mark green on a non-zero difference"
      ]
    }
  ]
}
