User FAQ
Why can't I approve a journal entry / invoice / bill I created myself? Segregation of duties — every transaction needs three different people: the one who creates it, a reviewer, and an approver. The server blocks a preparer from reviewing or approving their own document, and blocks whoever reviewed it from also approving it, regardless of your role, permissions or owner status. Have other team members do those steps. There are no exceptions on any plan, so an organization needs at least three active members to post anything.
Why does approving something ask me for a 2FA code again, even though I'm logged in? Your organization's security policy requires step-up MFA specifically at review/approval/posting/reversal actions, independent of your login session. This is configurable by an Administrator per tenant.
Why doesn't a quotation or sales order show up in my financial reports? Only invoices, credit notes, and debit notes post to the general ledger. Quotations and sales orders are pre-sale documents that never touch the books until converted into an invoice.
Can I edit an invoice/bill/journal entry after it's posted? No — posted entries are immutable by design. Use a reversal (which creates a new offsetting entry) to correct a posted mistake.
Why can't I see the Billing page? In the default recommended role setup, Billing (like Team & Access) is Administrator-only — every other role gets no access to it, even Viewer.
API FAQ
Is there API-key authentication for third-party integrations? Yes. Each user can create API keys under My profile → API keys, scoped to read-only or read & write, with an optional expiry. A key is a bearer token that acts as the user who created it, with the same permissions and organization memberships, and can be revoked at any time. There is no OAuth client-credentials flow and no tenant-level service account. See API Access.
Why did my request 404 instead of 403 when I tried to access another tenant's record? By design — cross-tenant record lookups return 404, not 403, so as not to confirm that a given UUID even exists under another tenant.
Why did my request get a 402 instead of a normal error?
The API returns 402 Payment Required for write requests when the tenant has no active subscription. Reads and */billing/* routes remain available so you can still view data and pay to restore access.
Is there a webhook I can subscribe to for events in my own tenant's data (e.g. invoice posted)? Not currently — the only inbound webhooks are Paddle/PayMongo billing events; there's no outbound/developer-facing webhook system for tenant-domain events.