# The account model

Source: https://developers.swell.is/backend-api/accounts/the-account-model

## Fields

- `id` (objectId): Unique identifier for the customer.
- `email` (string, required): Customer's email address.
- `addresses` (array of Addresses): Expandable list of saved addresses on file.
- `attributes` (object): An object containing custom [attribute](https://developers.swell.is/backend-api/attributes/the-attribute-model) key/value pairs.
- `balance` (currency): Balance of customer credits. Default: `0`.
- `billing` (object): Default customer billing information.
  - `account_card` (account_card, required): Expandable link to the customer's credit card on file, if applicable.
  - `account_card_id` (objectId, required): ID of the customer's credit card on file, if applicable.
  - `address1` (string, required): Billing address line 1: street address/PO box/company name.
  - `address2` (string, required): Billing address line 2: apartment/suite/unit/building.
  - `first_name` (string, required): Billing first name. If `name` is updated, then `first_name` will be automatically updated as the first word of the name.
  - `card` (object): Credit card billing details used when `billing.method=card`.
    - `token` (string, required): Token generated by Swell Checkout or [Stripe.js](https://stripe.com/docs/stripe-js/reference).
    - `address_check` (string): When used with a payment gateway that performs address checks and `address1` was provided. Can be `pass`, `fail`, `unavailable`, or `unchecked`.
    - `brand` (string): Credit card brand. Can be `American Express`, `Diners Club`, `Discover`, `JCB`, `MasterCard`, `UnionPay`, `Visa`, or `Unknown`.
    - `display_brand` (string): Brand of the card displayed to the customer, if different from the underlying brand (for example, co-branded cards).
    - `cvc_check` (string): When used with a payment gateway that performs CVC code checks and `cvc` was provided. Can be `pass`, `fail`, `unavailable`, or `unchecked`.
    - `exp_month` (int): Two-digit number representing the credit card expiration month.
    - `exp_year` (int): Four-digit number representing the credit card expiration year.
    - `gateway` (string): ID of the payment gateway that should be used to process payments.
    - `last4` (string): Last four digits of the card number.
    - `test` (boolean): Indicates this is a test card.
    - `zip_check` (string): When used with a payment gateway that performs address checks and `zip` was provided. Can be `pass`, `fail`, `unavailable`, or `unchecked`.
  - `city` (string): Billing city/district/suburb/town/village.
  - `country` (string): [Two-letter ISO](https://www.iso.org/iso-3166-country-codes.html) country code.
  - `last_name` (string): Billing last name. If `name` is updated, then `last_name` will be automatically updated as the last words of the name.
  - `method` (string, required): Method of payment. Can be `card`, `account` or any one of the manual methods defined in payment settings.
  - `name` (string, required): Full name of the customer. If `first_name` or `last_name` are updated, then `name` will be automatically updated as a combination of first/last.
  - `phone` (string, required): Billing phone number.
  - `state` (string, required): Billing state/county/province/region.
  - `zip` (string, required): Billing zip/postal code.
- `cards` (array of Cards): Expandable list of saved credit cards on file.
- `cart_abandoned_count` (int): Number of abandoned carts initiated by the customer.
- `carts` (Cart): Expandable list of carts created by the customer.
- `contact` (Contact): Expandable list of saved information for the primary contact on file for the account.
- `contacts` (Contact): Expandable list of all contacts.
- `contact_id` (objectId): The ID of the primary contact.
- `credits` (array of Credits): Expandable list of customer credit transactions. Balance of these transactions is kept in `balance`.
- `currency` (string): Three-letter [ISO currency code](https://www.iso.org/iso-4217-currency-codes.html) in uppercase. Defaults to the store's base currency.
- `date_created` (date, auto): Date and time the customer was created.
- `date_first_cart_abandoned` (date): Date the customer first abandoned a shopping cart.
- `date_first_order` (date): Date the customer placed their first order.
- `date_last_cart_abandoned` (date): Date the customer last abandoned a shopping cart.
- `date_last_login` (date): Date the customer last logged into their account.
- `date_last_order` (date): Date of the last order placed by the customer.
- `date_updated` (date, auto): Date and time the customer was last updated.
- `email_optin` (boolean): Indicates the customer opted into email communications.
- `first_name` (string): Customer's first name. If `name` is updated, then `first_name` will be automatically updated as the first word of the name.
- `group` (string): Customer group used for special price rules and other customer logic.
- `invoices` (Invoice): Expandable list of invoices issued for the customer.
- `last_name` (string): If `name` is updated, then `last_name` will be automatically updated as the last words of the name.
- `locale` (string): Customer’s preferred locale code.
- `metadata` (object): Arbitrary data, typically set in a checkout flow to store custom values. See [Frontend API](https://developers.swell.is/frontend-api/introduction) for more details.
- `name` (string): Full name of the customer. If `first_name` or `last_name` are updated, then `name` will be automatically updated as a combination of first/last.
- `notes` (string): Internal admin notes. These are not visible to the customer.
- `orders` (Order): Expandable list of orders placed by the customer.
- `order_count` (int): Number of orders the customer has placed over time. Default: `0`.
- `order_value` (currency): Total value of all orders the customer has placed over time. Default: `0`.
- `password` (string): Password used to log in and gain access to sensitive information. When the customer has a password, they are required to log in when placing an order using the associated email address. This value is automatically encrypted using bcrypt.

  If an account does not have a password defined, it is treated as a `guest` during checkout.
- `password_reset_key` (string): Unique key created when a customer requests a password reset.
- `password_reset_url` (string): When a customer requests password reset, an email is sent with this URL to redirect and authenticate the request.
- `password_token` (string): A temp token generated by Swell, or a permanent password token assigned after submitting a temporary token (starting with `password_`).
- `phone` (string): Customer's phone number.
- `segments` (array of child_scalar): An array of strings, each representing a segment that the account belongs to. Segments are used to allow groups of customers access to particular coupons or promos.
- `shipping` (object): Default customer shipping information.
  - `name` (string): Shipping full name. If `first_name` or `last_name` are updated, then `name` will be automatically updated as a combination of first and last.
  - `account_address` (account_address): Expandable link to the customer's address on file.
  - `account_address_id` (objectId): Setting this value will populate `shipping` with the associated customer's account address on file.
  - `address1` (string): Shipping address line 1: street address/PO box/company name.
  - `address2` (string): Shipping address line 2: apartment/suite/unit/building.
  - `city` (string): Shipping city/district/suburb/town/village.
  - `country` (string): Two-letter ISO country code.
  - `first_name` (string): Shipping first name. If `name` is updated, then `first_name` will be automatically updated as the first word of the name.
  - `last_name` (string): Shipping last name. If `name` is updated, then `last_name` will be automatically updated as the last words of the name.
  - `phone` (string): Shipping phone number.
  - `state` (string): Shipping state/county/province/region.
  - `tax_id` (string): Tax identification number of the recipient, where required for customs or delivery.
  - `zip` (string): Shipping zip/postal code.
- `sms_optin` (boolean): Indicates the customer has opted in to receive SMS marketing.
- `subscriptions` (Subscription): Expandable list of subscriptions held by the customer.
- `type` (enum): Type of customer. Can be one of `individual` or `business`. Possible values: `individual`, `business`. Default: `"individual"`.
- `vat_number` (string): Default VAT number for a `business` customer, if applicable.
