# The Session object ### The Session object ```json { "id": "fcsess_1MwtnGLkdIwHu7ixs7NPQ7dq", "object": "financial_connections.session", "account_holder": { "customer": "cus_NiKSWdaFz2F6I0", "type": "customer" }, "accounts": { "object": "list", "data": [], "has_more": false, "total_count": 0, "url": "/v1/financial_connections/accounts" }, "client_secret": "fcsess_client_secret_KRJTKvCY3IKoYTrW18EazcO3", "filters": { "countries": [ "US" ] }, "livemode": false, "permissions": [ "balances", "payment_method" ] } ``` ## Attributes - `id` (string) Unique identifier for the object. - `object` (string) String representing the object’s type. Objects of the same type share the same value. - `account_holder` (object, nullable) The account holder for whom accounts are collected in this session. - `account_holder.account` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter)) The ID of the Stripe account that this account belongs to. Only available when `account_holder.type` is `account`. - `account_holder.customer` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter)) The ID for an Account representing a customer that this account belongs to. Only available when `account_holder.type` is `customer`. - `account_holder.type` (enum) Type of account holder that this account belongs to. Possible enum values: - `account` Account holder is a Stripe account object. - `customer` Account holder is a Stripe customer object. - `accounts` (object) The accounts that were collected as part of this Session. - `accounts.object` (string) String representing the object’s type. Objects of the same type share the same value. Always has the value `list`. - `accounts.data` (array of objects) Details about each object. - `accounts.data.id` (string) Unique identifier for the object. - `accounts.data.object` (string) String representing the object’s type. Objects of the same type share the same value. - `accounts.data.account_holder` (object, nullable) The account holder that this account belongs to. - `accounts.data.account_holder.account` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter)) The ID of the Stripe account that this account belongs to. Only available when `account_holder.type` is `account`. - `accounts.data.account_holder.customer` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter)) The ID for an Account representing a customer that this account belongs to. Only available when `account_holder.type` is `customer`. - `accounts.data.account_holder.type` (enum) Type of account holder that this account belongs to. Possible enum values: - `account` Account holder is a Stripe account object. - `customer` Account holder is a Stripe customer object. - `accounts.data.account_numbers` (array of objects, nullable) Details about the account numbers. - `accounts.data.account_numbers.expected_expiry_date` (timestamp, nullable) When the account number is expected to expire, if applicable. - `accounts.data.account_numbers.identifier_type` (enum) The type of account number associated with the account. Possible enum values: - `account_number` The account has a permanent account number. - `tokenized_account_number` The account number is a tokenized, will not match the permanent account number, and may become deactivated. - `accounts.data.account_numbers.status` (enum) Whether the account number is currently active and usable for transactions. Possible enum values: - `deactivated` The tokenized account number cannot be used for transfers. It may have been revoked by the user. - `transactable` The account numbers can be used for transfers. - `accounts.data.account_numbers.supported_networks` (array of enums) The payment networks that the account number can be used for. Possible enum values: - `ach` The account number can be used for ACH direct debit transactions. - `accounts.data.balance` (object, nullable) The most recent information about the account’s balance. - `accounts.data.balance.as_of` (timestamp) The time that the external institution calculated this balance. Measured in seconds since the Unix epoch. - `accounts.data.balance.cash` (object, nullable) Information on a `cash` balance. Only set if `balance.type` is `cash`. - `accounts.data.balance.cash.available` (map, nullable) The funds available to the account holder. Typically this is the current balance after subtracting any outbound pending transactions and adding any inbound pending transactions. Each key is a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Each value is a integer amount. A positive amount indicates money owed to the account holder. A negative amount indicates money owed by the account holder. - `accounts.data.balance.credit` (object, nullable) Information on a `credit` balance. Only set if `balance.type` is `credit`. - `accounts.data.balance.credit.used` (map, nullable) The credit that has been used by the account holder. Each key is a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Each value is a integer amount. A positive amount indicates money owed to the account holder. A negative amount indicates money owed by the account holder. - `accounts.data.balance.current` (map) The balances owed to (or by) the account holder, before subtracting any outbound pending transactions or adding any inbound pending transactions. Each key is a three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Each value is a integer amount. A positive amount indicates money owed to the account holder. A negative amount indicates money owed by the account holder. - `accounts.data.balance.type` (enum) The `type` of the balance. An additional hash is included on the balance with a name matching this value. Possible enum values: - `cash` Account balance is a cash balance - `credit` Account balance is a credit balance - `accounts.data.balance_refresh` (object, nullable) The state of the most recent attempt to refresh the account balance. - `accounts.data.balance_refresh.last_attempted_at` (timestamp) The time at which the last refresh attempt was initiated. Measured in seconds since the Unix epoch. - `accounts.data.balance_refresh.next_refresh_available_at` (timestamp, nullable) Time at which the next balance refresh can be initiated. This value will be `null` when `status` is `pending`. Measured in seconds since the Unix epoch. - `accounts.data.balance_refresh.status` (enum) The status of the last refresh attempt. Possible enum values: - `failed` The last balance refresh attempt failed. - `pending` The last balance refresh attempt is pending. - `succeeded` The last balance refresh attempt succeeded. - `accounts.data.category` (enum) The type of the account. Account category is further divided in `subcategory`. Possible enum values: - `cash` The account represents real funds held by the institution (e.g. a checking or savings account). - `credit` The account represents credit extended by the institution (e.g. a credit card or mortgage). - `investment` The account represents investments, or any account where there are funds of unknown liquidity. - `other` The account does not fall under the other categories. - `accounts.data.created` (timestamp) Time at which the object was created. Measured in seconds since the Unix epoch. - `accounts.data.display_name` (string, nullable) A human-readable name that has been assigned to this account, either by the account holder or by the institution. - `accounts.data.institution_name` (string) The name of the institution that holds this account. - `accounts.data.last4` (string, nullable) The last 4 digits of the account number. If present, this will be 4 numeric characters. - `accounts.data.livemode` (boolean) If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`. - `accounts.data.ownership` (string, nullable, expandable (can be expanded into an object with the `expand` request parameter)) The most recent information about the account’s owners. - `accounts.data.ownership_refresh` (object, nullable) The state of the most recent attempt to refresh the account owners. - `accounts.data.ownership_refresh.last_attempted_at` (timestamp) The time at which the last refresh attempt was initiated. Measured in seconds since the Unix epoch. - `accounts.data.ownership_refresh.next_refresh_available_at` (timestamp, nullable) Time at which the next ownership refresh can be initiated. This value will be `null` when `status` is `pending`. Measured in seconds since the Unix epoch. - `accounts.data.ownership_refresh.status` (enum) The status of the last refresh attempt. Possible enum values: - `failed` The last ownership refresh attempt failed. - `pending` The last ownership refresh attempt is pending. - `succeeded` The last ownership refresh attempt succeeded. - `accounts.data.permissions` (array of enums, nullable) The list of permissions granted by this account. Possible enum values: - `balances` Allows accessing balance data from the account. - `ownership` Allows accessing ownership data from the account. - `payment_method` Allows the creation of a payment method from the account. - `transactions` Allows accessing transactions data from the account. - `accounts.data.status` (enum) The status of the link to the account. Possible enum values: - `active` Stripe is able to retrieve data from the Account without issues. - `disconnected` Account connection has been terminated through the [disconnect API](https://docs.stripe.com/docs/api/financial_connections/accounts/disconnect.md) or an [end user request](https://support.stripe.com/user/how-do-i-disconnect-my-linked-financial-account). - `inactive` Stripe cannot retrieve data from the Account. - `accounts.data.status_details` (object) Details on the status of the account. - `accounts.data.status_details.active` (object, nullable) Details related to the active status of this Account. - `accounts.data.status_details.active.action` (enum) The action (if any) to proactively relink the Account. Possible enum values: - `none` There is no action recommended at this time to resolve the upcoming Account deactivation. - `relink_required` You may proactively relink the Account by having your end user complete the [streamlined relink flow](https://docs.stripe.com/financial-connections/relink.md). - `accounts.data.status_details.active.cause` (enum) The underlying cause of the Account becoming inactive. Possible enum values: - `access_expired` Access to the account will expire. - `institution_requirement` The institution is introducing a change which will break existing connections shortly. - `unspecified` The account is expected to become inactive for an unspecified or ambiguous reason. - `accounts.data.status_details.active.expected_deactivation_date` (timestamp) When the Account is expected to become inactive, if applicable. - `accounts.data.subcategory` (enum) If `category` is `cash`, one of: - `checking` - `savings` - `other` If `category` is `credit`, one of: - `mortgage` - `line_of_credit` - `credit_card` - `other` If `category` is `investment` or `other`, this will be `other`. Possible enum values: - `checking` The account is a checking account. - `credit_card` The account represents a credit card. - `line_of_credit` The account represents a line of credit. - `mortgage` The account represents a mortgage. - `other` The account does not fall under any of the other subcategories. - `savings` The account is a savings account. - `accounts.data.subscriptions` (array of enums, nullable) The list of data refresh subscriptions requested on this account. Possible enum values: - `transactions` Subscribes to periodic transactions data refreshes from the account. - `accounts.data.supported_payment_method_types` (array of enums) The [PaymentMethod type](https://docs.stripe.com/docs/api/payment_methods/object.md#payment_method_object-type)(s) that can be created from this account. Possible enum values: - `link` A `link` PaymentMethod can be created. - `us_bank_account` A `us_bank_account` PaymentMethod can be created. - `accounts.data.transaction_refresh` (object, nullable) The state of the most recent attempt to refresh the account transactions. - `accounts.data.transaction_refresh.id` (string) Unique identifier for the object. - `accounts.data.transaction_refresh.last_attempted_at` (timestamp) The time at which the last refresh attempt was initiated. Measured in seconds since the Unix epoch. - `accounts.data.transaction_refresh.next_refresh_available_at` (timestamp, nullable) Time at which the next transaction refresh can be initiated. This value will be `null` when `status` is `pending`. Measured in seconds since the Unix epoch. - `accounts.data.transaction_refresh.status` (enum) The status of the last refresh attempt. Possible enum values: - `failed` The last transaction refresh attempt failed. - `pending` The last transaction refresh attempt is pending. - `succeeded` The last transaction refresh attempt succeeded. - `accounts.has_more` (boolean) True if this list has another page of items after this one that can be fetched. - `accounts.url` (string) The URL where this list can be accessed. - `bank_account_token` (object, nullable) Information about the account if the user chose to enter details manually. - `bank_account_token.id` (string) Unique identifier for the object. - `bank_account_token.object` (string) String representing the object’s type. Objects of the same type share the same value. - `bank_account_token.bank_account` (object, nullable) Hash describing the bank account. - `bank_account_token.bank_account.id` (string) Unique identifier for the object. - `bank_account_token.bank_account.object` (string) String representing the object’s type. Objects of the same type share the same value. - `bank_account_token.bank_account.account_holder_name` (string, nullable) The name of the person or business that owns the bank account. - `bank_account_token.bank_account.account_holder_type` (string, nullable) The type of entity that holds the account. This can be either `individual` or `company`. - `bank_account_token.bank_account.account_type` (string, nullable) The bank account type. This can only be `checking` or `savings` in most countries. In Japan, this can only be `futsu` or `toza`. - `bank_account_token.bank_account.bank_name` (string, nullable) Name of the bank associated with the routing number (e.g., `WELLS FARGO`). - `bank_account_token.bank_account.country` (string) Two-letter ISO code representing the country the bank account is located in. - `bank_account_token.bank_account.currency` (enum) Three-letter [ISO code for the currency](https://docs.stripe.com/payouts.md) paid out to the bank account. - `bank_account_token.bank_account.fingerprint` (string, nullable) Uniquely identifies this particular bank account. You can use this attribute to check whether two bank accounts are the same. - `bank_account_token.bank_account.last4` (string) The last four digits of the bank account number. - `bank_account_token.bank_account.routing_number` (string, nullable) The routing transit number for the bank account. - `bank_account_token.bank_account.status` (string) For bank accounts, possible values are `new`, `validated`, `verified`, `verification_failed`, `tokenized_account_number_deactivated` or `errored`. A bank account that hasn’t had any activity or validation performed is `new`. If Stripe can determine that the bank account exists, its status will be `validated`. Note that there often isn’t enough information to know (e.g., for smaller credit unions), and the validation is not always run. If customer bank account verification has succeeded, the bank account status will be `verified`. If the verification failed for any reason, such as microdeposit failure, the status will be `verification_failed`. If the status is `tokenized_account_number_deactivated`, the account utilizes a tokenized account number which has been deactivated due to expiration or revocation. This account will need to be reverified to continue using it for money movement. If a payout sent to this bank account fails, we’ll set the status to `errored` and will not continue to send [scheduled payouts](https://docs.stripe.com/payouts.md#payout-schedule) until the bank details are updated. For external accounts, possible values are `new`, `errored`, `verification_failed`, and `tokenized_account_number_deactivated`. If a payout fails, the status is set to `errored` and scheduled payouts are stopped until account details are updated. In the US and India, if we can’t [verify the owner of the bank account](https://support.stripe.com/questions/bank-account-ownership-verification), we’ll set the status to `verification_failed`. Other validations aren’t run against external accounts because they’re only used for payouts. This means the other statuses don’t apply. - `bank_account_token.card` (object, nullable) Hash describing the card used to make the charge. - `bank_account_token.card.id` (string) Unique identifier for the object. - `bank_account_token.card.object` (string) String representing the object’s type. Objects of the same type share the same value. - `bank_account_token.card.address_city` (string, nullable) City/District/Suburb/Town/Village. - `bank_account_token.card.address_country` (string, nullable) Billing address country, if provided when creating card. - `bank_account_token.card.address_line1` (string, nullable) Address line 1 (Street address/PO Box/Company name). - `bank_account_token.card.address_line1_check` (string, nullable) If `address_line1` was provided, results of the check: `pass`, `fail`, `unavailable`, or `unchecked`. - `bank_account_token.card.address_line2` (string, nullable) Address line 2 (Apartment/Suite/Unit/Building). - `bank_account_token.card.address_state` (string, nullable) State/County/Province/Region. - `bank_account_token.card.address_zip` (string, nullable) ZIP or postal code. - `bank_account_token.card.address_zip_check` (string, nullable) If `address_zip` was provided, results of the check: `pass`, `fail`, `unavailable`, or `unchecked`. - `bank_account_token.card.brand` (string) Card brand. Can be `American Express`, `Cartes Bancaires`, `Diners Club`, `Discover`, `Eftpos Australia`, `Girocard`, `JCB`, `MasterCard`, `UnionPay`, `Visa`, or `Unknown`. - `bank_account_token.card.country` (string, nullable) Two-letter ISO code representing the country of the card. You could use this attribute to get a sense of the international breakdown of cards you’ve collected. - `bank_account_token.card.currency` (enum, nullable) Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html), in lowercase. Must be a [supported currency](https://docs.stripe.com/currencies.md). - `bank_account_token.card.cvc_check` (string, nullable) If a CVC was provided, results of the check: `pass`, `fail`, `unavailable`, or `unchecked`. A result of unchecked indicates that CVC was provided but hasn’t been checked yet. Checks are typically performed when attaching a card to a Customer object, or when creating a charge. For more details, see [Check if a card is valid without a charge](https://support.stripe.com/questions/check-if-a-card-is-valid-without-a-charge). - `bank_account_token.card.dynamic_last4` (string, nullable) (For tokenized numbers only.) The last four digits of the device account number. - `bank_account_token.card.exp_month` (integer) Two-digit number representing the card’s expiration month. - `bank_account_token.card.exp_year` (integer) Four-digit number representing the card’s expiration year. - `bank_account_token.card.fingerprint` (string, nullable) Uniquely identifies this particular card number. You can use this attribute to check whether two customers who’ve signed up with you are using the same card number, for example. For payment methods that tokenize card information (Apple Pay, Google Pay), the tokenized number might be provided instead of the underlying card number. *As of May 1, 2021, card fingerprint in India for Connect changed to allow two fingerprints for the same card—one for India and one for the rest of the world.* - `bank_account_token.card.funding` (string) Card funding type. Can be `credit`, `debit`, `prepaid`, or `unknown`. - `bank_account_token.card.last4` (string) The last four digits of the card. - `bank_account_token.card.metadata` (map, nullable) Set of [key-value pairs](https://docs.stripe.com/docs/api/metadata.md) that you can attach to an object. This can be useful for storing additional information about the object in a structured format. - `bank_account_token.card.name` (string, nullable) Cardholder name. - `bank_account_token.card.networks` (object, nullable) Contains information about card networks used to process the payment. - `bank_account_token.card.networks.preferred` (string, nullable) The preferred network for co-branded cards. Can be `cartes_bancaires`, `mastercard`, `visa` or `invalid_preference` if requested network is not valid for the card. - `bank_account_token.card.regulated_status` (enum, nullable) Status of a card based on the card issuer. Possible enum values: - `regulated` The card falls under a regulated account range. - `unregulated` The card does not fall under a regulated account range. - `bank_account_token.card.tokenization_method` (string, nullable) If the card number is tokenized, this is the method that was used. Can be `android_pay` (includes Google Pay), `apple_pay`, `masterpass`, `visa_checkout`, or null. - `bank_account_token.card.wallet` (object, nullable) If this Card is part of a card wallet, this contains the details of the card wallet. - `bank_account_token.card.wallet.apple_pay` (object, nullable) If this is a `apple_pay` card wallet, this hash contains details about the wallet. - `bank_account_token.card.wallet.type` (enum) The type of the card wallet, one of `apple_pay` or `link`. An additional hash is included on the Wallet subhash with a name matching this value. It contains additional information specific to the card wallet type. Possible enum values: - `apple_pay` - `link` - `bank_account_token.client_ip` (string, nullable) IP address of the client that generates the token. - `bank_account_token.created` (timestamp) Time at which the object was created. Measured in seconds since the Unix epoch. - `bank_account_token.description` (string, nullable) An arbitrary string attached to the object. Often useful for displaying to users. - `bank_account_token.livemode` (boolean) If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`. - `bank_account_token.type` (string) Type of the token: `account`, `bank_account`, `card`, or `pii`. - `bank_account_token.used` (boolean) Determines if you have already used this token (you can only use tokens once). - `client_secret` (string, nullable) A value that will be passed to the client to launch the authentication flow. - `filters` (object, nullable) Filters applied to this session that restrict the kinds of accounts to collect. - `filters.account_subcategories` (array of enums, nullable) Restricts the Session to subcategories of accounts that can be linked. Valid subcategories are: `checking`, `savings`, `mortgage`, `line_of_credit`, `credit_card`. Possible enum values: - `checking` The account is a checking account. - `credit_card` The account represents a credit card. - `line_of_credit` The account represents a line of credit. - `mortgage` The account represents a mortgage. - `savings` The account is a savings account. - `filters.countries` (array of strings, nullable) List of countries from which to filter accounts. - `filters.require_payment_method_support` (enum, nullable) Whether the Session should require that linked accounts support payments and retrieve account numbers before completion. Possible enum values: - `all` All accounts in the Session must be payment-eligible, and at least one payment-eligible account must successfully retrieve account and routing numbers before the Session can complete. - `at_least_one` At least one account in the Session must be payment-eligible and successfully retrieve account and routing numbers before the Session can complete. - `none` Accounts are not required to be payment-eligible. - `limits` (object, nullable) Settings for configuring Session-specific limits. - `limits.accounts` (integer) The number of accounts that can be linked in this Session. - `livemode` (boolean) If the object exists in live mode, the value is `true`. If the object exists in test mode, the value is `false`. - `manual_entry` (object, nullable) Settings for configuring manual entry of account details for this Session. - `manual_entry.mode` (enum, nullable) Controls how manual entry of bank account details is presented to the user. Possible enum values: - `automatic` Stripe handles manual entry. - `disabled` Manual entry is disabled. - `permissions` (array of enums) Permissions requested for accounts collected during this session. Possible enum values: - `balances` Requests access for balance data on accounts collected in this session. - `ownership` Requests access for ownership data on accounts collected in this session. - `payment_method` Requests permission for the creation of a payment method from an account collected in this session. - `transactions` Requests access for transaction data on accounts collected in this session. - `prefetch` (array of enums, nullable) Data features requested to be retrieved upon account creation. Possible enum values: - `balances` Requests to prefetch balance data on accounts collected in this session. - `ownership` Requests to prefetch ownership data on accounts collected in this session. - `transactions` Requests to prefetch transaction data on accounts collected in this session. - `return_url` (string, nullable) For webview integrations only. Upon completing OAuth login in the native browser, the user will be redirected to this URL to return to your app.