Architecture Overview
The platform operates on a Principal-Agent model:- Principal (Tenant): The top-level entity (e.g., a Money Transfer Operator or Bank) that owns the platform instance. The Principal configures global settings, compliance rules, and liquidity providers.
- Agent: A business entity operating under the Principal. Agents can have their own customers, branding, and specific configurations, but they operate within the limits set by the Principal.
- Sub-Agent: A further subdivision under an Agent, often used for retail locations or specific branches.
Data Isolation
Data security and privacy are paramount in a multi-tenant environment.- Logical Isolation: All data (customers, transactions, beneficiaries) is logically isolated by a unique
tenantId(often referred to asagentsorplatformcontext in APIs). - Access Control: Users are assigned roles within a specific tenant context. An admin for “Agent A” cannot access data belonging to “Agent B”.
- Request Context: Every API request requires context in the request url (like
https://${domain}.fincode.software) to ensure the operation is performed against the correct tenant partition.
Configuration Inheritance
To simplify management, the platform uses a hierarchical configuration system.Inheritance Rules
- Global Defaults: The Principal sets global defaults for fees, exchange rate margins, and transaction limits.
- Agent Overrides: Agents can be configured to inherit these defaults or have specific overrides applied to them.
- Specific Rules: If an Agent has a specific rule (e.g., a lower fee for a marketing campaign), it takes precedence over the global default.
White-Labeling
The platform supports extensive white-labeling to ensure a consistent brand experience for each tenant.- Branding: Logos, color schemes, and fonts can be customized per Agent.
- Communication: Email templates and SMS notifications can be branded to appear as if they are coming directly from the Agent.
- URLs: Agents can operate on their own subdomains (e.g.,
agent-a.remitjunction.com).
