neea-marketplace-prod.pub.prod.kube.enervee.com Open in urlscan Pro
52.25.72.68  Public Scan

Submitted URL: http://neea-marketplace-prod.pub.prod.kube.enervee.com/
Effective URL: https://neea-marketplace-prod.pub.prod.kube.enervee.com/
Submission: On November 27 via api from US — Scanned from US

Form analysis 10 forms found in the DOM

<form class="form ng-pristine ng-valid" id="autocompleteForm">
  <div class="item item-full item-search">
    <div class="item-wrapper">
      <div id="search-input-label" class="sr-only ng-binding">Type a product name...</div> <i class="mp mp-search-thick" aria-hidden="true"></i> <input class="search-input ng-pristine ng-untouched ng-valid ng-empty"
        enervee-autofocus="vm.isAutocompleteOpen" form="autocompleteForm" type="text" id="searchBox" autocomplete="off" placeholder="Search by brand, make, or model..." data-hint-placeholder="base:search:input_placeholder"
        aria-labelledby="search-input-label" aria-live="polite" ng-model="vm.searchTerm" ng-change="vm.debounceSearch()" ng-enter="vm.submitSearch()">
    </div>
  </div> <!-- ngIf: vm.showPleaseEnterTextPopover -->
</form>

Name: enterEmailForm

<form class="form ng-pristine ng-valid-email ng-invalid ng-invalid-required" name="enterEmailForm" novalidate="">
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': enterEmailForm.email.$touched &amp;&amp; enterEmailForm.email.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust"
              data-section-key="base:modals:your_email_address_text" class="ng-binding ng-isolate-scope">your email address</ng-transclude> </span> <input type="email" aria-label="Enter email address" aria-describedby="signup-email-error-messages"
            name="email" ng-model="user.email" ng-disabled="emailIsReadonly" required="" class="ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required">
          <ul id="signup-email-error-messages" ng-messages="enterEmailForm.email.$error" ng-show="enterEmailForm.email.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_email_address_text" class="ng-binding ng-isolate-scope">Please enter your email
                address</ng-transclude> </li> <!-- ngMessage: email -->
          </ul>
        </label> </div>
    </div> <disclosure-statement class="col-xs-12 pdc-create-account ng-isolate-scope compliance-disclosure" data-cms-key="create_account"><!-- ngIf: vm.disclosuresEnabled -->
      <div ng-if="vm.disclosuresEnabled" class="ng-scope"> <i class="mp mp-compliance" aria-hidden="true"></i>
        <div class="disclosure"> <ng-transclude ng-bind-html="content | trust" data-section-key="compliance:create_account" data-cms-context="vm.partnerContext" class="ng-binding ng-isolate-scope">Your email and password will be used to allow you to
            sign in securely and access your data. We record certain usage data for security, support, and reporting purposes.
            <a href="https://www.enervee.com/privacy" target="_blank" rel="noreferrer noopener">See how your data is managed.</a></ng-transclude> </div>
      </div><!-- end ngIf: vm.disclosuresEnabled -->
    </disclosure-statement>
    <div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-submit" ng-disabled="enterEmailForm.$invalid" ng-click="submitEmailModalForm(user, '#modal-enter-email')" disabled="disabled"> <ng-transclude
          ng-bind-html="content | trust" data-section-key="base:modals:submit_button_text" class="ng-binding ng-isolate-scope">Submit</ng-transclude> </button> </div>
  </div>
</form>

Name: createPasswordForm

<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength ng-valid-password-match" name="createPasswordForm" novalidate="">
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{ 'has-error' : createPasswordForm.newPassword.$touched &amp;&amp; (createPasswordForm.newPassword.$invalid || createPasswordForm.newPassword.$error.message) }"> <label class="btn-group">
          <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:your_password_text" class="ng-binding ng-isolate-scope">your password</ng-transclude> </span> <input type="password"
            aria-label="Enter password" aria-describedby="signup-password-error-messages" name="newPassword" ng-model="password.newPassword" ng-minlength="12" ng-change="validateFormField(createPasswordForm.newPassword)" required=""
            class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
          <ul id="signup-password-error-messages" ng-messages="createPasswordForm.newPassword.$error" ng-show="createPasswordForm.newPassword.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
            </li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: createPasswordForm.newPassword.$error.message -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{ 'has-error' : createPasswordForm.confirmPassword.$touched &amp;&amp; (createPasswordForm.confirmPassword.$invalid || createPasswordForm.confirmPassword.$error.message) }"> <label
          class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:retype_your_password_text" class="ng-binding ng-isolate-scope">Retype your password</ng-transclude> </span> <input
            type="password" aria-label="Confirm password" name="confirmPassword" aria-describedby="signup-confirm-password-error-messages" ng-model="password.confirmPassword" ng-minlength="12" match-password="newPassword"
            ng-model-options="{ allowInvalid: true }" ng-change="validateFormField(createPasswordForm.confirmPassword)" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength ng-valid-password-match">
          <ul id="signup-confirm-password-error-messages" ng-messages="createPasswordForm.confirmPassword.$error" ng-show="createPasswordForm.confirmPassword.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:retype_your_password_text" class="ng-binding ng-isolate-scope">Retype your password</ng-transclude> </li>
            <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngMessage: minlength --> <!-- ngMessage: backendValidation --> <!-- ngIf: createPasswordForm.confirmPassword.$error.message -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12"> <button type="button" class="btn btn-full btn-large btn-accent" ng-disabled="createPasswordForm.$invalid || passwordModalBusy" ng-show="!showAccountProblemOptions"
        ng-click="submitCreatePasswordModalForm(password, '#modal-create-password')" disabled="disabled"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:save_password_text" ng-show="!passwordModalBusy"
          class="ng-binding ng-isolate-scope">Save password</ng-transclude>
        <loaders ng-show="passwordModalBusy" class="ng-isolate-scope ng-hide">
          <div class="loader" ng-class="{small: isSmall}"> <!-- ngIf: !blockArray -->
            <div class="loader-style-local ng-scope" ng-if="!blockArray">
              <div class="loader-graphic"> <svg class="score-spinner" xmlns="http://www.w3.org/2000/svg" width="240" height="240" viewBox="0 0 240 240" version="1.1">
                  <title>Loading</title>
                  <g style="fill-rule:evenodd">
                    <path class="inner"
                      d="M202.835 89.368C198.193 76.923 190.826 65.821 181.469 56.778 165.239 41.098 143.025 31.598 118.68 32.013 110.565 32.153 104.094 38.847 104.234 46.962 104.374 55.077 111.063 61.543 119.178 61.409 135.413 61.134 150.228 67.46 161.044 77.914 171.861 88.372 178.69 102.959 178.965 119.189L178.968 119.189C178.979 119.856 178.979 120.526 178.967 121.198 178.833 129.313 185.299 136.002 193.414 136.142 201.529 136.282 208.223 129.811 208.363 121.696 208.557 110.324 206.587 99.417 202.835 89.368L202.835 89.368Z">
                    </path>
                  </g>
                </svg> </div> <!-- ngIf: displayText -->
            </div><!-- end ngIf: !blockArray --> <!-- ngIf: blockArray -->
          </div>
        </loaders>
      </button> </div>
  </div>
</form>

Name: enterPasswordForm

<form class="form ng-pristine ng-invalid ng-invalid-required" name="enterPasswordForm">
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': enterPasswordForm.password.$touched &amp;&amp; enterPasswordForm.$invalid || enterPasswordForm.password.$error.invalid}"> <label class="btn-group"> <span class="label">
            <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:your_password_text" class="ng-binding ng-isolate-scope">your password</ng-transclude> </span> <input type="password" aria-label="Enter password"
            aria-describedby="login-password-error-messages" name="password" ng-model="user.password" ng-focus="resetFormField(enterPasswordForm.password.$error)" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="login-password-error-messages" ng-messages="enterPasswordForm.password.$error" ng-show="enterPasswordForm.password.$touched || enterPasswordForm.password.$error.invalid" role="alert" class="errors ng-active ng-hide">
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
            </li> <!-- ngMessage: invalid -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12 small">
      <a ng-click="forgotPasswordEmail('#modal-enter-password')" href=""> <b> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:forgot_your_password_text" class="ng-binding ng-isolate-scope">Forgot your password?</ng-transclude> </b> </a>
    </div>
    <div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="enterPasswordForm.$invalid" ng-click="submitPasswordForm(user, '#modal-enter-password')" disabled="disabled"> <ng-transclude
          ng-bind-html="content | trust" data-section-key="base:modals:log_in_text" class="ng-binding ng-isolate-scope">Log in</ng-transclude> </button> </div>
  </div>
</form>

Name: changePasswordForm

<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength" name="changePasswordForm" novalidate="">
  <div role="alert" ng-show="successMessage" style="width:100%;margin-bottom:20px;text-align:center" class="ng-binding ng-hide"> </div>
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.old_password.$touched &amp;&amp; changePasswordForm.old_password.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
              ng-bind-html="content | trust" data-section-key="base:modals:change_password_current_pwd" class="ng-binding ng-isolate-scope">current password</ng-transclude> </span> <input type="password" aria-label="Enter current password"
            aria-describedby="change-password-current-error-messages" name="old_password" ng-model="old_password" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="change-password-current-error-messages" ng-messages="changePasswordForm.old_password.$error" ng-show="changePasswordForm.old_password.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
            </li> <!-- ngMessage: invalid -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.new_password1.$touched &amp;&amp; changePasswordForm.new_password1.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
              ng-bind-html="content | trust" data-section-key="base:modals:change_password_new_pwd" class="ng-binding ng-isolate-scope">new password</ng-transclude> </span> <input type="password" aria-label="Enter new password"
            aria-describedby="change-password-new-error-messages" name="new_password1" ng-model="new_password1" ng-minlength="12" ng-change="validateFormField(changePasswordForm.new_password1)" required=""
            class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
          <ul id="change-password-new-error-messages" ng-messages="changePasswordForm.new_password1.$error" ng-show="changePasswordForm.new_password1.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
            </li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: changePasswordForm.new_password1.$error.message -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.new_password2.$touched &amp;&amp; changePasswordForm.new_password2.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
              ng-bind-html="content | trust" data-section-key="base:modals:change_password_confirm_new_pwd" class="ng-binding ng-isolate-scope">confirm new password</ng-transclude> </span> <input type="password"
            aria-describedby="change-password-confirm-new-error-messages" aria-label="Confirm new password" name="new_password2" ng-model="new_password2" ng-minlength="12" ng-change="validateFormField(changePasswordForm.new_password2)" required=""
            class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
          <ul id="change-password-confirm-new-error-messages" ng-messages="changePasswordForm.new_password2.$error" ng-show="changePasswordForm.new_password2.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
            </li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: changePasswordForm.new_password2.$error.message -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="changePasswordForm.$invalid" ng-click="submitChangePasswordModal(old_password, new_password1, new_password2)" disabled="disabled"> <ng-transclude
          ng-bind-html="content | trust" data-section-key="base:modals:submit_text" class="ng-binding ng-isolate-scope">Submit<br></ng-transclude> </button> </div>
  </div>
</form>

Name: deleteAccountForm

<form class="form ng-pristine ng-invalid ng-invalid-required" name="deleteAccountForm" novalidate="">
  <div class="errors" role="alert" ng-hide="successMessage" style="margin-bottom:20px"> <!-- ngRepeat: errorMessage in errorMessages --> </div>
  <div class="alert alert-success ng-binding ng-hide" role="alert" ng-show="successMessage"> </div>
  <div class="row" ng-hide="successMessage">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': deleteAccountForm.password.$touched &amp;&amp; deleteAccountForm.password.$invalid}"> <label class="btn-group"> <span class="label"> password </span> <input type="password"
            placeholder="Enter password" aria-label="Enter password" name="password" ng-model="password.deleteAccountPassword" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required"> </label> </div>
    </div>
    <div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="deleteAccountForm.$invalid" ng-click="deleteAccount(password.deleteAccountPassword)" disabled="disabled"> Submit </button> </div>
  </div>
</form>

Name: rebateFormModal

<form name="rebateFormModal" class="form ng-pristine ng-valid ng-valid-email ng-valid-required"> <!-- ngIf: allowInstantRebate -->
  <div ng-show="allowEmailRebate" class="item item-full ng-hide">
    <div class="item item-full is-input has-label" ng-hide="is_authenticated"> <label class="btn-group"> <span class="label"> your email address </span> <input type="email" name="emailAddress" ng-model="userEmail"
          ng-required="allowEmailRebate &amp;&amp; !allowEasyRebate" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-email ng-valid-required"> </label> </div>
    <div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitEmail()" ng-disabled="rebateFormModal.emailAddress.$invalid"> <ng-transclude ng-bind-html="content | trust"
          data-section-key="base:modals:email_me_rebate_info_button_text" class="ng-binding ng-isolate-scope">Email Me Rebate Information</ng-transclude> </button> </div>
    <div ng-show="emailSent &amp;&amp; allowEasyRebate" class="ng-hide">
      <div class="item item-full align-center"> <a ng-click="showUploadReceipt = !showUploadReceipt" class="small rebate" href=""> Have your receipt? Upload it now </a> </div>
      <div ng-show="showUploadReceipt" class="ng-hide">
        <p>Upload your receipt below:</p>
        <div class="item item-full"> <label class="is-file-upload"> <!-- ngIf: !receipt.name --><span ng-if="!receipt.name" class="sr-only ng-scope">Receipt</span><!-- end ngIf: !receipt.name --> <input type="file"
              class="input-large hidden ng-pristine ng-untouched ng-valid ng-empty" ngf-select="" ng-model="receipt" name="receipt" ngf-pattern="'image/*,application/pdf'" ngf-accept="'image/*,application/pdf'" ngf-max-size="2MB"
              accept="image/*,application/pdf"> <span class="btn btn-full btn-rebate btn-large ng-binding"> </span> </label> </div>
        <div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitReceipt()" ng-disabled="!receipt || !is_authenticated" disabled="disabled"> <!-- ngIf: !is_authenticated --><span
              ng-if="!is_authenticated" class="ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:login_to_submit_your_receipt" class="ng-binding ng-isolate-scope">Login To Submit Your Receipt</ng-transclude>
            </span><!-- end ngIf: !is_authenticated --> <!-- ngIf: is_authenticated --> </button> </div> <!-- ngIf: formError -->
      </div>
    </div>
  </div>
  <div ng-show="allowEasyRebate &amp;&amp; !allowEmailRebate" class="item item-full ng-hide">
    <div ng-show="is_authenticated" class="item item-full ng-hide">
      <p>Upload your receipt below:</p> <label class="is-file-upload"> <!-- ngIf: !receipt.name --><span ng-if="!receipt.name" class="sr-only ng-scope">Receipt</span><!-- end ngIf: !receipt.name --> <input type="file"
          class="input-large hidden ng-pristine ng-untouched ng-valid ng-empty" ngf-select="" ng-model="receipt" name="receipt" ngf-pattern="'image/*,application/pdf'" ngf-accept="'image/*,application/pdf'" ngf-max-size="2MB"
          accept="image/*,application/pdf"> <span class="btn btn-full btn-large btn-rebate ng-binding"> </span> </label>
    </div>
    <div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitReceipt()" ng-disabled="!receipt || is_authenticated" disabled="disabled"> <!-- ngIf: !is_authenticated --><span
          ng-if="!is_authenticated" class="ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:login_to_submit_your_receipt" class="ng-binding ng-isolate-scope">Login To Submit Your Receipt</ng-transclude>
        </span><!-- end ngIf: !is_authenticated --> <!-- ngIf: is_authenticated --> </button> </div> <!-- ngIf: formError --> <!-- ngIf: !receipt -->
    <div ng-if="!receipt" class="item item-full ng-scope">
      <p>Still looking? Save this info for later:</p>
      <a ng-click="emailInfo()" href=""> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:email_me_rebate_info_link_text" class="ng-binding ng-isolate-scope">I'm not ready! Email me rebate information.</ng-transclude> </a>
    </div><!-- end ngIf: !receipt -->
  </div> <!-- ngIf: !allowEasyRebate && !allowEmailRebate && !allowInstantRebate -->
  <div ng-if="!allowEasyRebate &amp;&amp; !allowEmailRebate &amp;&amp; !allowInstantRebate" class="item item-full ng-scope">
    <a class="btn btn-full btn-rebate btn-large" target="_blank" ng-click="handleClickedRebateLink($event)"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:get_rebate_info_button_text" class="ng-binding ng-isolate-scope">Get Rebate Info</ng-transclude> <i class="mp mp-external-link" aria-hidden="true"></i> </a>
  </div><!-- end ngIf: !allowEasyRebate && !allowEmailRebate && !allowInstantRebate -->
</form>

Name: vm.redirectFormPOST

<form name="vm.redirectForm" method="post" add-form-submit="" action="" target="_self" data-eid="form-checkout" class="ng-pristine ng-valid"> <input type="hidden" name="cart_id" ng-value="vm.redirectFormData.cartId" autocomplete="off"> <input
    type="hidden" name="utility_id" ng-value="vm.redirectFormData.utilityId" autocomplete="off"> </form>

Name: vm.updateZipcodeForm

<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength ng-valid-maxlength" name="vm.updateZipcodeForm" novalidate="">
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label" ng-class="{'has-error': vm.updateZipcodeForm.zipcode.$touched &amp;&amp; vm.updateZipcodeForm.zipcode.$error.invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
              ng-bind-html="content | trust" data-section-key="base:modals:update_zipcode_input_label" class="ng-binding ng-isolate-scope">ZIP</ng-transclude> </span> <input type="text" inputmode="numeric" minlength="" maxlength="" aria-label="ZIP"
            name="zipcode" aria-describedby="edit-zipcode-error-messages" ng-model="vm.zipcode" data-eid="update-zipcode-input" required=""
            class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength ng-valid-maxlength"> <!-- ngIf: vm.updateZipcodeForm.zipcode.$error.message --> </label> </div>
    </div>
  </div>
  <div class="visible-sm visible-md visible-lg">
    <div class="row multi-button">
      <div class="col-xs-12 col-sm-6"> <button type="button" class="btn btn-large btn-default btn-full" data-eid="update-zipcode-cancel-button" ng-click="vm.onCancel()" data-dismiss="modal" aria-label="Close"> <ng-transclude
            ng-bind-html="content | trust" data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> </div>
      <div class="col-xs-12 col-sm-6"> <button type="submit" class="btn btn-large btn-storefront btn-full" data-eid="update-zipcode-submit-button" ng-click="vm.onSubmit()"> <ng-transclude ng-bind-html="content | trust"
            data-section-key="base:modals:confirm_text" class="ng-binding ng-isolate-scope">Confirm</ng-transclude> </button> </div>
    </div>
  </div>
  <div class="visible-xs">
    <div class="row">
      <div class="col-xs-12 col-sm-6"> <button type="submit" class="btn btn-large btn-storefront btn-full" data-eid="update-zipcode-submit-button" ng-click="vm.onSubmit()"> <ng-transclude ng-bind-html="content | trust"
            data-section-key="base:modals:confirm_text" class="ng-binding ng-isolate-scope">Confirm</ng-transclude> </button> </div>
    </div>
    <div class="row">
      <div class="col-xs-12 col-sm-6"> <button type="button" class="btn btn-large btn-default btn-full" data-eid="update-zipcode-cancel-button" ng-click="vm.onCancel()" data-dismiss="modal" aria-label="Close"> <ng-transclude
            ng-bind-html="content | trust" data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> </div>
    </div>
  </div>
</form>

Name: vm.shippingForm

<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-pattern ng-valid-email" name="vm.shippingForm" novalidate="">
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:first_name" class="ng-binding ng-isolate-scope">First
              Name</ng-transclude> </span> <input type="text" aria-label="First Name" aria-describedby="first-name" name="first_name" ng-model="vm.shippingData.customer.first_name" data-eid="shipping-address-modal-first-name"
            ng-click="vm.fieldTouched('first_name')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="shipping-address-modal-first-name" ng-messages="vm.shippingForm.first_name.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.first_name.$touched" role="alert" class="errors ng-active ng-hide">
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:first_name" class="ng-binding ng-isolate-scope">First Name</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: customerInvalid -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:last_name" class="ng-binding ng-isolate-scope">Last
              Name</ng-transclude> </span> <input type="text" aria-label="Last-Name" aria-describedby="last-name" name="last_name" ng-model="vm.shippingData.customer.last_name" data-eid="shipping-address-modal-last-name"
            ng-click="vm.fieldTouched('last_name')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="shipping-address-modal-last-name" ng-messages="vm.shippingForm.last_name.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.last_name.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:last_name" class="ng-binding ng-isolate-scope">Last Name</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: last_name_invalid -->
          </ul>
        </label> </div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:phone_number" class="ng-binding ng-isolate-scope">Phone
              Number</ng-transclude> </span> <input type="tel" aria-label="Phone Number" aria-describedby="phone-number" name="phone_number" ng-model="vm.shippingData.customer.phone_number" data-eid="shipping-address-phone-number"
            ng-pattern="/^\d{10}$/" ng-click="vm.fieldTouched('phone_number')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern">
          <ul id="shipping-address-modal-phone-number" ng-messages="vm.shippingForm.phone_number.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.phone_number.$touched" role="alert" class="errors ng-active ng-hide">
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:phone_number" class="ng-binding ng-isolate-scope">Phone Number</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: pattern -->
          </ul>
        </label> </div>
    </div>
  </div>
  <div class="row form-row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:email"
              class="ng-binding ng-isolate-scope">Email</ng-transclude> </span> <input type="email" aria-label="Email" aria-describedby="email" name="email" ng-model="vm.shippingData.customer.email" data-eid="shipping-address-modal-email"
            ng-click="vm.fieldTouched('email')" required="" class="ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required">
          <ul id="shipping-address-modal-email" ng-messages="vm.shippingForm.email.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.email.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:email" class="ng-binding ng-isolate-scope">Email</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: email --> <!-- ngMessage: email_invalid -->
          </ul>
        </label> </div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_1"
              class="ng-binding ng-isolate-scope">Address Line 1</ng-transclude> </span> <input type="text" aria-label="address-line-1" aria-describedby="address-line-1" name="address_line_1" ng-model="vm.shippingData.address.address_line_1"
            data-eid="shipping-address-modal-address-line-1" ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="shipping-address-modal-address-line-1" ng-messages="vm.shippingForm.address_line_1.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.address_line_1.$touched" role="alert" class="errors ng-active ng-hide">
            <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_1" class="ng-binding ng-isolate-scope">Address Line 1</ng-transclude>
              <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
          </ul>
        </label> </div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_2"
              class="ng-binding ng-isolate-scope">Address Line 2</ng-transclude> </span> <input type="text" aria-label="address-line-2" aria-describedby="address-line-2" name="address_line_2" ng-model="vm.shippingData.address.address_line_2"
            data-eid="shipping-address-modal-address-line-2" ng-readonly="vm.isPrepopulated" ng-click="vm.fieldTouched('address')" class="ng-pristine ng-untouched ng-valid ng-empty">
          <ul id="shipping-address-modal-address-line-2" ng-messages="vm.shippingForm.address_line_2.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.address_line_2.$touched" role="alert" class="errors ng-inactive ng-hide">
            <!-- ngMessage: address_invalid --> </ul>
        </label> </div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-12">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:city"
              class="ng-binding ng-isolate-scope">City</ng-transclude> </span> <input type="text" aria-label="city" aria-describedby="city" name="city" ng-model="vm.shippingData.address.city" data-eid="shipping-address-modal-city"
            ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
          <ul id="shipping-address-modal-city" ng-messages="vm.shippingForm.city.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.city.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:city" class="ng-binding ng-isolate-scope">City</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
          </ul>
        </label> </div>
    </div>
  </div>
  <div class="row">
    <div class="col-xs-6">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:state"
              class="ng-binding ng-isolate-scope">State</ng-transclude> </span> <select required="" name="state" ng-options="state.value as state.title for state in vm.states" ng-model="vm.shippingData.address.state"
            ng-click="vm.fieldTouched('address')" data-eid="shipping-address-state" ng-disabled="vm.isPrepopulated" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
            <option value="?" selected="selected"></option>
            <option label="AL" value="string:AL">AL</option>
            <option label="AK" value="string:AK">AK</option>
            <option label="AZ" value="string:AZ">AZ</option>
            <option label="AR" value="string:AR">AR</option>
            <option label="CA" value="string:CA">CA</option>
            <option label="CO" value="string:CO">CO</option>
            <option label="CT" value="string:CT">CT</option>
            <option label="DE" value="string:DE">DE</option>
            <option label="FL" value="string:FL">FL</option>
            <option label="GA" value="string:GA">GA</option>
            <option label="HI" value="string:HI">HI</option>
            <option label="ID" value="string:ID">ID</option>
            <option label="IL" value="string:IL">IL</option>
            <option label="IN" value="string:IN">IN</option>
            <option label="IA" value="string:IA">IA</option>
            <option label="KS" value="string:KS">KS</option>
            <option label="KY" value="string:KY">KY</option>
            <option label="LA" value="string:LA">LA</option>
            <option label="ME" value="string:ME">ME</option>
            <option label="MD" value="string:MD">MD</option>
            <option label="MA" value="string:MA">MA</option>
            <option label="MI" value="string:MI">MI</option>
            <option label="MN" value="string:MN">MN</option>
            <option label="MS" value="string:MS">MS</option>
            <option label="MO" value="string:MO">MO</option>
            <option label="MT" value="string:MT">MT</option>
            <option label="NE" value="string:NE">NE</option>
            <option label="NV" value="string:NV">NV</option>
            <option label="NH" value="string:NH">NH</option>
            <option label="NJ" value="string:NJ">NJ</option>
            <option label="NM" value="string:NM">NM</option>
            <option label="NY" value="string:NY">NY</option>
            <option label="NC" value="string:NC">NC</option>
            <option label="ND" value="string:ND">ND</option>
            <option label="OH" value="string:OH">OH</option>
            <option label="OK" value="string:OK">OK</option>
            <option label="OR" value="string:OR">OR</option>
            <option label="PA" value="string:PA">PA</option>
            <option label="RI" value="string:RI">RI</option>
            <option label="SC" value="string:SC">SC</option>
            <option label="SD" value="string:SD">SD</option>
            <option label="TN" value="string:TN">TN</option>
            <option label="TX" value="string:TX">TX</option>
            <option label="UT" value="string:UT">UT</option>
            <option label="VT" value="string:VT">VT</option>
            <option label="VA" value="string:VA">VA</option>
            <option label="WA" value="string:WA">WA</option>
            <option label="WV" value="string:WV">WV</option>
            <option label="WI" value="string:WI">WI</option>
            <option label="WY" value="string:WY">WY</option>
          </select>
          <ul id="shipping-address-modal-state" ng-messages="vm.shippingForm.state.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.state.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:state" class="ng-binding ng-isolate-scope">State</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
          </ul>
        </label> </div>
    </div>
    <div class="col-xs-6">
      <div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:zip"
              class="ng-binding ng-isolate-scope">ZIP</ng-transclude> </span> <input type="text" aria-label="ZIP" aria-describedby="zip" name="zip_code" ng-model="vm.shippingData.address.zip_code" data-eid="shipping-address-zip"
            ng-pattern="/(^\d{5}$)|(^\d{5}-\d{4}$)/" ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern">
          <ul id="shipping-address-modal-zip" ng-messages="vm.shippingForm.zip_code.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.zip_code.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
            <li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:zip" class="ng-binding ng-isolate-scope">ZIP</ng-transclude> <ng-transclude
                ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: pattern address_invalid -->
          </ul>
        </label> </div>
    </div>
  </div> <!-- ngRepeat: reportingForm in vm.reportingFormArray --> <!-- ngIf: vm.termsAndConditions --> <!-- ngIf: vm.formErrorMessage -->
  <div class="row full-width">
    <div class="compliance-disclosure"> <svg class="compliance-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1008 1008">
        <path d="M311 486l-59 59 167 170 337-337-59-59-278 276zm-185-23V211L504 41l378 170v252c0 116-35 224-108 321-73 96-162 157-270 183-108-26-197-87-270-183-73-97-108-205-108-321z"></path>
      </svg>
      <div class="disclosure"> <ng-transclude ng-bind-html="content | trust" data-section-key="application_form:compliance_disclosure" data-eid="shipping-form-compliance-disclosure" class="ng-binding ng-isolate-scope">We use your information (such as
          name and address) for verifying your eligibility. We record certain usage data for security, support, and reporting purposes.
          <a href="https://www.enervee.com/privacy" target="_blank" rel="noreferrer noopener">See how your data is managed.</a></ng-transclude> </div>
    </div>
  </div>
  <div class="row align-right">
    <div class="col-xs-12"> <button type="button" data-eid="shipping-address-cancel-btn" class="btn btn-link text-muted" ng-click="vm.onCancel('cancel')" data-dismiss="modal"> <ng-transclude ng-bind-html="content | trust"
          data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> <button type="submit" data-eid="shipping-address-submit-btn" ng-click="vm.onSubmit()" class="btn btn-accent">
        <!-- ngIf: !vm.isSubmitting --><ng-transclude ng-bind-html="content | trust" ng-if="!vm.isSubmitting" data-section-key="base:modals:next_text"
          class="ng-binding ng-scope ng-isolate-scope">Next</ng-transclude><!-- end ngIf: !vm.isSubmitting -->
        <loaders ng-show="vm.isSubmitting" class="ng-isolate-scope ng-hide">
          <div class="loader" ng-class="{small: isSmall}"> <!-- ngIf: !blockArray -->
            <div class="loader-style-local ng-scope" ng-if="!blockArray">
              <div class="loader-graphic"> <svg class="score-spinner" xmlns="http://www.w3.org/2000/svg" width="240" height="240" viewBox="0 0 240 240" version="1.1">
                  <title>Loading</title>
                  <g style="fill-rule:evenodd">
                    <path class="inner"
                      d="M202.835 89.368C198.193 76.923 190.826 65.821 181.469 56.778 165.239 41.098 143.025 31.598 118.68 32.013 110.565 32.153 104.094 38.847 104.234 46.962 104.374 55.077 111.063 61.543 119.178 61.409 135.413 61.134 150.228 67.46 161.044 77.914 171.861 88.372 178.69 102.959 178.965 119.189L178.968 119.189C178.979 119.856 178.979 120.526 178.967 121.198 178.833 129.313 185.299 136.002 193.414 136.142 201.529 136.282 208.223 129.811 208.363 121.696 208.557 110.324 206.587 99.417 202.835 89.368L202.835 89.368Z">
                    </path>
                  </g>
                </svg> </div> <!-- ngIf: displayText -->
            </div><!-- end ngIf: !blockArray --> <!-- ngIf: blockArray -->
          </div>
        </loaders>
      </button> </div>
  </div>
</form>

Text Content

back
Search for a product
Type a product name...
Searching...
We didn't find a match
Are we missing something? Let us know!
   
 * Kitchen
   
 * Cooktops , products available for checkout
   
 * Dishwashers , products available for checkout
   
 * Freezers , products available for checkout
   
 * Ovens , products available for checkout
   
 * Ranges , products available for checkout
   
 * Range Hoods , products available for checkout
   
 * Refrigerators , products available for checkout
   
 * Electronics
   
 * Monitors , products available for checkout
   
 * Projectors , products available for checkout
   
 * Sound Bars , products available for checkout
   
 * Televisions , products available for checkout
   

   
 * Home & Office
   
 * Air Purifiers , products available for checkout
   
 * Connected Homes , products available for checkout
   
 * Dehumidifiers , products available for checkout
   
 * EV Chargers , products available for checkout
   
 * Light Bulbs , products available for checkout
   
 * Power Strips , products available for checkout
   
 * Heating, Cooling, and Water Heating
   
 * Air Conditioners , products available for checkout
   
 * Electric Water Heaters
   
 * Evaporative Coolers , products available for checkout
   
 * Gas Water Heaters , products available for checkout
   
 * Thermostats , products available for checkout
   

   
 * Lawn & Garden
   
 * Lawn Mowers , products available for checkout
   
 * Leaf Blowers , products available for checkout
   
 * Pool Heaters
   
 * Pool Pumps
   
 * Trimmers , products available for checkout
   
 * Laundry
   
 * Dryers , products available for checkout
   
 * Washers , products available for checkout
   
 * Safety & Preparedness
   
 * Portable Power Stations , products available for checkout
   
 * Water
   
 * Shower Heads
   

Direct Purchase

your email address
   
 * Please enter your email address
   

Your email and password will be used to allow you to sign in securely and access
your data. We record certain usage data for security, support, and reporting
purposes. See how your data is managed.
Submit
By proceeding, you are agreeing to the Northwest Marketplace Terms and
Conditions and Privacy Policy.


COMPLETE YOUR ACCOUNT

your password
   
   
 * Please enter your password
   
   
   

Retype your password
   
 * Retype your password
   
   
   
   
   

Save password
Loading
 * Use a different email

Change Locations

Changing locations will empty and reset the cart. You will need to add the items
again to check availability in your area.

Do you want to continue?

Continue
Welcome!

Don't have an account? Create an account.

If you have an existing account, please enter your password below.

your password
   
 * Please enter your password
   

Forgot your password?
Log in



 * Use a different email

Reset your password

We've sent a password reset link to 

Back to login

Not your email?

Enter your current and new password
current password
   
 * Please enter your password
   

new password
   
   
 * Please enter your password
   
   
   

confirm new password
   
   
 * Please enter your password
   
   
   

Submit

Welcome!

To access your account, we first need for you to activate it and set a password.

Email me my activation link

Not your email?

Enter your password to delete your account
password
Submit

Welcome to the Northwest Marketplace

The Northwest Marketplace is a regional utility collaborative brought to you by
the Northwest Energy Efficiency Alliance. Customers across Idaho, Montana,
Oregon, and Washington can find and shop energy-saving products—and enjoy the
benefits of energy efficiency.


previous next
    
 1. slide 1 of 1, currently active
    

Got it!

your email address
Email Me Rebate Information
Have your receipt? Upload it now

Upload your receipt below:

Receipt
Login To Submit Your Receipt

Upload your receipt below:

Receipt
Login To Submit Your Receipt

Still looking? Save this info for later:

I'm not ready! Email me rebate information.
Get Rebate Info
Start new order?

All items in your cart from will be replaced by this item from .

Each transaction can only include products from the same retailer.

Keep existing cart
Start new order
Loading
Select a fulfillment partner

The retailer you choose will process and ship your order as well as handle any
returns.

Price Transparency Guarantee

No last minute surprises or expenses—see the full cost, including installation,
materials, and labor that others may not include.

Instant Online Quote:

No pre-installation contractor visit required.

Your Installation Includes:

 * Labor to install new appliance by a CSLB licensed contractor
 * All permitting necessary
 * Haul-away and recycle of old water heater
 * Materials to install new appliance, including:
   * Recirculating pump (if applicable)
   * All necessary fittings
   * Thermostatic mixing valve
   * Hot and cold flex lines
   * Earthquake scrapes
   * Drip pan
   * Isolation valves (service)

Best-in-Class Warranties:

 * The Water Heater Warehouse warranty includes:
   * 2 year warranty on combined PARTS and LABOR
 * The Manufacturer warranty includes:
   * Up to 25 year warranty on heat exchanger
   * 5 year warranty on parts
   * 1 year warranty on labor

Continue Shopping



Cancel
Close
Your cart
Please note: your cart will expire after 3 days.
Your cart is empty
Continue
Loading

We need to verify your eligibility as a resident of Idaho, Montana, Oregon, or
Washington. After you’ve been verified, you can continue to payment.




Make easy monthly payments over 60 months for as low as 9.02% APR

/month based on a purchase price of for as low as 9.02% APR for 60 months.
Available on products starting at $200 and up to a total purchase of $5,000.

Easy credit.

Minimum credit score of 580*.

Low rates.

Much lower than standard credit cards.1

State-backed.

Applying does not affect your credit score.†

Loans through Eco Financing are made by Lewis & Clark Bank, Member FDIC, only
available in CA and NY. Pre-qualification will not impact your credit score. In
order to get final approval for your loan, a hard credit pull will be conducted
which will impact your credit score.

Disclosure:

*© Eco Financing "as low as" Annual Percentage Rate (APR) is effective as of
1/1/2023, is based on creditworthiness, underwriting factors, and information
obtained by third party companies. It is our best rate which includes an
incentive rate discount for setting up automatic monthly loan payments at loan
origination and is subject to loan approval. Monthly payment per $1,000 for 12
months at 9.99% is $87.91. A sample payment for a $1,000 for 60 months at 9.99%
is $21.24. These payment examples are for illustration purposes only. Your
actual payment may vary. All Eco Financing loan programs, rates, terms, and
conditions are subject to change without prior notice. Minimum Experian Vantage
Score 4.0 of 580 to qualify. Other underwriting factors apply. Eco Financing by
Enervee loan programs are owned and funded by Lewis & Clark Bank, Member FDIC.

†Applying will not impact your credit score. Once a loan is approved and monies
are received, it will, like all loans, impact your credit score. Loan repayment
history is reported to the major credit bureaus and will affect your credit
based on your repayment history.

Learn more Close

"Energy savings" are an estimate of how much energy a specific product saves
compared to a typical new model with similar features. Your savings could be
even higher if you're replacing an old model. 

"Net payment after potential savings" does not reflect what your final monthly
bill will be. It provides a simple way to visualize the potential cost savings
achievable by purchasing and efficient product. 

Close
Update your location

Receive more accurate service and availability estimates by updating your zip
code

ZIP
Cancel
Confirm
Confirm
Cancel

First Name
   
 * First Name is required
   

Last Name
   
 * Last Name is required
   

Phone Number
   
 * Phone Number is required
   

Email
   
 * Email is required
   
   

Address Line 1
   
 * Address Line 1 is required
   

Address Line 2
City
   
 * City is required
   

State
ALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKORPARISCSDTNTXUTVTVAWAWVWIWY
   
 * State is required
   

ZIP
   
 * ZIP is required
   

We use your information (such as name and address) for verifying your
eligibility. We record certain usage data for security, support, and reporting
purposes. See how your data is managed.
Cancel Next
Loading

Continue
Cancel
Brought to you by the Northwest Energy Efficiency Alliance and your Idaho,
Montana, Oregon, and Washington utilities.

Navigation

Sign in
   
 * My Account
   * Favorite Products
   * Saved Searches
     
   * Orders
     
     
     
   * Account Settings
     
   * Email Settings
   * Logout
   
   
 * Get help
   * Benefits of the Marketplace
     
   


Sign in





IMPROVE YOUR EXPERIENCE

You're using a web browser that we don't support. Try one of the supported
options below.

Google Chrome
Mozilla Firefox
Microsoft Edge
Watch Our Video


NORTHWEST MARKETPLACE

Saving Northwest residents energy, money, and time

 * 1
 * 2
 * 3

Search by type, brand, model... Search... Search
   
 * Televisions
   , extra incentives available , products available for checkout
   
 * Dryers
   , extra incentives available , products available for checkout
   
 * Washers
   , extra incentives available , products available for checkout
   
 * Dishwashers
   , extra incentives available , products available for checkout
   
 * Explore More
   Categories


WE HELP YOU FIND YOUR PERFECT PRODUCT


THE ENERVEE SCORE

This score compares the product's energy efficiency to other available products.


ALL REVIEWS IN ONE PLACE

One rating that combines reviews from leading retailers and trusted experts.


GET THE BEST DEALS

Track and get notified of price drops for your favorite products.


CHECK OUT TOP MODELS IN POPULAR CATEGORIES

Loading
loading products...
© 2024  Marketplace powered by Enervee | Enervee Privacy Policy