Every feature here exists because a non-profit asked for it. Nothing
below is on a roadmap or "coming soon" — it's all shipped and running
against live Odoo tenants.
Grant cycles & templates
Per-cycle stages. Concept Note → Proposal & Budget → Assessment → Decision → Contract. Stages are editable; you can add donor-specific ones like "External due diligence" or "Board approval".
Required forms & documents per stage. Define them in the template; togrant.com enforces them when applications move forward.
Editable cycle types. Rename them, add new ones, archive obsolete ones. The "no templates attached" guard keeps you from deleting a type that still has live work on it.
Ten pre-loaded example templates. EU centralised, Embassy / in-country, MFA framework, Private foundation, USAID, UN agency, FCDO, GIZ / BMZ, Sida. Copy one to your own template and tweak — your copy starts archived so you can rename + adjust before exposing it.
Budget categories & detail lines
Per-cycle budget categories. EU PRAG uses HR / Travel / Equipment / Office / Services / Indirect 7%; USAID uses Personnel / Fringe / Travel / Equipment / Supplies / Contractual / NICRA. Each cycle owns its own set — no global enum that forces every donor into the same shape.
Per-project detail lines. Underneath each category, the actual budget lines (e.g. "Project Director, 50%, 36 months @ €3,500/mo"). Cycle templates carry default detail lines; project budgets inherit them and can be edited per implementation.
% of direct. Indirect categories support automatic "% of direct" calculation — change the percentage, all downstream numbers recompute.
EU template export. Multi-tab XLSX matching the EU PRAG budget template, with the right structure for donor submission.
my.togrant.com/admin/tenants/acme/cycles/12
my.togrant.com/admin/tenants/acme/cycles/12
Reporting cadence
Period generation per cycle. Annual, quarterly, mid-term at month N, final at grant end. Period boundaries respect the tenant's fiscal-year-start month.
Date-filtered actuals. Periods filter the Odoo analytic-line pull, so "Q2 2026" actuals are just Q2 2026 actuals.
Donor exports per period. EU-shaped today; USAID, UN, FCDO formats on request.
Standard XML-RPC API only. No Odoo module, no Studio fields, no server actions. Compatible with Odoo Community and Enterprise.
Three analytic plans, dynamically populated. Plan 1 (Project), Plan 2 (Donor budget line), Plan 3 (Donor budget detail). Accounts are created on demand based on your cycle's categories and detail lines.
Per-project Odoo company override. Multi-entity orgs can route specific projects to specific Odoo companies (res.company) — useful when you've set up a branch, subsidiary, or country office as a separate Odoo company.
Idempotency keys + sync log. Every API call is keyed by tenant:entity:operation and writes to a sync log. Retries never duplicate. Failures are visible, never silent.
Connection health monitoring. 5-minute cron pings each tenant's Odoo. Red / amber / green status on the admin dashboard.
Multi-tenant ready, single-tenant focused
Tenant-scoped queries everywhere. Every database query passes through a tenant-scoping helper. There's no shared-data leak surface.
Custom labels per tenant. Don't like "Projects" or "Organisational units"? Rename to "Programmes" or "Country offices". Labels flow through every screen and the user manual.
Per-tenant Odoo configuration. URL, database, service-account credentials, fiscal year. Each tenant owns its own settings.
Auth & security
Magic-link sign-in by default. No passwords to phish, no rotation policy to write. Email lands in 6 seconds via SMTP2GO; link expires in 15 minutes; sessions are HttpOnly + Secure + SameSite=Lax.
SSO on Team and Enterprise. Microsoft Entra and Google Workspace.
Server-side permission checks on every mutating route. Hiding a button is never our only line of defence.