{
  "version": "2",
  "generatedAt": "2026-11-03T22:49:39.280Z",
  "listing": {
    "slug": "itflow-org--itflow",
    "name": "ITFlow",
    "tagline": "Ticketing, client documentation, quotes, invoices, and expenses for small MSPs, with a keyed REST API.",
    "shortTagline": "Ticketing and invoicing for MSPs",
    "description": "ITFlow is a GPL PHP app that puts an MSP's tickets, client assets, credentials, domains, quotes, invoices, payments, and expenses in one place, with a client portal and Stripe payments. It spans both halves of this vertical. The Builder documents an API at /api/v1/{module}/{function}.php authenticated by API key, with read access across the modules, create for tickets and locations, and create plus update for clients, contacts, assets, documents, and credentials.",
    "capabilities": [
      "adaptable",
      "operable"
    ],
    "vertical": "support-bookkeeping",
    "alternativeTo": [
      "ConnectWise PSA",
      "Syncro"
    ],
    "shape": "business-app",
    "formFactor": "web-app",
    "executionModel": "deterministic",
    "provenance": "human-written",
    "codeStack": {
      "languages": [
        "PHP",
        "JavaScript"
      ],
      "frameworks": [],
      "packageManager": null,
      "database": [
        "MariaDB",
        "MySQL"
      ],
      "hostingTarget": [
        "self-host (Ubuntu/Debian install script)"
      ]
    },
    "modelStack": null,
    "repos": [
      {
        "url": "https://github.com/itflow-org/itflow",
        "owner": "itflow-org",
        "name": "itflow",
        "license": "GPL-3.0",
        "stars": 994,
        "lastCommit": "2026-09-02"
      }
    ],
    "interface": {
      "kind": "api",
      "url": "https://docs.itflow.org/api",
      "official": true,
      "hosted": "local"
    },
    "operability": "official",
    "recommendedWrapper": null,
    "reach": [
      {
        "job": "Create and read tickets",
        "reachable": true,
        "evidence": "docs.itflow.org/api: Tickets is Read + Create; api/v1/tickets and ticket_replies directories in repo"
      },
      {
        "job": "Manage clients and contacts",
        "reachable": true,
        "evidence": "docs.itflow.org/api: Clients and Contacts support read, create, and update; archive/unarchive not listed on the docs page"
      },
      {
        "job": "Document client assets, networks, domains, certificates",
        "reachable": true,
        "evidence": "Assets, Certificates, Locations, Documents are Read + Create; Domains, Networks read-only"
      },
      {
        "job": "Store and retrieve client credentials",
        "reachable": true,
        "evidence": "Credentials Read + Create; every call needs api_key_decrypt_password"
      },
      {
        "job": "Read invoices, quotes, payments, and expenses",
        "reachable": true,
        "evidence": "Invoices, Quotes, Payments, Expenses are read-only modules"
      },
      {
        "job": "Create and send quotes and invoices",
        "reachable": false,
        "evidence": "Invoices and Quotes endpoints are read-only per the API docs"
      },
      {
        "job": "Record expenses and payments",
        "reachable": false,
        "evidence": "Expenses and Payments are read-only"
      },
      {
        "job": "Take online payments with Stripe",
        "reachable": false,
        "evidence": "Stripe runs through the client portal, no API endpoint"
      },
      {
        "job": "Alert on domain and SSL expiry",
        "reachable": false,
        "evidence": "cron-driven; API only reads Domains and Certificates"
      },
      {
        "job": "Client portal self-service",
        "reachable": false,
        "evidence": "portal is a separate login UI, not covered by the API"
      }
    ],
    "editions": [
      {
        "name": "Free (self-hosted)",
        "price": null,
        "open": true,
        "distributions": [
          {
            "kind": "source",
            "url": "https://github.com/itflow-org/itflow"
          },
          {
            "kind": "installable",
            "url": "https://docs.itflow.org/installation_script",
            "command": "wget -O itflow_install.sh https://github.com/itflow-org/itflow-install-script/raw/main/itflow_install.sh && bash itflow_install.sh"
          }
        ]
      },
      {
        "name": "Managed hosting",
        "price": null,
        "open": false,
        "distributions": [
          {
            "kind": "hosted",
            "url": "https://services.itflow.org/hosting.php"
          }
        ]
      }
    ],
    "skills": {
      "kind": "none",
      "paths": [],
      "install": null,
      "note": "No SKILL.md, Claude Code plugin, or skills install target in the repo."
    },
    "customization": {
      "summary": "The installer writes config.php (gitignored) with database credentials, the encryption key, and base URL; everything else an MSP changes is in the Settings UI: company details, invoice numbering and templates, tax rates, ticket statuses, email (IMAP/SMTP), and API keys per client or all-client. There are no env vars or prompt files. Code changes are only needed for new modules; PRs from the community are currently paused.",
      "envVars": [],
      "configFiles": [
        "config.php"
      ],
      "promptFiles": [],
      "effort": "config-only",
      "editCount": 1
    },
    "useWhen": [
      "we are a small MSP and want tickets, client docs, and invoicing in one free system our agent can read and create tickets in",
      "we want our agent to pull unpaid invoices and open tickets per client for a weekly account review without a paid PSA"
    ],
    "accounts": [
      "Stripe (optional, for online payments)",
      "SMTP/IMAP mailbox for ticket email"
    ],
    "active": true,
    "lastActivity": "2026-09-02",
    "gotchas": [
      "API is read-only for billing modules; invoices, quotes, expenses, and payments cannot be created by an agent",
      "API key is passed as a query parameter, so it lands in web server logs",
      "Managed hosting is marked coming soon; self-host on Ubuntu/Debian is the supported path",
      "GPL-3.0; stable release only since Jan 2025 per README security note"
    ],
    "fit": {
      "adaptable": 2,
      "operable": 2
    },
    "evidence": {
      "formFactor": "README: install script on Ubuntu/Debian, PHP app",
      "executionModel": "no model dependencies; feature list is documentation, ticketing, billing",
      "operability": "docs.itflow.org/api: 'API Key via query parameter ?api_key=YOUR_KEY' (JSON body for POST), keys created under Admin Settings > API Keys, scoped to all clients or one client; no browser session needed. URL pattern /api/v1/{module}/{function}.php.",
      "effort": ".gitignore lists config.php; no other config or env files in the tree",
      "editions": "README: free and open source; services.itflow.org hosting coming soon",
      "active": "gh api: pushed 2026-09-02, 994 stars"
    },
    "confidence": {
      "formFactor": 0.95,
      "executionModel": 0.9,
      "operability": 0.95,
      "effort": 0.8,
      "reach": 0.85,
      "editions": 0.8
    },
    "openQuestions": [
      "Managed hosting price when it launches",
      "Whether ticket_replies API supports creating replies (directory exists; docs page did not list it)"
    ],
    "sources": [
      {
        "url": "https://github.com/itflow-org/itflow",
        "foundBy": "sourcing:support-bookkeeping:curated"
      },
      {
        "url": "https://docs.itflow.org/api",
        "foundBy": "sourcing:support-bookkeeping:curated"
      }
    ],
    "research": {
      "stage": "verified",
      "verdict": "approve",
      "reason": "Builder-documented API at docs.itflow.org/api, authenticated by an api_key query parameter created in Admin Settings, callable without a browser session. Billing modules stay read-only, which the Reach list already records.",
      "disputed": []
    },
    "url": "apps/itflow-org--itflow.html",
    "coverage": "partial",
    "paid": false,
    "source": "research/verified/itflow-org--itflow.json"
  }
}
