# Get journey

Returns the current state, configuration, and outcome of a web journey identified by journeyId under clientId (e.g., createAccount). Includes journey URL, expiry, callback/redirect URLs, context/scope, and any produced results (such as created account, bank account, transfer instructions, allocation plan). Use it to monitor progress and fetch results after end-customer completion.

Endpoint: GET /v2/partner/client/{clientId}/journey/{journeyId}
Version: 2.0.0
Security: oAuth

## Security:

  - `oAuth` (unknown)
    oauth2

## Path parameters:

  - `clientId` (any, required)
    The ID of requested client.

  - `journeyId` (any, required)
    The ID of requested journey.

## Response 200:

  - `200` (unknown)
    journey

## Response 200 fields (application/json):

  - `type` (string)
    Type of journey.
Mirrors the journey.journeyType

  - `status` (any)
    - `new` — Journey created but not yet opened by the end customer
- `pending` — End customer has opened the journey and is in progress
- `canceled` — End customer aborted the journey
- `error` — An error occurred during the journey
- `complete` — Journey completed successfully
- `expired` — Journey URL expired before completion

  - `id` (string)
    The ID of web journey.
    Example: 49ad7378-121c-4a53-9894-dfd14a7b4877

  - `clientId` (string)
    The ID of requested client.
    Example: 49ad7378-121c-4a53-9894-dfd14a7b4877

  - `url` (string)
    journey url
    Example: https://webbo.fondo.se/dT7KlfoMrjOspMBvyAq2bvD8cSSAVZg50bAh8G8U6z4nNPRHAy

  - `expiryDate` (string)
    Date when journey token is considered stale
    Example: 2018-12-13T23:59:00.001Z

  - `journey` (object, required)

  - `journey.journeyType` (string)
    Enum: "signWithdrawal"

  - `journey.accountOptions` (object, required)
    Application payload data for legal entity accounts

  - `journey.accountOptions.serviceTypes` (array, required)

  - `journey.accountOptions.accountTypes` (array, required)
    insurance - Endowment Insurance
depot - Depot

  - `journey.accountOptions.accountCategories` (array, required)
    MiFID II investor classification.
- `pro` — Professional investor (MiFID II)
- `retail` — Retail investor, protected by consumer protection regulations (MiFID II)

  - `journey.accountOptions.ownerType` (string, required)
    Enum: "legal_entity"

  - `journey.submission` (string, required)
    Fondo application. E.g. a legal-entity signing a new account
    Example: 49ad7378-121c-4a53-9894-dfd14a7b4877

  - `journey.ssn` (string, required)
    Social security number of signer
    Example: 197001010003

  - `journey.account` (string, required)
    Fondo account
    Example: 49ad7378-121c-4a53-9894-dfd14a7b4877

  - `journey.autogiro` (object)

  - `journey.autogiro.enforce` (any, required)
    Autogiro mandate signing requirement:
- `required` — End customer must sign an autogiro mandate
- `optional` — End customer may choose to sign an autogiro mandate
- `none` — No autogiro mandate option is presented

  - `journey.autogiro.forceNewBankAccount` (boolean)
    Defaults to false.
If *set to false* and autogiro enforce is set to required or optional,
the end-user may select an existing account to connect to autogiro
instead of connecting a new account.
If *set to true* and autogiro enforce is set to required or
optional, force the end-user to connect a new bankAccount
irrespective of if old accounts exists.

  - `journey.instruments` (array)
    Funds the owner wants to buy on the account
    Example: [{"instrument":"SE0000810798SEK"}]

  - `journey.instruments.instrument` (string, required)
    Instrument ID

  - `journey.paymentAccount` (object)
    The details of the bank account to charge from (autogiro)

  - `journey.paymentAccount.iban` (string, required)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `journey.allocationPlan` (object)
    The new allocation plan. If provided, replaces the existing instruments and allocations.

  - `journey.allocationPlan.instruments` (array, required)
    Instrument allocations. The sum of all allocations must be exactly 100.
    Example: [{"instrument":"SE0000810798SEK","allocation":100}]

  - `journey.allocationPlan.instruments.instrument` (string, required)
    Instrument ID
    Example: SE0000810798SEK

  - `journey.allocationPlan.instruments.allocation` (number, required)
    Allocation in percent for this instrument
    Example: 100

  - `journey.instruments` (array)
    Instruments available for the savings plan.
If omitted, the end user may choose from all instruments in the client universe.

  - `journey.welcomeScreen` (string)
    Optional custom welcome screen.
Currently only available when transfer is set.
- `transfer` — only allowed in combination with populated transfer field
    Enum: "transfer"

  - `journey.email` (string | null)
    end user email address
    Example: enduser@endUserDomain.com

  - `journey.accountName` (string)
    If not provided, the end-user will be asked to select accountName. If provided, the accountName will not be visible to the customer in this journey.

  - `journey.accountTypes` (array, required)
    Allowed account types

  - `journey.accountServiceType` (string, required)
    Account service type
    Enum: "portfolioManagement", "investmentAdvise", "executionOnly"

  - `journey.accountCategories` (array)
    MiFID II investor classification. If the client permissions allows both pro and retail customers, this must be set.
It must never exceed the permissions on the client.
- `pro` — Professional investor (MiFID II)
- `retail` — Retail investor, protected by consumer protection regulations (MiFID II)

  - `journey.allocationPlan` (object | null)
    Setup an allocation plan for the account. Deposits will allocate based on this plan.
If `null` the view will not be shown

  - `journey.allocationPlan.depositType` (any)
    How to deposit cash to account

  - `journey.allocationPlan.periodicity` (any)
    When to allocate

  - `journey.allocationPlan.paymentAccount` (object)
    The details of the bank account to charge from (autogiro)

  - `journey.allocationPlan.paymentAccount.iban` (string)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `journey.savingsPlan` (object | null)
    Enable savings plan setup during account creation.
User will configure instruments and amounts in the UI.
If `null` the view will not be shown.

  - `journey.savingsPlan.periodicity` (string, required)
    Enum: "monthly"

  - `journey.savingsPlan.instruments` (array)
    Instruments available for the savings plan.
If omitted, the end user may choose from all instruments in the client universe.

  - `journey.savingsPlan.instruments.instrument` (string, required)
    Instrument ID

  - `journey.kycs` (array | null)
    Valid Know Your Customer answers used to prefill the options in the journey.

  - `journey.kycs.qid` (string, required)
    Fondo ID of the question
    Example: money_origin

  - `journey.kycs.answer` (any, required)
    Answer
    Example: lön/pension

  - `journey.transfer` (object | null)
    Transfer configuration from 3rd party institution into newly created Fondo Account.
If defined, the transfer screen is shown.
If `null` the transfer view will not be shown.

  - `journey.transfer.enforce` (string, required)
    Controls whether the end user can skip the transfer step.
`required` means the end user must complete the transfer step.
`optional` means the end user may skip the transfer step.
    Enum: "required", "optional"

  - `journey.transfer.transfers` (array, required)
    List of custodians and their accounts to transfer from.
The custodian is always readonly. Account numbers, when provided, are readonly.

  - `journey.transfer.transfers.accounts` (array, required)
    Accounts at this custodian. Each account is either known (accountNumber set)
or unknown (accountNumber null, end user enters it).

  - `journey.transfer.transfers.accounts.accountNumber` (string, required)

  - `journey.transfer.transfers.accounts.sourceAccountType` (any, required)

  - `journey.transfer.transfers.accounts.closeAccountAndSavingsplans` (boolean | null, required)
    Should the custodian close the account and corresponding savingsplans
after the transfer is complete?
If "null", the user must decide.

  - `journey.transfer.transfers.accounts.required` (boolean, required)
    If true, the end user must complete this transfer.
If false, the end user may deselect this transfer.

  - `journey.transfer.transfers.accounts.untransferableUnitsOutput` (array, required)
    If units are selected as output of unit transfer - what to transfer as if the transfer fails.
I.e. the instrument does not exist in universe or trading is stopped.
If a single entry, the behavior is locked.
If multiple entries, the end user picks.
`cash` — sell and transfer as cash.
`ignore` — leave them.

  - `journey.transfer.transfers.accounts.defaultUnitsOutput` (array, required)
    What to do with instruments not listed in `instruments`.
If a single entry, the behavior is locked.
If multiple entries, the end user picks.
`cash` — sell and transfer as cash.
`units` — transfer as units.
`ignore` — leave them.

  - `journey.transfer.transfers.accounts.balanceOutput` (array, required)
    What to do with the account's cash balance.
If a single entry, the behavior is locked.
If multiple entries, the end user picks.
`cash` — transfer the cash balance.
`ignore` — leave it.

  - `journey.transfer.transfers.accounts.allowInstrumentSelection` (boolean, required)
    Should the end user be able to add specific instruments to transfer?

  - `journey.transfer.transfers.accounts.instruments` (array)
    Specific instruments to transfer from this account.
If omitted, all instruments are handled by `defaultUnitsOutput`.

  - `journey.transfer.transfers.accounts.accountNumber` (string | null, required)
    Account number at the custodian. Readonly when provided.
If `null`, the end user enters the account number.
At most one `null` account number is allowed per custodian across all transfer entries.
    Example: 1223456789

  - `journey.transfer.transfers.accounts.sourceAccountType` (array, required)
    Allowed source account types at the custodian.
A single entry locks the type; multiple entries let the end user pick.
Each entry must be one of the journey's `accountTypes`.
Locked to one entry when `accountNumber` is provided.

  - `sortedId` (string)
    ULID (Universally Unique Lexicographically Sortable Identifier)
    Example: 01ARZ3NDEKTSV4RRFFQ69G5FAV

  - `createdDate` (string)
    Date when acocunt was created
    Example: 2018-12-13T23:59:00.001Z

  - `modifiedDate` (string)
    Date when last modified
    Example: 2018-12-13T23:59:00.001Z

  - `deleted` (boolean)
    True if the journey is deleted

  - `deletedDate` (string | null)
    Date when last modified
    Example: 2018-12-13T23:59:00.001Z

  - `submission` (any)
    optional submission id.
May be created in legal entity journeys.
May be fetched on separate GET /submission/:id route

  - `callbackUrl` (string, required)
    URL that receives a POST request when the journey status changes to canceled, error, or complete.
The payload includes the journey id, status, and scope.
Must use https in production.
    Example: https://api.habibisfonder.se/v1/fondo/callback

  - `redirectUrl` (string | null)
    Passed to BankID as the redirect target after mobile signing completes.
Set this to a deep link (e.g. customerApp:///) so BankID returns the user to your app instead of the webview.
Not needed for web-only integrations.
    Example: customerApp:///

  - `completionRedirectUrl` (string | null)
    URL the browser is redirected to once the journey completes successfully.
Can be an http(s) URL or a custom-scheme deep link (e.g. `myapp://done`) for native-app handoff.
    Example: https://partner.example/onboarding-done

  - `errorCode` (string | null)
    Any errors occurring during journey

  - `context` (string | null)
    Where end-user exited the journey. On error on cancel, if applicable.
    Example: createaccountsign

  - `scope` (string | null, required)
    BASE64 encoded partner specific data attached to the journey, such as encrypted data containing session information. It will be passed back to callback.

  - `result` (object | null)
    Result of journey

  - `result.journeyType` (string)
    Enum: "createAccount"

  - `result.account` (object)
    account created in journey

  - `result.account.status` (string)
    - `pending` — Account created, waiting for approval
- `active` — Account is open and operational
- `rejected` — Account application was rejected
- `confirm` — Account is awaiting confirmation from the end customer
- `closing` — Account is being closed; new orders, payments and withdrawals are not accepted
    Enum: "pending", "active", "rejected", "confirm", "closing"

  - `result.account.accountType` (string)
    - `isk` — ISK, investeringssparkonto
- `depot` — Depot, fonddepå
- `insurance` — Endowment insurance, kapitalförsäkring. Requires the user to sign separately with the insurance provider.
    Enum: "isk", "depot", "insurance"

  - `result.account.serviceType` (string)
    - `portfolioManagement` — Portfolio management
- `investmentAdvise` — Investment advice
- `executionOnly` — Execution only
    Enum: "portfolioManagement", "investmentAdvise", "executionOnly"

  - `result.bankAccounts` (array)
    Payment accounts registered with allocation plan or savings plan

  - `result.bankAccounts.status` (string)
    Mandate status of the payment account
- `pending` — Pending verification
- `rejected` — Rejected
- `active` — Active, ready for withdrawals
    Enum: "pending", "rejected", "active"

  - `result.bankAccounts.iban` (string)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `result.transfers` (array)
    If transfers from other custodian was created, the results are provided here. One item per account.

  - `result.transfers.account` (string)
    Account number at institution
    Example: 1223456789

  - `result.allocationPlan` (object)
    If an allocationPlan was created. The results are provided here

  - `result.allocationPlan.paymentAccount` (object)
    The details of the bank account to charge from (autogiro)

  - `result.allocationPlan.paymentAccount.iban` (string)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `result.allocationPlan.instruments` (array)
    Instrument allocations. The sum of all allocations must be exactly 100.
    Example: [{"instrument":"SE0000810798SEK","allocation":100}]

  - `result.savingsplan` (object)
    If a savings plan was created. The results are provided here

  - `result.savingsplan.periodicity` (string)
    Enum: "monthly"

  - `result.savingsplan.day` (number)
    Day of the month to allocate

  - `result.savingsplan.instruments` (array)
    Instrument allocations with fixed amounts

  - `result.savingsplan.instruments.instrument` (string)
    Instrument ID

  - `result.savingsplan.instruments.amount` (number)
    Amount in SEK

  - `result.allocationPlan` (object)

  - `result.allocationPlan.instruments` (array)
    Updated instrument allocations. The sum of all allocations must be exactly 100.

  - `result.savingsplan` (object)

  - `result.savingsplan.startDate` (string)
    Date when the savings plan starts

  - `result.submission` (object)

## Response 400:

  - `400` (unknown)
    Invalid request or paramaters

## Response 400 fields (application/json):

  - `error` (string, required)
    Error code
    Enum: "invalid_request"

  - `error_description` (string)
    Description of error

## Response 401:

  - `401` (unknown)
    Unauthorized Error

## Response 401 fields (application/json):

  - `error` (string, required)
    Error code
    Enum: "unauthorized"

  - `error_description` (string)
    Description of error

## Response 403:

  - `403` (unknown)
    Forbidden Error (Not in scope)

## Response 403 fields (application/json):

  - `error` (string, required)
    Error code
    Enum: "forbidden"

  - `error_description` (string)
    Description of error

## Response 500:

  - `500` (unknown)
    Server Error

## Response 500 fields (application/json):

  - `error` (string, required)
    Error code
    Enum: "server_error"

  - `error_description` (string)
    Description of error

## Response 503:

  - `503` (unknown)
    Service Unavailable Error

## Response 503 fields (application/json):

  - `error` (string, required)
    Error code
    Enum: "service_unavailable"

  - `error_description` (string)
    Description of error

## Callback:

  - `onResourceEvent` (unknown)
    Journey callback

## Callback request fields (application/json):

  - `id` (string)
    Example: 49ad7378-121c-4a53-9894-dfd14a7b4877

  - `context` (string | null)
    Where user exited the journey. On error on cancel, if applicable.
    Example: createaccountsign

  - `status` (string)
    Enum: "error"

  - `error` (object)
    Any errors occurring during journey

  - `error.code` (string)
    - `USER_ERROR` — End-user related process aborted the journey
- `AUTH_ERROR` — End-user could not be authenticated
- `KYC_ERROR` — Know Your Customer related process aborted the journey
- `OTHER_ERROR` — An unspecified error occurred
- `TRANSFER_ERROR` — Transfer of fund units or cash had an error; account is rejected
- `SIGN_ERROR` — Error during signing
    Enum: "USER_ERROR", "AUTH_ERROR", "KYC_ERROR", "OTHER_ERROR", "TRANSFER_ERROR", "SIGN_ERROR"

  - `error.journeyType` (string)
    Enum: "createAccount"

  - `scope` (string | null)
    BASE64 encoded partner specific data attached to the journey, such as encrypted data containing session information. It will be passed back to callback.

  - `result` (object)
    Result of journey

  - `result.journeyType` (string)
    Enum: "createAccount"

  - `result.account` (object)
    account created in journey

  - `result.account.status` (string)
    - `pending` — Account created, waiting for approval
- `active` — Account is open and operational
- `rejected` — Account application was rejected
- `confirm` — Account is awaiting confirmation from the end customer
- `closing` — Account is being closed; new orders, payments and withdrawals are not accepted
    Enum: "pending", "active", "rejected", "confirm", "closing"

  - `result.account.accountType` (string)
    - `isk` — ISK, investeringssparkonto
- `depot` — Depot, fonddepå
- `insurance` — Endowment insurance, kapitalförsäkring. Requires the user to sign separately with the insurance provider.
    Enum: "isk", "depot", "insurance"

  - `result.account.serviceType` (string)
    - `portfolioManagement` — Portfolio management
- `investmentAdvise` — Investment advice
- `executionOnly` — Execution only
    Enum: "portfolioManagement", "investmentAdvise", "executionOnly"

  - `result.bankAccounts` (object)
    accounts registered with allocation plan or for withdrawal

  - `result.bankAccounts.status` (string)
    - `pending` — Pending verification
- `rejected` — Rejected
- `active` — Active, ready for withdrawals
    Enum: "pending", "rejected", "active"

  - `result.bankAccounts.iban` (string)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `result.transfers` (array)
    If transfers from other custodian was created, the results are provded here. One item per account.

  - `result.transfers.type` (string)
    Type of transfer
    Enum: "cash"

  - `result.transfers.account` (string)
    Account number at institution
    Example: 1223456789

  - `result.allocationPlan` (object)
    If an allocationPlan was created. The results are provided here

  - `result.allocationPlan.paymentAccount` (object)
    The details of the bank account to charge from (autogiro)

  - `result.allocationPlan.paymentAccount.iban` (string)
    IBAN (ISO 13616, International Bank Account Number)
    Example: SE7280000810340009783242

  - `result.allocationPlan.instruments` (array)
    Instrument allocations. The sum of all allocations must be exactly 100.
    Example: [{"instrument":"SE0000810798SEK","allocation":100}]

  - `result.allocationPlan.instruments.instrument` (string)
    Instrument ID
    Example: SE0000810798SEK

  - `result.allocationPlan.instruments.allocation` (number)
    Allocation in percent for this instrument
    Example: 100

  - `result.allocationPlan` (object)

## Callback response 200:

  - `200` (unknown)
    Callback successfully recieved.

## Callback response 400:

  - `400` (unknown)
    Bad request

