Finance
Budgets against actuals, invoices, ledger and multi-currency per vessel.
Budgets against actuals, invoices, ledger and multi-currency per vessel.
Module key: finance. Accent colour: #a5f3fc on dark, #155e75 for accent text in the light theme (from @pruva/brand/tokens; see Module accents).
Pages
| Page | Path in the app | What it shows |
|---|---|---|
| Finance | /app/finance | Budget against actual for the year so far, fleet and per vessel, invoices waiting for approval, overdue payables and receivables, cash going out in the next 30 days and open amounts per currency. |
| Invoices | /app/finance/invoices | Supplier and customer invoices with source (purchase order, disbursement account or manual), amount in its currency and in USD, due date and status. Each one opens its lines, the approval steps, the journal it posted and a link to the order or port call it came from. |
| Budgets | /app/finance/budgets | The year's OPEX budget per vessel and category against posted actuals and the forecast, editable month by month. |
| Ledger | /app/finance/ledger | Every journal entry with its lines, the trial balance and the P&L per vessel per month. |
| Integrations | /app/integrations/finance | The connectors this module reads from, with status, last sync and any problem to fix. |
Each invoice opens /app/finance/invoices/[id]: lines, approval steps, the journal it posted and a link to the purchase order or the port call. Create, submit, dispute and edit the budget need edit. Approving needs edit, and publish at or above $10,000. In the demo every amount is generated and Refresh rates makes no call. In database mode, with the Frankfurter connection on, refresh stores a checked daily rate and an invoice uses the latest stored rate on or before its issue date.
Connectors
Every connector is a mock in this build. The demo reads generated data and makes no outside calls. Verify each provider before launch.
- Xero (
xero): Invoices and ledger entries per vessel. Mock in this build. - Frankfurter (
frankfurter-fx): Free daily ECB reference rates for multi-currency amounts (no key; called only in DB mode when connected). Mock in this build.
See Connections for what each one will need.
Actions that need publish
These buttons need the publish level on this module. AI agents can never hold publish, so they cannot press them.
| Action | Key | What it does |
|---|---|---|
| Record an invoice payment | finance.invoice.pay | The button is Record payment. It pays an approved invoice at that invoice’s stored rate. Partial payments are not built. Approving an invoice needs edit, and publish when the amount is at or above $10,000. |
| Post a journal | finance.journal.post | The button is Post journal. The lines must balance. A deferred database trigger keeps every journal balanced. Nothing is exported to Xero. |
Price
Finance is a Pro module: it takes one Pro slot on Operations or Professional, and is in Complete.
| Plan | Per vessel per year |
|---|---|
| Operations (4 Pro) | $6,995 per vessel per year |
| Professional (8 Pro) | $12,240 per vessel per year |
| Complete (all 13 Pro) | $19,900 per vessel per year |
A 10% deposit opens a 1-month trial, then billed annually per vessel. 3-year contract. You can leave in year 1. The deposit is not refunded. No refunds after the trial for the year already started; cancel renewal any time.
Also in the packs: Ship manager's office, Commercial desk.
Solves: OPEX overruns seen at quarter end · Invoices paid twice · Budgets kept per vessel in Excel.
- Budget against actuals per vessel
- Invoices
- Ledger
- Multi-currency