Frequently asked questions
Can a savings account with Dreams be managed by more than one person?
Our set-up is based on a single account holder. Our sharing feature ‘Group Dreams’, enables social saving, where users can share Dreams with each other. This happens without any shared accounts, or transactions between the group dream members.
What about proxies that parents have on children's accounts? Can parents access dreams?
We are currently working on the power of attorney (POA) type of workflow. It's not yet implemented but once it's done we will update this answer.
Should there be a current account 'automatically' linked to the Dreams savings account to deposit back / for withdrawals?
Yes. We recommend a predefined account for deposits and withdrawals connected to Dreams. This could be a current account, or some other account of your choice.
What happens with the Dreams account when a user completes a Dream?
Upon completing a dream, the user can choose to withdraw the money to the current account, or transfer it to another Dream. The user can still keep the Dreams-dedicated savings account, even if there is no currently active Dream connected to it.
What happens when the user wants to offboard / close the savings account? How is residual interest handled?
In relation to offboarding, we would expect you to do the necessary interest calculation procedure.
How many dreams can a customer have, connected to the underlying savings account?
There is no limit to the number of Dreams the customer can have.
How does interest work when saving with Dreams?
We rely on the Bank to send us information about all outstanding transactions, interests included, that have happened on the savings account connected to a Dream. It follows the similar flow to the account reconciliation process.
In case of a transaction, how is it signed? Is there enough security in dreams, tracking agreements etc?
We support your collection of consent when an End User activates a savehack and withdraws money - if you require that. We are agnostic to your method of consent collection (PIN code, face ID, etc.). For both activated one-time and recurring Savehacks, the collected consent reference is then forwarded to you in all resulting transactions. Note that the consent must support recurring payments with variable amounts.
What's the estimated network traffic volume on specific interfaces?
Note that the below estimates are based on averages from current deployments, and will not scale linearly or perfectly predict the Bank's workload.
- Dynamic content (served from web process): 3 MB / (month x Active End User)
- Static content (reasonably served through CDN): 7 MB / (month x Active End User)
Webhook traffic:
- Transactions: 17 requests / (month x Active End Users)
- Messages: Depends on which messages Bank chooses to enable. A rough estimate for a standard setup: 1 request / (month x (new + Active End Users))
- Events: 70 requests / (month x Active End Users)
Active End Users are users with at least one transaction on the Platform in a given month.
How will you organize the delivery of a new software version to us? Do you share it in the form of JARs or container images?
We deliver new software versions in the form of versioned/tagged Docker images that will be available in a container registry. Currently we use quay.io as our container registry.
How do you support HA and disaster recovery in a self-hosted environment?
Please contact us to discuss the above. We have some examples how our deployed services can fit into a HA scenario but remember that ultimately it's the Bank's responsibility to implement those.
Logging, performance metrics in a self-hosted solution
- Logging: The image processes log to stdout, which is the de facto containerization standard allowing for easy integration with tools like Grafana & ELK
- Events: An event stream can be read from our backend API, to track various data points of interest for your product analytics.
Do you handle multiple language content?
Yes, Dreams supports multiple languages. It is possible to pass the information about the current language settings for a certain End User to us, so that we expose the same language in the Dreams web experience to the End User in question. You would pass the information to us via the SDKs. Translation is handled via Dreams Enterprise Portal (DEPo).
What’s the correlation of the user's real account balance, with the amount (sum) of created “dreams”?
The real account balance of the End User, should equal the sum of savings allocated to different Dreams. To avoid a mismatch between these, we strongly recommend a dedicated savings account, that is hidden and read-only from other parts than inside the Dreams experience. Depending on your set-up and needs, we can explore the need for reconciliation, as well as actions to take in the (unlikely) event of balances not adding up.
Does Dreams on-premise solution require connecting to any external services?
Core functionalities don't require connecting to any external services. Please mind that in this case we won't be able to offer some of the savehacks (e.g. SaveLeague Savehack).
What kind of APIs or integration points does the Bank need to expose to Dreams?
The only requests made from Dreams to the Bank API are through optional webhooks. These webhooks can be used to avoid polling the Dreams API for new Transactions, Messages (optional) and Events (optional).
How are the transactions resulting from Savehacks triggered ?
Transactions to-be handled by the Bank can be read from the GET /transactions?state=requested
endpoint. You can poll this endpoint at a time-interval that suits you.
Optionally: you can also register a webhook endpoint. Dreams will then call this endpoint any time there are new transactions to process.
Is the user’s name required?
User name is only required to improve the “group dream” user experience. If this functionality is disabled, you can leave out the user name.
Why is the account definition required?
The API is designed to support various account structures for our full product offering of both savings and investment dreams. For the setup we are discussing here with a single dedicated savings account for all dreams per user, the Account resource is less used, but still needed to fulfill two purposes:
Notifying Dreams when the account exists (has been provisioned), and is ready to accept transactions. This is done through the POST /accounts
call. Note that the externalId field is optional, and you can leave it empty to minimize data exposure.
If it is not possible to shield the account completely from transactions outside of Dreams, it is also possible to notify Dreams about the true balance on the account via the PATCH /accounts/:id
call.
In this setup, all references to accountId in other resources can be ignored. For example:
When transactions are created in Dreams, the API will refer to the savings account in the toAccount (for deposits) and fromAccount (for withdrawals) fields. However, since there is only one possible account per user, your backend can ignore this and just look at the user
and type
of the Transaction to determine source and destination accounts for the transaction.
What events can we collect from Dreams API?
Take a look at Events API
Is deeplinking from the Bank App to Dreams Experience possible?
Deep linking is possible. Check the sdk github repo.
Basically you either start the sdk with a location or use the .navigateTo
on already existing instance of the sdk to send a message to our iFrame so that it shows the user desired page.
PostgreSQL version
Currently DES SaaS is using v15. While v15 is recommended for new on-premise deployments, the minimum required version is v12.
PostgreSQL extensions used
We use plpgsql and pgcrypto.
In self-hosted scenario what accounts with what priveledges are needed to operate the service?
An account able to create and manage containers is needed. Furthermore an account that has permissions, on the schema, to CRUD tables and CRUD table records.
What images can the user choose from in the dream creation process?
The Platform comes with an image bank of unlicensed stock photos. The bank can choose to plug in their own image bank as an alternative. There’s currently 25797 search tags translated for en, sv, ru, uk. (August 2023)
What will happen when User modifies the day of collection of funds, for example, from Monday to Tuesday, will the hour of execution of the savehack be overwritten or will it remain the same (when savehack was activated) ?
If the user updates a savehack then the timestamp of the change will overwrite the previous timestamp. So all future savehack executions will run based on the timestamp of the updated savehack, not the originally created savehack.
Is it possible to display the date and time of the savehack creation for the User?
In principle the timestamp of the savehack launch could be shown in the user interface. However, the Dreams backend does not know the user's timezone so it'll be a timestamp in UTC which is not so user friendly. If the user's timezone could be passed to Dreams via the SDK then potentially this might work.
What cookies and session does Dreams save and for what purpose?
In Cookies, Dreams save:
_dd_s
to log what's happening in the app to be able to fix bugs. Max-Age of this cookie is 10 days from its creation.
While in session:
_dreams_enterprise_session
contains user session data.animation_pending
to decide whether to animate dream progress or not.dream_index_prerender_first_time
is used to store information about dream progress bar when dream list page is rendered for the first time.savehack_launch_params
to temporarily store savehack_launch data when user tries to create a launch before creating a dream. This helps in prepopulating savehack for newly created dream.token_expires_at
provides detail about life span of current user's token.send_page_ready_event
is set when token is verified and is used to send this event to frontend.locale
is set to store locales for current user.