FinBaze for Platforms

Guides

FinBaze decides what a company can use in two layers. The allowance is what FinBaze puts in your contract. Limits are yours: you can only narrow what the allowance gives you. There is exactly one limit: hidden. There are no upsell states and no segments. See Feature allowance and limits.

See what you have#

query { platformFeatureAllowance { version features { key } } }
query Effective($company: ID!) { platformCompanyFeatures(profileId: $company) { key enabled source blockedBy } }

source and blockedBy tell you why a key is off for a company: not in the allowance, hidden by you, or blocked by a key it requires.

Hide something#

mutation { setPlatformFeatureLimit(input: { key: "banking", hidden: true }) { key level hidden } }

Add profileId to hide it for one company only. clearPlatformFeatureLimit(key: "banking") shows it again, and platformFeatureLimits lists what you set. Changes reach every API server within about 30 seconds.

What hiding removes#

A hidden module is gone, not locked:

  • Its operations fail with FEATURE_DISABLED; its data is absent from nested results.
  • Components that need it cannot be added to a session (createEmbedSession fails with FEATURE_DISABLED), and mounted ones lose its parts.
  • Events of the module are not published for the company.
  • Data you send to a hidden module is still accepted (you may show the module later). A module that is off (not in the allowance) answers FEATURE_DISABLED instead.
  • Accounting firms working on the company see the same: a hidden module is hidden for them too.

Feature keys you may limit#

Keys such as banking, sales_invoices, purchase_invoices, tax_filings, submit_tax_filings, one_stop_shop_filing, icp_filing, payroll, forecasts, budgets, annual_accounts, automations, ai_assistant, custom_records and firm_access are limitable. A key that is beta is available only where FinBaze has switched it on for you. Your allowance shows exactly what applies to you.

Component features are separate#

A component's own features (for example submit on vat-return) are chosen per session in createEmbedSession and never override a hidden module:

mutation {
  createEmbedSession(input: { companyId: "…", user: { externalUserId: "user-42" }, components: { vatReturn: { enabled: true, features: { submit: false } } } }) { clientSecret }
}

Try it in the sandbox#

Hide banking for one seeded company, call platformCompanyFeatures and watch transactions refuse to join a new session. Show it again and retry within a minute.

Pitfalls#

  • Expecting hidden to mean "visible but locked": there is no locked state.
  • Hiding firm_access: companies with a connected firm get a notice period before it ends; see Firms.