# ITFlow

Ticketing, client documentation, quotes, invoices, and expenses for small MSPs, with a keyed REST API.

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.

Alternative to: ConnectWise PSA, Syncro

- Capabilities: adaptable, operable
- Vertical: support-bookkeeping
- Shape: business-app
- Form factor: web-app
- Execution model: deterministic
- Provenance: human-written (recorded, never ranked)
- Repo: https://github.com/itflow-org/itflow (GPL-3.0), 994 stars, last commit 2026-09-02
- Last activity: 2026-09-02
- Page: apps/itflow-org--itflow.html
- JSON: apps/itflow-org--itflow.json

## Use it when

- 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

## 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

## Editions

- Free (self-hosted): Free, open source
  - source: https://github.com/itflow-org/itflow
  - installable: wget -O itflow_install.sh https://github.com/itflow-org/itflow-install-script/raw/main/itflow_install.sh && bash itflow_install.sh
- Managed hosting: Free, closed source
  - hosted: https://services.itflow.org/hosting.php

## Adaptable: make it yours

Effort: config-only (1 things to edit)

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.

- Env vars: none
- Config files: config.php
- Prompt files: none
- Accounts you'll need: Stripe (optional, for online payments); SMTP/IMAP mailbox for ticket email

## Operable: what an agent can drive

Operability: official. Interface: api at https://docs.itflow.org/api (published by the builder, local).

### Reach (partial coverage)

- Create and read tickets: reachable. docs.itflow.org/api: Tickets is Read + Create; api/v1/tickets and ticket_replies directories in repo
- Manage clients and contacts: reachable. docs.itflow.org/api: Clients and Contacts support read, create, and update; archive/unarchive not listed on the docs page
- Document client assets, networks, domains, certificates: reachable. Assets, Certificates, Locations, Documents are Read + Create; Domains, Networks read-only
- Store and retrieve client credentials: reachable. Credentials Read + Create; every call needs api_key_decrypt_password
- Read invoices, quotes, payments, and expenses: reachable. Invoices, Quotes, Payments, Expenses are read-only modules
- Create and send quotes and invoices: not reachable. Invoices and Quotes endpoints are read-only per the API docs
- Record expenses and payments: not reachable. Expenses and Payments are read-only
- Take online payments with Stripe: not reachable. Stripe runs through the client portal, no API endpoint
- Alert on domain and SSL expiry: not reachable. cron-driven; API only reads Domains and Certificates
- Client portal self-service: not reachable. portal is a separate login UI, not covered by the API

## Code stack

- Languages: PHP, JavaScript
- Frameworks: none
- Package manager: none
- Database: MariaDB, MySQL
- Hosting target: self-host (Ubuntu/Debian install script)

## Evidence and confidence

- formFactor: README: install script on Ubuntu/Debian, PHP app (confidence 0.95)
- executionModel: no model dependencies; feature list is documentation, ticketing, billing (confidence 0.9)
- 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. (confidence 0.95)
- effort: .gitignore lists config.php; no other config or env files in the tree (confidence 0.8)
- editions: README: free and open source; services.itflow.org hosting coming soon (confidence 0.8)
- active: gh api: pushed 2026-09-02, 994 stars
- reach:  (confidence 0.85)

## Open questions

- Managed hosting price when it launches
- Whether ticket_replies API supports creating replies (directory exists; docs page did not list it)

## Sources

- https://github.com/itflow-org/itflow (sourcing:support-bookkeeping:curated)
- https://docs.itflow.org/api (sourcing:support-bookkeeping:curated)
