Financial App Boundaries
How to separate financial apps from shared payment infrastructure
Core decision
Financial apps can share the same payment infrastructure without sharing the same app boundary.
Payment execution is shared infrastructure. Business workflow is the app boundary.
Shared payment infrastructure
These belong to shared platform services:
- checkout session creation
- payment records
- provider adapters
- refunds
- saved methods
- webhook processing
- payout/provider abstractions
- tenant billing and commission logic
These should not become top-level business apps.
Financial app examples
Shop
shop is a commerce app.
It owns:
- sales workflow
- product and order lifecycle
- fulfillment workflow
- commerce reporting
It uses shared payments, but it is not the payment app.
Giving
giving is a separate top-level app.
It owns:
- donor-facing intents
- campaigns, funds, or causes
- giving messages and donation context
- donor-specific reporting and recurring giving journeys
It also uses shared payments, but it should not be collapsed into shop or into a generic payment app.
Subscriptions
Subscriptions must be split by meaning.
- tenant SaaS subscription billing belongs to the platform
- recurring commerce belongs under
shop - memberships or access subscriptions can justify a separate app if they become a broader business workflow
A future subscriptions app is acceptable if it becomes a workspace-facing management surface that aggregates recurring agreements from multiple sources.
That app should be a read and operator surface, not the owner of every recurring rule in the system.
Service billing / accounts receivable
A WHMCS-style recurring service billing surface can justify its own app if it owns:
- service invoices
- quotes
- contract billing
- receivables workflow
- service renewals
It still uses the same shared payment infrastructure.
Wallet / credits
Wallet or stored-value functionality only becomes a separate app if customer balances, credit usage, and ledger workflow become a primary product surface.
Otherwise it should stay a shared service or extension.
Outcome
Use this rule consistently:
- payment infrastructure is shared
- financial workflow defines app boundary
- plans entitle apps, not raw payment components