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 (
createEmbedSessionfails withFEATURE_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_DISABLEDinstead. - 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.