Ownware
Home›Expensa›Quickstart
Expensa · Quickstart

Expensa Quickstart, as shipped in the download

The QUICKSTART.txt in the download — the same steps your delivery email carries.

EXPENSA — QUICKSTART
====================

REQUIREMENTS
------------
  - PHP 8.0+ with extensions: pdo, pdo_sqlite (or pdo_mysql), fileinfo, curl
  - MySQL 5.7+ OR SQLite 3 (SQLite requires no extra setup)
  - An API key for OpenAI, Anthropic, or Ollama (set after install, or during)
  - A web server (Apache with mod_rewrite, or Nginx with try_files)


SHARED HOSTING / CPANEL (RECOMMENDED FOR MOST BUYERS)
------------------------------------------------------
1. Upload the contents of the `app/` folder to your web root (e.g. public_html/)
   or a subdirectory (e.g. public_html/expensa/).

2. Make sure these directories are writable by PHP:
     data/
     data/uploads/

   Via cPanel File Manager: right-click -> Permissions -> set to 755 or 775.

3. Visit https://yourdomain.com/install/ in your browser.

4. Fill in the installer:
     - Database: choose MySQL (fill in host/name/user/pass) or SQLite (no setup)
     - Company name and base currency
     - LLM provider and API key (or leave blank to configure later in Settings)
     - Admin email + password

5. The installer writes config.php and redirects you to the login page.

6. Log in, then go to Settings to verify or update your LLM provider and API key,
   and to edit your expense categories if you want to.

7. Create a report, upload a batch of receipts, and click Run extraction.


VPS / SELF-HOSTED
-----------------
Requirements same as above. Apache example:

  <VirtualHost *:80>
    DocumentRoot /var/www/expensa/app
    <Directory /var/www/expensa/app>
      AllowOverride All
      Require all granted
    </Directory>
  </VirtualHost>

Run the web installer as above, or use the CLI seeder:

  php bin/demo.php    # loads demo data (login: admin@expensa.app / admin123)


DOCKER (QUICK TEST)
-------------------
  docker run --rm -p 8080:8080 \
    -v "$(pwd):/var/www/html" \
    -w /var/www/html \
    php:8.3-cli \
    php -S 0.0.0.0:8080 router.php

  Then visit http://localhost:8080/install/


POST-INSTALL SECURITY CHECKLIST
--------------------------------
  [ ] config.php is protected (the .htaccess does this automatically)
  [ ] data/ is not web-accessible (.htaccess blocks it automatically)
  [ ] Use HTTPS in production
  [ ] Keep PHP updated


NOTES
-----
  * Upload 5-50 receipts at once. Each pending receipt is read when you click
    "Run extraction". You are never charged for an API call you didn't trigger.
  * Extraction accuracy depends on the model you choose. GPT-4o and
    Claude 3 Sonnet/Opus give the best results.
  * Images (PNG, JPEG, WebP) work reliably across all providers.
  * PDFs work best with Anthropic (native document support). Other providers
    treat PDFs as best-effort.
  * Expensa never adds amounts across currencies — a mixed-currency report keeps a
    separate total per currency.
  * Export formats: CSV (accountant-ready) and a printable PDF summary.
  * Expensa builds expense reports; it is not accounting software and does not
    replace your accountant.

← Back to Expensa · Manual · API · Test run

Affiliate program
Recommend tools people own — earn 35% on every sale. 90-day tracking, instant delivery, payouts by Lemon Squeezy.
Become an affiliate →