Accounting Authorization Model
Authorization Boundary
Protected customer requests need established workspace authority and the operation’s declared permissions. Platform evaluates the caller and passes bounded signed authority to the receiving service. Accounting applies the operation and record checks at that boundary. Opening the application does not independently grant every financial action.
Health operations are public. The retained Stripe webhook also has a public route and requires its own processor validation; public routing supplies no customer role authority. Registered service callers use their separately restricted financial interfaces, while scheduled and lifecycle workers use machine execution. The system operation for marking electronic-check clearing requires a staff-only permission that generated customer tiers exclude.
Scopes
The selected workspace bounds customer grants and owned records. A business unit supplies the books, currency and eligible references for financial work. That ownership boundary does not establish a business-unit role grant: the examined close and reconciliation permissions apply across the workspace. Record checks protect identifiers, versions, locks and lifecycle eligibility after permission evaluation. Platform supports scoped role assignments, but the presence of those facilities does not prove that every Accounting operation evaluates a narrower scope.
Roles
The five profiles below describe Accounting policy entitlements within customer-composed roles. Read Only, User and Administrator are generated application policy tiers. The generated user profile includes read powers, and the administrator profile includes eligible lower-tier powers. These profiles describe the keys used by this area’s artifacts; Billing also publishes keys under the same application prefix and retains its own specification home.
Reconciliation Preparer and Reconciliation Approver are named policy profiles that a customer attaches to roles. The approver policy includes preparation powers as well as approval powers, so assigning the policy alone does not establish independent review. The financial command still evaluates its second-person guard. Declaring a policy assigns it to nobody. Customer role assignment, delegation checks and changes to held authority belong to Platform Security.
Permission Catalogue
Each key below has its declared tier, operation references, surfaces, further rule guards and provenance in the structured catalogue. A published family key can have no operation when the service publishes it without using it in a route. Query permissions protect Platform datasets separately from direct record reads. Console aliases resolve to backend keys and do not create additional service authority.
| Permission | Purpose |
|---|---|
accounting.accounting-projects.bulk | Perform bulk administration of accounting projects. |
accounting.accounting-projects.create | Create accounting projects. |
accounting.accounting-projects.delete | Remove accounting projects. |
accounting.accounting-projects.read | Read accounting projects. |
accounting.accounting-projects.update | Change accounting projects. |
accounting.application.access | Open the Accounting application. |
accounting.ar-aging.read | Read receivables aging. |
accounting.ar-snapshot-items.query | Query ar snapshot items. |
accounting.ar-snapshot-totals.query | Query ar snapshot totals. |
accounting.bank-accounts.bulk | Perform bulk administration of bank accounts. |
accounting.bank-accounts.create | Create bank accounts. |
accounting.bank-accounts.delete | Remove bank accounts. |
accounting.bank-accounts.read | Read bank accounts. |
accounting.bank-accounts.update | Change bank accounts. |
accounting.batch-assignment-settings.delete | Remove batch assignment settings. |
accounting.batch-assignment-settings.read | Read batch assignment settings. |
accounting.batch-assignment-settings.update | Change batch assignment settings. |
accounting.batch-postings.post | Post batch posting work. |
accounting.batch-postings.preview | Preview batch posting work. |
accounting.batch-postings.unpost | Unpost batch posting work. |
accounting.batches.create | Create batches. |
accounting.batches.delete | Remove batches. |
accounting.batches.query | Query batches. |
accounting.batches.read | Read batches. |
accounting.batches.update | Change batches. |
accounting.business-units.bulk | Perform bulk administration of business units. |
accounting.business-units.create | Create business units. |
accounting.business-units.delete | Remove business units. |
accounting.business-units.query | Query business units. |
accounting.business-units.read | Read business units. |
accounting.business-units.update | Change business units. |
accounting.credit-applications.create | Create credit applications. |
accounting.credit-applications.query | Query credit applications. |
accounting.credit-applications.read | Read credit applications. |
accounting.credit-applications.update | Change credit applications. |
accounting.credit-memos.create | Create credit memos. |
accounting.credit-memos.query | Query credit memos. |
accounting.credit-memos.read | Read credit memos. |
accounting.credit-memos.update | Change credit memos. |
accounting.credits.create | Create credits. |
accounting.credits.query | Query credits. |
accounting.credits.read | Read credits. |
accounting.credits.update | Change credits. |
accounting.customer-terms.manage | Maintain customer collection terms. |
accounting.customer-terms.read | Read customer collection terms. |
accounting.debit-memos.create | Create debit memos. |
accounting.debit-memos.query | Query debit memos. |
accounting.debit-memos.read | Read debit memos. |
accounting.debit-memos.update | Change debit memos. |
accounting.departments.bulk | Perform bulk administration of departments. |
accounting.departments.create | Create departments. |
accounting.departments.delete | Remove departments. |
accounting.departments.read | Read departments. |
accounting.departments.update | Change departments. |
accounting.disputes.create | Create disputes. |
accounting.disputes.read | Read disputes. |
accounting.disputes.update | Change disputes. |
accounting.document-templates.bulk | Perform bulk administration of document templates. |
accounting.document-templates.create | Create document templates. |
accounting.document-templates.delete | Remove document templates. |
accounting.document-templates.read | Read document templates. |
accounting.document-templates.update | Change document templates. |
accounting.exchange-rates.bulk | Perform bulk administration of exchange rates. |
accounting.exchange-rates.create | Create exchange rates. |
accounting.exchange-rates.delete | Remove exchange rates. |
accounting.exchange-rates.read | Read exchange rates. |
accounting.exchange-rates.update | Change exchange rates. |
accounting.expected-remittances.query | Query expected remittances. |
accounting.fiscal-periods.close | Close fiscal periods. |
accounting.fiscal-periods.read | Read fiscal periods. |
accounting.fiscal-periods.reopen | Reopen fiscal periods. |
accounting.fiscal-years.bulk | Perform bulk administration of fiscal years. |
accounting.fiscal-years.create | Create fiscal years. |
accounting.fiscal-years.delete | Remove fiscal years. |
accounting.fiscal-years.read | Read fiscal years. |
accounting.fiscal-years.update | Change fiscal years. |
accounting.gl-accounts.bulk | Perform bulk administration of general ledger accounts. |
accounting.gl-accounts.create | Create general ledger accounts. |
accounting.gl-accounts.delete | Remove general ledger accounts. |
accounting.gl-accounts.read | Read general ledger accounts. |
accounting.gl-accounts.update | Change general ledger accounts. |
accounting.invoices.adjust | Adjust invoices. |
accounting.invoices.create | Create invoices. |
accounting.invoices.delete | Remove invoices. |
accounting.invoices.email | Send an invoice communication to its selected recipients. |
accounting.invoices.query | Query invoices. |
accounting.invoices.read | Read invoices. |
accounting.invoices.update | Change invoices. |
accounting.invoices.void | Void invoices. |
accounting.merchant-accounts.bulk | Perform bulk administration of merchant accounts. |
accounting.merchant-accounts.create | Create merchant accounts. |
accounting.merchant-accounts.delete | Remove merchant accounts. |
accounting.merchant-accounts.read | Read merchant accounts. |
accounting.merchant-accounts.update | Change merchant accounts. |
accounting.payment-element.create | Create a processor setup intent for payment-method entry. |
accounting.payment-element.read | Read processor payment-entry information. |
accounting.payment-methods.bulk | Perform bulk administration of payment methods. |
accounting.payment-methods.create | Create payment methods. |
accounting.payment-methods.delete | Remove payment methods. |
accounting.payment-methods.read | Read payment methods. |
accounting.payment-methods.update | Change payment methods. |
accounting.payment-terms.bulk | Perform bulk administration of payment terms. |
accounting.payment-terms.create | Create payment terms. |
accounting.payment-terms.delete | Remove payment terms. |
accounting.payment-terms.read | Read payment terms. |
accounting.payment-terms.update | Change payment terms. |
accounting.payments.create | Create payments. |
accounting.payments.query | Query payments. |
accounting.payments.read | Read payments. |
accounting.payments.reverse | Reverse payments. |
accounting.payments.settle | Let Rhythm staff mark an eligible electronic-check receipt as cleared. |
accounting.payments.update | Change payments. |
accounting.payments.void | Void payments. |
accounting.payouts.create | Create payouts. |
accounting.payouts.delete | Remove payouts. |
accounting.payouts.read | Read payouts. |
accounting.payouts.update | Change payouts. |
accounting.payouts.verify | Verify payouts. |
accounting.product-accounting.delete | Remove product accounting setups. |
accounting.product-accounting.read | Read product accounting setups. |
accounting.product-accounting.update | Change product accounting setups. |
accounting.products.create | Create products. |
accounting.products.delete | Remove products. |
accounting.products.read | Read products. |
accounting.products.update | Change products. |
accounting.reconciliation-batches.create | Create reconciliation batches. |
accounting.reconciliation-batches.delete | Remove reconciliation batches. |
accounting.reconciliation-batches.finalize | Finalize reconciliation batches. |
accounting.reconciliation-batches.read | Read reconciliation batches. |
accounting.reconciliation-batches.reverse | Reverse reconciliation batches. |
accounting.reconciliation-batches.update | Change reconciliation batches. |
accounting.reconciliation-exceptions.accept | Accept reconciliation exceptions. |
accounting.reconciliation-exceptions.read | Read reconciliation exceptions. |
accounting.reconciliation-exceptions.update | Change reconciliation exceptions. |
accounting.recurring-batches.create | Create recurring batches. |
accounting.recurring-batches.delete | Remove recurring batches. |
accounting.recurring-batches.read | Read recurring batches. |
accounting.recurring-batches.update | Change recurring batches. |
accounting.recurring-billing-runs.read | Read recurring billing runs. |
accounting.refunds.approve | Approve refunds. |
accounting.refunds.create | Create refunds. |
accounting.refunds.execute | Execute refunds. |
accounting.refunds.query | Query refunds. |
accounting.refunds.read | Read refunds. |
accounting.remittances.create | Create remittances. |
accounting.remittances.read | Read remittances. |
accounting.remittances.void | Void remittances. |
accounting.revenue-schedule-entries.query | Query revenue schedule entries. |
accounting.reversals.create | Create reversals. |
accounting.reversals.preview | Preview reversals. |
accounting.reversals.read | Read reversals. |
accounting.settings.bulk | Perform bulk administration of settings. |
accounting.settings.create | Create settings. |
accounting.settings.delete | Remove settings. |
accounting.settings.read | Read settings. |
accounting.settings.update | Change settings. |
accounting.settlement-items.read | Read settlement items. |
accounting.settlement-items.resolve | Resolve settlement items. |
accounting.settlements.create | Create settlements. |
accounting.settlements.read | Read settlements. |
accounting.stripe-settings.read | Read legacy Stripe configuration. |
accounting.stripe-settings.update | Change legacy Stripe configuration. |
accounting.subledger-entries.read | Read subledger entries. |
accounting.subledger-entry-lines.query | Query subledger entry lines. |
accounting.tax-classes.bulk | Perform bulk administration of tax classes. |
accounting.tax-classes.create | Create tax classes. |
accounting.tax-classes.delete | Remove tax classes. |
accounting.tax-classes.read | Read tax classes. |
accounting.tax-classes.update | Change tax classes. |
accounting.tax-zones.bulk | Perform bulk administration of tax zones. |
accounting.tax-zones.create | Create tax zones. |
accounting.tax-zones.delete | Remove tax zones. |
accounting.tax-zones.read | Read tax zones. |
accounting.tax-zones.update | Change tax zones. |
accounting.tax.calculate | Calculate tax on priced lines. |
accounting.transactions.query | Query transactions. |
accounting.write-offs.create | Create write offs. |
accounting.write-offs.query | Query write offs. |
accounting.write-offs.read | Read write offs. |
accounting.write-offs.update | Change write offs. |
The structured catalogue also retains the service contracts’ literal combined requirements and descriptions of public, internal or machine access. Those rows are explicitly marked as operation requirements. They are not assignable permission keys and do not appear in role grants. Their constituent keys and operation references preserve the all-of, any-of and action-dependent boundaries without changing existing contracts.
Role Entitlement Matrix
The matrix shows the area’s exact permission keys granted by each policy profile. A dash means that this policy does not grant the key; it does not override another held policy. The staff-only clearing key is absent from every customer profile.
| Permission | Read Only | User | Administrator | Preparer | Approver |
|---|---|---|---|---|---|
accounting.accounting-projects.bulk | — | — | Granted | — | — |
accounting.accounting-projects.create | — | — | Granted | — | — |
accounting.accounting-projects.delete | — | — | Granted | — | — |
accounting.accounting-projects.read | Granted | Granted | Granted | — | — |
accounting.accounting-projects.update | — | — | Granted | — | — |
accounting.application.access | Granted | Granted | Granted | Granted | Granted |
accounting.ar-aging.read | Granted | Granted | Granted | — | — |
accounting.ar-snapshot-items.query | Granted | Granted | Granted | — | — |
accounting.ar-snapshot-totals.query | Granted | Granted | Granted | — | — |
accounting.bank-accounts.bulk | — | — | Granted | — | — |
accounting.bank-accounts.create | — | — | Granted | — | — |
accounting.bank-accounts.delete | — | — | Granted | — | — |
accounting.bank-accounts.read | Granted | Granted | Granted | — | — |
accounting.bank-accounts.update | — | — | Granted | — | — |
accounting.batch-assignment-settings.delete | — | — | Granted | — | — |
accounting.batch-assignment-settings.read | Granted | Granted | Granted | — | — |
accounting.batch-assignment-settings.update | — | — | Granted | — | — |
accounting.batch-postings.post | — | Granted | Granted | — | — |
accounting.batch-postings.preview | Granted | Granted | Granted | — | — |
accounting.batch-postings.unpost | — | — | Granted | — | — |
accounting.batches.create | — | Granted | Granted | — | — |
accounting.batches.delete | — | Granted | Granted | — | — |
accounting.batches.query | Granted | Granted | Granted | — | — |
accounting.batches.read | Granted | Granted | Granted | — | — |
accounting.batches.update | — | Granted | Granted | — | — |
accounting.business-units.bulk | — | — | Granted | — | — |
accounting.business-units.create | — | — | Granted | — | — |
accounting.business-units.delete | — | — | Granted | — | — |
accounting.business-units.query | Granted | Granted | Granted | — | — |
accounting.business-units.read | Granted | Granted | Granted | — | — |
accounting.business-units.update | — | — | Granted | — | — |
accounting.credit-applications.create | — | Granted | Granted | — | — |
accounting.credit-applications.query | Granted | Granted | Granted | — | — |
accounting.credit-applications.read | Granted | Granted | Granted | — | — |
accounting.credit-applications.update | — | Granted | Granted | — | — |
accounting.credit-memos.create | — | Granted | Granted | — | — |
accounting.credit-memos.query | Granted | Granted | Granted | — | — |
accounting.credit-memos.read | Granted | Granted | Granted | — | — |
accounting.credit-memos.update | — | Granted | Granted | — | — |
accounting.credits.create | — | Granted | Granted | — | — |
accounting.credits.query | Granted | Granted | Granted | — | — |
accounting.credits.read | Granted | Granted | Granted | — | — |
accounting.credits.update | — | Granted | Granted | — | — |
accounting.customer-terms.manage | — | Granted | Granted | — | — |
accounting.customer-terms.read | Granted | Granted | Granted | — | — |
accounting.debit-memos.create | — | Granted | Granted | — | — |
accounting.debit-memos.query | Granted | Granted | Granted | — | — |
accounting.debit-memos.read | Granted | Granted | Granted | — | — |
accounting.debit-memos.update | — | Granted | Granted | — | — |
accounting.departments.bulk | — | — | Granted | — | — |
accounting.departments.create | — | — | Granted | — | — |
accounting.departments.delete | — | — | Granted | — | — |
accounting.departments.read | Granted | Granted | Granted | — | — |
accounting.departments.update | — | — | Granted | — | — |
accounting.disputes.create | — | Granted | Granted | — | — |
accounting.disputes.read | Granted | Granted | Granted | — | — |
accounting.disputes.update | — | Granted | Granted | — | — |
accounting.document-templates.bulk | — | — | Granted | — | — |
accounting.document-templates.create | — | — | Granted | — | — |
accounting.document-templates.delete | — | — | Granted | — | — |
accounting.document-templates.read | Granted | Granted | Granted | — | — |
accounting.document-templates.update | — | — | Granted | — | — |
accounting.exchange-rates.bulk | — | — | Granted | — | — |
accounting.exchange-rates.create | — | — | Granted | — | — |
accounting.exchange-rates.delete | — | — | Granted | — | — |
accounting.exchange-rates.read | Granted | Granted | Granted | — | — |
accounting.exchange-rates.update | — | — | Granted | — | — |
accounting.expected-remittances.query | Granted | Granted | Granted | — | — |
accounting.fiscal-periods.close | — | — | Granted | — | — |
accounting.fiscal-periods.read | Granted | Granted | Granted | — | — |
accounting.fiscal-periods.reopen | — | — | Granted | — | — |
accounting.fiscal-years.bulk | — | — | Granted | — | — |
accounting.fiscal-years.create | — | — | Granted | — | — |
accounting.fiscal-years.delete | — | — | Granted | — | — |
accounting.fiscal-years.read | Granted | Granted | Granted | — | — |
accounting.fiscal-years.update | — | — | Granted | — | — |
accounting.gl-accounts.bulk | — | — | Granted | — | — |
accounting.gl-accounts.create | — | — | Granted | — | — |
accounting.gl-accounts.delete | — | — | Granted | — | — |
accounting.gl-accounts.read | Granted | Granted | Granted | — | — |
accounting.gl-accounts.update | — | — | Granted | — | — |
accounting.invoices.adjust | — | Granted | Granted | — | — |
accounting.invoices.create | — | Granted | Granted | — | — |
accounting.invoices.delete | — | Granted | Granted | — | — |
accounting.invoices.email | — | Granted | Granted | — | — |
accounting.invoices.query | Granted | Granted | Granted | — | — |
accounting.invoices.read | Granted | Granted | Granted | — | — |
accounting.invoices.update | — | Granted | Granted | — | — |
accounting.invoices.void | — | Granted | Granted | — | — |
accounting.merchant-accounts.bulk | — | — | Granted | — | — |
accounting.merchant-accounts.create | — | — | Granted | — | — |
accounting.merchant-accounts.delete | — | — | Granted | — | — |
accounting.merchant-accounts.read | Granted | Granted | Granted | — | — |
accounting.merchant-accounts.update | — | — | Granted | — | — |
accounting.payment-element.create | — | Granted | Granted | — | — |
accounting.payment-element.read | Granted | Granted | Granted | — | — |
accounting.payment-methods.bulk | — | — | Granted | — | — |
accounting.payment-methods.create | — | — | Granted | — | — |
accounting.payment-methods.delete | — | — | Granted | — | — |
accounting.payment-methods.read | Granted | Granted | Granted | — | — |
accounting.payment-methods.update | — | — | Granted | — | — |
accounting.payment-terms.bulk | — | — | Granted | — | — |
accounting.payment-terms.create | — | — | Granted | — | — |
accounting.payment-terms.delete | — | — | Granted | — | — |
accounting.payment-terms.read | Granted | Granted | Granted | — | — |
accounting.payment-terms.update | — | — | Granted | — | — |
accounting.payments.create | — | Granted | Granted | — | — |
accounting.payments.query | Granted | Granted | Granted | — | — |
accounting.payments.read | Granted | Granted | Granted | — | — |
accounting.payments.reverse | — | Granted | Granted | — | — |
accounting.payments.settle | — | — | — | — | — |
accounting.payments.update | — | Granted | Granted | — | — |
accounting.payments.void | — | Granted | Granted | — | — |
accounting.payouts.create | — | Granted | Granted | Granted | Granted |
accounting.payouts.delete | — | Granted | Granted | Granted | Granted |
accounting.payouts.read | Granted | Granted | Granted | Granted | Granted |
accounting.payouts.update | — | Granted | Granted | Granted | Granted |
accounting.payouts.verify | — | Granted | Granted | Granted | Granted |
accounting.product-accounting.delete | — | — | Granted | — | — |
accounting.product-accounting.read | Granted | Granted | Granted | — | — |
accounting.product-accounting.update | — | — | Granted | — | — |
accounting.products.create | — | — | Granted | — | — |
accounting.products.delete | — | — | Granted | — | — |
accounting.products.read | Granted | Granted | Granted | — | — |
accounting.products.update | — | — | Granted | — | — |
accounting.reconciliation-batches.create | — | Granted | Granted | Granted | Granted |
accounting.reconciliation-batches.delete | — | Granted | Granted | Granted | Granted |
accounting.reconciliation-batches.finalize | — | — | Granted | — | Granted |
accounting.reconciliation-batches.read | Granted | Granted | Granted | Granted | Granted |
accounting.reconciliation-batches.reverse | — | — | Granted | — | Granted |
accounting.reconciliation-batches.update | — | Granted | Granted | Granted | Granted |
accounting.reconciliation-exceptions.accept | — | — | Granted | — | Granted |
accounting.reconciliation-exceptions.read | Granted | Granted | Granted | Granted | Granted |
accounting.reconciliation-exceptions.update | — | Granted | Granted | Granted | Granted |
accounting.recurring-batches.create | — | — | Granted | — | — |
accounting.recurring-batches.delete | — | — | Granted | — | — |
accounting.recurring-batches.read | Granted | Granted | Granted | — | — |
accounting.recurring-batches.update | — | — | Granted | — | — |
accounting.recurring-billing-runs.read | Granted | Granted | Granted | — | — |
accounting.refunds.approve | — | Granted | Granted | — | — |
accounting.refunds.create | — | Granted | Granted | — | — |
accounting.refunds.execute | — | Granted | Granted | — | — |
accounting.refunds.query | Granted | Granted | Granted | — | — |
accounting.refunds.read | Granted | Granted | Granted | — | — |
accounting.remittances.create | — | Granted | Granted | — | — |
accounting.remittances.read | Granted | Granted | Granted | — | — |
accounting.remittances.void | — | Granted | Granted | — | — |
accounting.revenue-schedule-entries.query | Granted | Granted | Granted | — | — |
accounting.reversals.create | — | Granted | Granted | — | — |
accounting.reversals.preview | Granted | Granted | Granted | — | — |
accounting.reversals.read | Granted | Granted | Granted | — | — |
accounting.settings.bulk | — | — | Granted | — | — |
accounting.settings.create | — | — | Granted | — | — |
accounting.settings.delete | — | — | Granted | — | — |
accounting.settings.read | Granted | Granted | Granted | — | — |
accounting.settings.update | — | — | Granted | — | — |
accounting.settlement-items.read | Granted | Granted | Granted | Granted | Granted |
accounting.settlement-items.resolve | — | — | Granted | — | Granted |
accounting.settlements.create | — | Granted | Granted | — | — |
accounting.settlements.read | Granted | Granted | Granted | — | — |
accounting.stripe-settings.read | Granted | Granted | Granted | — | — |
accounting.stripe-settings.update | — | — | Granted | — | — |
accounting.subledger-entries.read | Granted | Granted | Granted | — | — |
accounting.subledger-entry-lines.query | Granted | Granted | Granted | — | — |
accounting.tax-classes.bulk | — | — | Granted | — | — |
accounting.tax-classes.create | — | — | Granted | — | — |
accounting.tax-classes.delete | — | — | Granted | — | — |
accounting.tax-classes.read | Granted | Granted | Granted | — | — |
accounting.tax-classes.update | — | — | Granted | — | — |
accounting.tax-zones.bulk | — | — | Granted | — | — |
accounting.tax-zones.create | — | — | Granted | — | — |
accounting.tax-zones.delete | — | — | Granted | — | — |
accounting.tax-zones.read | Granted | Granted | Granted | — | — |
accounting.tax-zones.update | — | — | Granted | — | — |
accounting.tax.calculate | Granted | Granted | Granted | — | — |
accounting.transactions.query | Granted | Granted | Granted | — | — |
accounting.write-offs.create | — | Granted | Granted | — | — |
accounting.write-offs.query | Granted | Granted | Granted | — | — |
accounting.write-offs.read | Granted | Granted | Granted | — | — |
accounting.write-offs.update | — | Granted | Granted | — | — |
Protected Actions
The catalogue’s rule references retain record and financial guards in their capability homes. Reconciliation finalization and exception acceptance include independent-person conditions. Refund approval also checks the requester when approval is enabled. Close and reopen have separate administrator-tier permissions and retain period eligibility checks. An administrator grant does not bypass these conditions.
Settlement creation requires settlement, payment and credit-application creation permissions together. Settlement reading requires its own read permission and either payment or credit-application read permission. Remittance commands require the matching payment permissions, while expected-remittance lookup additionally needs invoice read. Schedule-history reading first needs application access and then the permission for the schedule’s owning record. Action-dispatch routes evaluate the selected action beyond the read permission used to enter the handler.
Staff electronic-check clearing is a separate system boundary. Ordinary customer administration supplies neither staff identity nor its staff-only key. Platform governs staff entry into customer workspaces through recorded grants, standing access and emergency entry; HQ authority remains distinct from authority to perform customer financial work.
Guards Distinguished From Permissions
A permission answers whether the caller may attempt a class of action. A guard answers whether the selected record and circumstances permit it now. Workspace ownership, matching financial references, record versions, locks, available money, period standing and independent-person requirements remain guards. Business-unit selection is accounting context rather than an implicit access grant.
Platform’s planning and design describe a sixty-second gateway decision cache and thirty further seconds of signed-context validity. Changed assignments therefore do not promise immediate cutoff for previously issued authority. Accounting does not introduce a separate role cache or claim a stronger revocation bound. A durable close job acts with system authority after checked submission; whether withdrawing the requester’s grant should stop that accepted job remains an open Close decision.
What People See When Refused
A signed-in person without required screen access receives an access refusal rather than an empty financial list. Available actions depend on authority and financial eligibility: some screens omit unauthorized actions, while others disable them with an explanation. A visible or reachable form does not establish permission to save; the service still checks the command.
Record ownership prevents a caller from using another workspace’s identifier as access, and foreign records read as absent where the capability specifies that boundary. Command refusals give a reason and, for the financial interfaces that define one, a stable refusal code. Version conflicts ask the person to reconcile newer work. Processor uncertainty remains an unresolved financial outcome that must be followed through recovery rather than treated as a permission failure.