sdk.getHttpClient(), and the backend normalises requests and responses across seven supported banking cores so the widget always works with the same generalised schema, regardless of which core is running behind the FI.
Supported cores: Finxact, FIS IBS, Corelation, Fiserv Advantage, Symitar, OSI.
Widget Entry Points
The widget is a single Module Federation remote. Internal navigation between flows is managed by React state andreact-router-dom — there are no separate URLs. The FI registers one widget remote URL in Candescent admin, and the widget exposes the following named entry points via its component props.
| Flow | How to Trigger |
|---|---|
| CD management (default) | Widget mounts and useUserContext() resolves — shows existing CDs |
| Open a new CD | Member selects “Open New CD” within the widget |
| Renewal | Member selects a CD eligible for renewal from the CD list |
| Close & Transfer | Member selects a mature CD and chooses close option |
Route Map
Common Routes
| Route Name | Description |
|---|---|
get_self_service_options | Loads the initial options page |
get_self_service_features | Reads the FI app configuration settings for this institution |
get_user_deposit_account_list | Retrieves the member’s funding accounts list |
get_current_date | Gets the current login date from the core |
Manage CDs Routes
| Route Name | Type | Description |
|---|---|---|
fetch_user_available_cds | GET | Initial CD flow — retrieves all CDs for the logged-in member |
get_cd_rates | GET | Retrieves available CD rates for renewal or new opening |
account_renewal | POST | Renews a CD with a (potentially different) term |
get_understand_balance | GET | Retrieves balance breakdown for close-and-transfer confirmation modal |
close_and_transfer | POST | Closes a CD and transfers the balance to a target account |
Open Account Routes
| Route Name | Type | Description |
|---|---|---|
account_opening_tile_information | GET | Returns available account types (checking, savings, CD, …) — driven by FI configuration |
get_account_type_list | GET | Returns rates for a selected account type |
create_account | POST | Opens a new account and initiates the fund transfer |
fetch_user_available_cds — Get All CDs
Returns all CD accounts available to the logged-in member.
Frontend sends:
| Field | Type | Description |
|---|---|---|
account_number | string | Internal account identifier |
user_account_number | string | Display account number shown to member |
description | string | Account product description |
nick_name | string? | Member-defined account nickname |
account_type | string | Account type code (e.g., CDA) |
sub_account_type | string | Sub-type / product code |
share_id | string | Share/position ID used in core calls |
interest_rate | number | Annual interest rate |
apy | number | Annual Percentage Yield |
maturity_date | string | Maturity date (ISO 8601) |
formatted_maturity_date | string | Maturity date formatted for display |
next_maturity_date | string | Calculated next maturity date |
balance | number | Available balance |
current_balance | number | Current ledger balance |
closing_balance | number | Balance used for close-and-transfer |
accrued_interest | number? | Interest accrued to date |
is_account_active | boolean | Whether the account is open and active |
is_cd_in_grace_period | boolean? | Whether the CD is in its post-maturity grace window |
is_eligible_for_renewal | boolean | Whether the member can renew this CD |
is_eligible_for_close | boolean | Whether the member can close this CD |
is_eligible_for_open | boolean | Whether additional opening is permitted |
host_acct_id | number | Host system account ID (used in POST operations) |
position_td_id | string | TD position ID (used for renew with different terms) |
roll_prod | string | Configured rollover product code |
routing_number | string | Routing number for external transfers |
Core Mappings — fetch_user_available_cds
Finxact — two calls: get all accounts by customer_id, then get account details by account_number. Key response fields: acct_bk.acctNbr, posn_dep._Id, posn_depTd.maturityDtm, posn_depTd.nextMaturityDtm.
FIS IBS — two calls: get all accounts by tax_id, then get CD detail by account_number. Response fields use dpAcctNbr, dptdCurBal, dptdNxtMat, dptdCurIntRte.
Corelation — takes member_numbers + account_numbers. Response maps serial → account_number, maturityDate, balance, closeDate (null = active account), maturityPeriod → term.
Fiserv Advantage — takes account_numbers + institution_number. Response maps AcctKeys.AcctId, DepositAcctInfo.MaturityDt, DepositAcctInfo.AcctDtlStatus.
get_user_deposit_account_list — Funding Accounts
Returns all eligible source accounts a member can use to fund a CD. No core call is made — account data is fetched directly from Account Management using the Q2 account list already loaded at session start.
Generalized response (per funding account):
| Field | Type | Description |
|---|---|---|
account_number | string | Masked account number |
unmasked_account_number | string | Full account number (server-side only) |
account_desc | string | Display description / nickname |
account_balance | number | Available balance |
is_external_account | boolean | true for ACH / external accounts |
routing_number | string? | ABA routing number (external accounts) |
host_acct_id | number | Host system account ID |
type_of_account | string | Product code (hydra_product_code) |
acct_type | string | Normalized type (checking, savings, etc.) |
user_account_number | string | User-facing account number |
member_number | string | Member number |
get_cd_rates — Available CD Rates
Returns available terms and rates for CD renewal or new CD opening.
Backend sends to core: account_type
Generalized response (per rate option):
| Field | Type | Description |
|---|---|---|
description | string | Product name / description |
account_type | string | Account type code |
sub_account_type | string | Sub-type / product code used in renewal/opening POST |
interest_rate | string | Rate as formatted decimal string |
annual_yield | number | APY |
term | string | Human-readable term (e.g., "12 M", "18 M") |
minimum_balance | number | Minimum opening balance |
prod_group | string? | Product group (Finxact) |
Core Mappings — get_cd_rates
Finxact — input: account type (ifxAcctType) + product name. Rate look-up key: Deposit+{term}.
FIS IBS — input: product_id. Returns plan Nbr, MatTerm, MatTermID, interest_rate, annual_yield.
Corelation — three chained calls: get_sub_share_serial_list(account_type) → get_sub_share_type_list(serials) → get_min_balance(serials). Returns share_id, sub_share_type, filtered_term.
Fiserv Advantage — input: institution_number + sub_account_type. Returns APY1, Rate1, ProductNumber, term details, deposit_rate_index.
Symitar — returns ranged terms (e.g., "12 - 17 Months") with a term_list array of individual month values.
account_renewal — Renew a CD (POST)
Renews a CD at a new term and rate.
Frontend → Backend fixed payload:
| Field | Format | Description |
|---|---|---|
account_number | string | Renewed account number |
effective_date | MM/DD/YYYY | Renewal effective date |
interest_rate | number | New interest rate |
apy | number | New APY |
description | string? | Renewal term description |
Core Mappings — account_renewal
Finxact — extra inputs: renew_sub_account_type, td_vn_value. Returns renewed_sub_account_type.
FIS IBS — inputs: account_number, term, old_maturity_date, share_id. Returns new account_number, share_id, renew_term, renew_term_frequency, new_maturity_date, interest_rate.
Fiserv Advantage — inputs: institution_number, account_number, account_type, product_number, Maturity_date, classcode, term, term_code, Ratechangedt, Depositrateindex, Schedulerate.
close_and_transfer — Close CD & Transfer (POST)
Closes a mature CD and transfers the balance to a designated internal or external account.
Frontend → Backend fixed payload:
| Field | Format | Description |
|---|---|---|
effective_date | MM/DD/YYYY | Transfer effective date |
to_account_number | string | Destination account number |
from_account_number | string | Source (closed) CD number |
transferred_amount | number | Total amount transferred |
Core Mappings — close_and_transfer
Finxact — three calls: Get or set interest position → Fund transfer → Close reason. Inputs include td_id, round_opt, from/to account details, customer_id, fund_amount, routing_number, bank_name.
FIS IBS — one call: Fund transfer. Inputs: from_account_number, from_account_share_id, to_account_number, fund_amount. Returns fmTrsfrFromAcct, fmTrsfrToAcct, fmTrsfrAmt.
Fiserv Advantage — inputs: from_account, from_account_type, to_account, to_account_type, fund_amount, cda_transaction_code, transaction_code, description.
create_account — Open a New Account (POST)
Opens a new checking, savings, or CD account and initiates the initial fund transfer.
Frontend → Backend fixed payload:
| Field | Format | Description |
|---|---|---|
account_number | string | Newly created account number |
from_account_number | string | Funding source account number |
fund_amount | number | Amount transferred in |
maturity_date | string | CD maturity date (if applicable) |
Core Mappings — create_account
Finxact — fund transfer call. Same inputs as close_and_transfer: td_id, from/to account details, customer_id, fund_amount, routing_number.
FIS IBS — one call: Fund transfer with from_account_number, from_account_share_id, to_account_number, fund_amount.
Corelation — inputs: member_number, share_id, opening_balance, auto_renewal, is_dividend_to_same_account, dividend_transfer_to_share_serial, from_share_serial, fund_amount. Returns new account_number formatted as {member_number}-{share_id}, fund_amount, from_account_number, maturity_date.
get_understand_balance — Balance Breakdown
Returns the detailed balance breakdown shown in the “Understand Your Balance” modal before a member confirms a close-and-transfer. This helps the member understand the exact amount that will be disbursed including accrued interest.
The modal displays principal, accrued interest, early withdrawal penalty (if any), and the final disbursement total.
FI App Configuration
Each institution that deploys the Self-Service CD app requires a per-FI JSON configuration object. This configuration controls which features are enabled, what labels and copy are displayed, how extra parameters flow between the front end and the banking core, and UI theme tokens. It is provided during onboarding and stored server-side — it is never exposed to the member’s browser. Key configuration sections:| Section | Purpose |
|---|---|
SELF_SERVICE_FEATURES | Top-level feature flags and display settings |
MANAGE_CERTIFICATES | Controls for the CD management flow (renewal, close) |
OPEN_ACCOUNT_FEATURES | Controls for the account opening flow |
EXTRA_ROUTE_BODY | Extra fields sent from the front end to the back end in POST requests |
BE_EXTRA_PARAMS | Maps additional back-end-to-core fields, with static defaults or dynamic field mapping |
FINAL_MODAL_PROPS | Fields displayed in the post-transaction success modal |
THEME_COLORS | Primary, secondary, and tertiary color tokens |
"field". If it is a static value applied to all transactions for this institution, use "default".
Source key prefixes used in EXTRA_ROUTE_BODY / BE_EXTRA_PARAMS:
| Prefix | Source Route |
|---|---|
selectedCDDetails- | Data from fetch_user_available_cds |
selectedAccount- | Data from get_user_deposit_account_list |
selectedCurrentRate- | Data from get_cd_rates |
choosenAccountDetails- | Selected account type from get_account_type_list |
payload- | Value from the POST response payload |
